Introduction to the Class


Assignment :

Read the Preface and Chapter 1 of your text. Become familiar with the Web Home Page for the class. Fill in and submit the Schedule Survey of the first homework assignment.

Survey of Computer Experience and Class Syllabus

Everyone should have a copy of the class syllabus, a survey of your level of experience with computers, and a handout on the first homework. Please take 5 to 10 minutes to read the syllabus. Turn in the survey at your recitation section later today. Also please note that the language used in this course is Fortran. Those of you in CSE and EE, may wish to switch to another section to learn C. However, if you can't, please note that the skills and programming structures taught here carry into C.

The purpose of the survey is to construct groups for work on more complex programming exercises. I will be trying to mix individuals with different levels of experience, with the specific intent that the more experienced students will assist the less experienced students in understanding the material. Another intended result of these group exercises is to give you experience in this group work environment. You will continue to see such group exercises at the University, and very probably where you are employed after graduation. It is best that you adjust to working in a group environment now rather than later, when group skills will have a large impact on your salary and promotions.

My experience has been that there are some typical reactions to group projects that should be avoided. Many of the most experienced computer users resent being slowed by other group members and race through the project without serious interaction with other group members. To them, I repeat my advice on the value of developing group skills. I would also note (based on much experience) that the best way to truly master a subject is to try explaining it to someone else. On the other end of the spectrum many students will be tempted to use the group structure to let someone else to do their work. I should warn that this behavior will show up on peer evaluations that accompany each group homework exercise. It will also substantially diminish your ability to score well on exams. You can't learn to program without doing it.

Whenever you are doing homework, individually or in groups, please understand that its function is to enhance your learning, not to test your knowledge. If you hit a dead-end, contact me or your TA for assistance. We will be happy to help you work through conceptual problems or locate subtle coding errors. I have made enough mistakes in the last 29 years of Fortran programming, that I can resolve most coding errors fairly quickly. Requests for help need not always take the form of an office visit. Many students have found it convenient to seek assistance via E-mail. Both your TA and I check our electronic mail fairly frequently, including evenings and weekends. You can use E-mail to both ask direct questions and send sample programs that are giving you problems.

One final remark on Homework. The programming exercises in this class are not the type of thing that you can leave until the last minute. Computers have a special circuit that can sense panic, and enjoy crashing at the worst possible time. Also, although I indicated that I will give you all possible assistance, I do tend to quit reading E-mail by 10 PM, and can't guarantee that you will reach me all of the time. Start looking at all assignments immediately so that you can identify trouble spots quickly.

My Background

I am a faculty member in the Nuclear Engineering Department, and am teaching this class as a service to departments and students needing specific experience in Fortran. I wrote my first computer program in 1966. Our school district couldn't afford a compiler, so I programmed in assembly language. I wrote my first Fortran Program in 1968, and began earning a living by writing Fortran applications in 1970. I've been earning all or part of my living writing code or supervising coding projects ever since. Much of that time was spent at government funded laboratories, developing very large Fortran programs for simulation of two-phase flow in complex systems. Although I can guarantee you substantial practical advice in applied programming, I do not guarantee you that all of my programming practices would be sanctioned by members of any Computer Science Department.

Why are we doing this?

One major function of an introductory lecture is to convince the class that the material is really worth learning. This is necessary since most of you are here not because you really want to learn to program computers in Fortran, but because someone has decreed that you must take a programming course to graduate. I realize that such exercises in inspiration are probably best left to people like Joe Paterno, but here is my best shot.

Why learn Programming?

The direct answer is personal productivity. Through most of my professional career (until about 1992), the "pundits" consistently warned of a massive shortage of scientists and engineers. They were mostly wrong for the simple reason, that more than any other profession, scientists and engineers have used computers and computer programs to vastly boost our productivity. Whether or not you use Fortran regularly, the basic programming structures and skills, that you learn here, can be applied in many ways to automate the analysis and reporting of the information at the base of your livelihood. Over the long term, careful management of your productivity will have a strong impact on a combination of your income and the quality of your professional and private lives. I say "careful", because you are going to have to develop some balance between income, quality and quantity of professional production, and quality and quantity of your private life.

Your personal productivity will also be influenced by the level to which you develop underlying skills that improve your ability to construct and debug computer programs. I tend to lump these skills under the terms "systematic thinking" and "scientific method". It's unfortunate that such things are generally not taught directly in our educational system, but classes such as this one give you the opportunity to exercise these mental disciplines. Creation of a computer program requires you to work through a problem very systematically. You must begin with a very clear statement of the problem, method of solution, and desired results. You need to systematically lay out what it is that you already know (the input to the problem, and governing laws), what it is that you want to know (output), and carefully describe a series of steps that will get you to the desired results. Once you have constructed a program of any significant size, you will usually find that it doesn't work or doesn't produce correct answers. The process of locating bugs is a classic exercise in scientific method in which you run through a series of cycles making a hypothesis (on why things aren't working), testing the hypothesis with observations (printing values of relevant variables), and revising the hypothesis based on the observations. All of these techniques can be applied to other problem solving exercises required in your professional (and private) life.

You will find that as part of various homework assignments, I ask you to develop independent checks for your programs. By the time you are finished with this course, you should all understand, that, no matter how good you are or how careful, you will make mistakes. During this course you should be developing good professional habits in verifying the quality of your work, and cooperating with others to cross-check each other's results. As a student, sloppy work habits may drop your grade a point or two. As a professional engineer or scientist, poorly checked work can result in serious economic loss to your customers, your organization, and yourself. In many disciplines it can also result in injury to people all the way up through death.

Why learn Fortran?

Many of you have by now been told that Fortran is an obsolete language. I was told the same thing when I started in 1968. A major reason for this notion is that computer languages are generally developed and taught by Computer Scientists. Fortran is unquestionably not the best language for the types of applications found in Computer Science. The C language was developed for writing operating systems, compilers, and other related applications. As a result, many focused on these disciplines, see it and its relatives (C++) as the languages of choice. Many other languages have come and gone over the years, with varying followings.

Fortran (Formula Translation System) was developed by IBM specifically for performing scientific calculations. International language standards have been developed and expanded over the years to provide a uniform language syntax and set of supporting functions for all calculational needs in these fields. As a result, the body of scientific and engineering applications that have been developed over the last 30+ years is immense. If no new scientific programs were written in Fortran, the number of job opportunities supporting existing applications would still be quite large. However, with the release of the Fortran 90 language standards, Fortran continues to be the first choice for new scientific programs, and is the focus of efforts to develop computationally intensive applications for new generations of parallel and vector computers, through the use of an extention of Fortran 90 called High Performance Fortran (HPF).

Format of the Course

We will use 2 lectures and 2 recitations to establish the basic background needed to setup and run programs. The next 4 weeks will cover basics of Fortran programming. After that lectures will mix more advanced programming concepts with useful problem solution algorithms. The final week of the class will contain one "enrichment" lecture and 2 hours of review.

Where are we going to do all of this work?

I have established computer accounts for you in the Hammond Workstation Classroom/Laboratory (316 Hammond). I recommend working directly at the machines in 316 Hammond whenever possible, because most are single user machines not available over the network. However, you will be able to access 10 of these machines from your own PC (with modem or network connection) or any CAC PC Lab.

Browsing the Web: Netscape

One way to browse the Web is to activate Netscape from the Internet Access Group on a CAC, IBM compatible PC.

We will be using a little more horse-power, by accessing Netscape from the Hammond Workstation Laboratory. The screen will probably be blank when you sit down at one of the workstations. Just hit the space bar, and wait for it to warm up from screen saver mode. At the "login:" prompt give the machine your standard CAC Access user ID, and follow with your Access password when asked. Wait for the X-Windows session to fill the screen, then position the cursor over one of the XTERM windows with the mouse and click the left button. Type the following line:

netscape &

and wait for the Netscape window to open up. Click in the long horizontal text box labeled "Location" and type the following string:

http://www.nuce.psu.edu/~jhm/201

This should connect you to the home page for our class. Before going any further, select the "Bookmarks" item on the Netscape Menu bar (point and click with the left mouse button), click on the "Add" button. Next time you use Netscape in the Hammond lab, the "Bookmarks" menu will contain an item to connect to this home page.

The first time you use Netscape on the Workstations you should be sure that E-mail information in the program is correct. Select the "Options" menu, and within that menu, the item "Preferences." In the preferences session select the tab labeled "Mail and News" (or "Mail and Proxies" on older versions of Netscape). If necessary, fill in the box requesting your name, and the one requesting your E-mail address. My E-mail address would be "jhm@psu.edu". If you aren't using some other special address, substitute your access account ID for "jhm". On the Workstations this information is filed in your personal disk space and only must be entered once.

Practice maneuvering through the 201 Web pages, clicking on color highlighted words to reach other information. In particular follow the "Homework" trail to complete your first homework assignment.

When you are ready to leave the lab, you must log off of the computer. Position the mouse over the background region of the screen, and hold down the right mouse button to see a menu. Select the menu item that lets you exit from your computer session. A request for confirmation of your exit will appear, and you will have to click the mouse over a button to let the machine know that you are serious about leaving the computer. The first couple times you do this, stick around to see that your X Windows session really shuts down. Never turn off anything when you leave.

You can find more information on the class operation in my answers to questions from previous years.

Now continue by reading the Introduction to Computers and Computing.

Up one level / Home


Maintained by John Mahaffy : jhm@cac.psu.edu