Computer Science 124:
Introductory Programming

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Fall, 2001.

   Instructor:  David J. Eck  (
   Textbook:  Available on line at

   Monday, Wednesday, Friday, 3:00--3:55 PM.
         Room Lansing 300.
   Lab: Thursday 10:20--11:45 or 11:55--1:20.
         Library Multimedia Computer Lab.

About The Course

Computer Science 124 is an introduction to computer programming. Programming is the art of explaining to a computer what you want it to do, in exact detail and in a language that the computer can understand. It is an activity that requires you to think logically, to solve problems, to express yourself clearly, and often to endure a certain amount of frustration as you try to get your programs to work. The result, though, can be very rewarding.

Programming is only one part of computer science, but it is the most basic and most central part. This course has no prerequisites, although a general familiarity with computers would certainly be helpful. (If you are worried about not having enough background for this course, you should consider taking Computer Science 120 instead. CPSC 120 is a general survey of computer science. It can be taken either before this course or after it. Both courses are required for a major or minor in computer science.)

Many different languages are used for writing computer programs. Some of the most important are C, C++, Pascal, BASIC, FORTRAN, Ada, Lisp, Smalltalk, Prolog, Perl, Python, and Java. It is impossible to learn all the different programming languages. Fortunately, it is possible to learn principles and general techniques of programming that can be applied no matter what language you write in. Although you will work with a specific language, you should try not to lose sight of the general ideas.

In this course, we will use the Java programming language. While C++ is probably still the language used for most programming, Java has become very popular for teaching programming. It is also being used more and more in real applications. (There are even reports that requests for Java skills are becoming more numerous than requests for C++ in computer job ads.) Java is, in fact, very similar to C++, but it leaves out a lot of the complexity. Java is actually a good starting point for the beginning programmer, even if the ultimate goal is to use C++. Furthermore, Java has its own advantages. It has a few important features that C++ lacks, and it was designed from the beginning to be part of a modern, networked computing environment.

Instead of a regular textbook, we will use an on-line text that I wrote for this course. The version we are using this term is the third version of a text that I originally wrote in 1996, when Java was very new. I will hand out printed copies of the text on the second day of class. (The $25 fee for this course pays for the cost of reproduction.) However, I urge you to also use the on-line version of the text, which contains working Java examples and additional information.

Computer Labs

This course has a lab component. For the duration of the course, you will have an account on the computer "" which will be used in the lab and for programming assignments. In the first lab, you'll learn how to access this account and how to use the programming environment that it provides. There are two sections of the lab, which meet on Thursdays from 10:20 to 11:45 and from 11:55 to 1:20. You are enrolled in one of these sections, and you should attend the section to which you have been assigned. (Since there are a few extra seats in the lab, I can make occasional exceptions to this rule if you get my permission in advance.)

For each lab (except the last lab of the semester), you will turn in a "lab report". In each lab, there will be a few questions for you to answer and/or programming problems for you to solve. Your lab report will consist of your answers to these exercises. It is quite possible that you will not finish all the exercises during the Thursday lab period. That is to be expected. Completing the lab exercises is part of your homework for the course.

I encourage you to work on each lab with a partner (although I will not stop you from working alone). You have the option of turning in a single lab report for you and your lab partner, or turning in an individual report. If you and your partner turn in a single report, you will receive the same grade.

Although I do not take attendance in regular classes, I do take attendance in lab. Ordinarily, you must be present at lab to get full credit for the lab report. If you miss a lab without a good excuse, I will still accept a lab report, but only for half credit. (If you have some good reason for missing a lab, discuss it with me -- in advance if possible.)

Lab reports are always due on the Wednesday following the lab. I will not ordinarily accept lab reports late. You might persuade me to accept a report on the day after it is due. However, I will not accept lab reports more than one day late under any circumstances, since answers to lab exercises will be posted the day after the lab report is due.

Individual Programming Assignments

In addition to lab reports, there will be several individual programming assignments. I encourage you to ask me for advice, hints, and help on the assignments. But you are not permitted to work with other students, discuss your programs with them, or look at their programs. (You should also avoid leaving copies of your work where other students might find them!)

Individual programming assignments that are turned in up to one week late will lose 20% of their grades as a penalty. Programs will not be accepted later than one week after they are due. Even if your program is not complete or not working properly, you should still turn it in to receive partial credit.

Final Programming Project

A final programming project will be due at the end of class. This will be a project that you choose and design on your own (with some help from me if you need it). It should be more ambitious than the other programs that you write for the course. You can work on the project alone or in a group of two or three people. Naturally, I will expect group projects to be more ambitious. I will give you more detail about the final project in the middle of the term.

Tests and Quizzes

There will be two in-class tests in addition to a final exam. The tests will be given on Monday, October 1 and Monday, November 12. The final exam is scheduled for Wednesday, December 12, at 8:30 AM. It will be given in our regular classroom. The final exam will be comprehensive, covering material from the entire term, with some emphasis on material covered during the last part of the course.

There will be eight ten-minute quizzes, which will be given on the following Mondays throughout the term: September 10, September 17, September 24, October 15, October 22, October 29, November 5, and November 26. The quizzes are supposed to help make sure that you keep up with the material. Taken together, they will count for as much as one of the in-class tests.

If you miss a quiz, test, or final exam without an extremely good excuse, you will receive a grade of zero. If you think you have an excuse for missing a quiz or test, please discuss it with me, in advance if possible. If I judge that your excuse is reasonable, I will -- depending on the circumstances -- either give you a make-up quiz or test or I will average your other grades so that the missing grade does not count against you.


Your numerical grade for the course will be determined as follows:

             First Test:               12%
             Second Test:              12%
             Quizzes:                  12%
             Final Exam:               19%
             Lab Reports:              20%
             Programming Assignments:  15%
             Final Project:            10%

My scale for converting numerical grades into letter grades is:

             A:  90% to 100%
             B:  80% to 89%
             C:  65% to 79%
             D:  50% to 64%
             F:  less than 50%

Grades near the bottom or top of a range are modified by a minus or plus. I follow this scale fairly strictly, although I occasionally "curve" a test by adding some points to each person's score, if I judge that the original grades on the test do not accurately reflect the performance of students in the class.

Office Hours, E-mail, WWW

My office is room 301 in Lansing Hall, just next door to our regular classroom. My office phone extension is 3398. I am on campus most days, and you are welcome to come in anytime you can find me there. I will announce office hours and post them on my office door as soon as my schedule is determined, but note that your office visits are certainly not restricted to my regular office hours!

My e-mail address is E-mail is good way to communicate with me, since I usually answer messages within a day of receiving them. Occasionally, I will send out email to everyone in the class. You should be able to receive email at your "" email address. If you do not use your HWS email account regularly, you should set up that account to forward your mail to the email account that you do use.

The home page for this course on the World Wide Web is located at This page will contain a weekly guide to the course and links to lab worksheets.

David Eck, 29 July 2001