Computer Science 124:
Introductory Programming

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Spring 2006.

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

   Monday, Wednesday, Friday, 1:55--2:50 PM.
        Room Lansing 300.

   Lab: Tuesday 10:20--11:45 AM.
        Room Gulick 208.

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. Programming is only one part of computer science, but it is the most basic and most central part. 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.

This course has no prerequisites, although a general familiarity with computers would certainly be helpful.

Many different languages are used for writing computer programs. Some of the most important are: Assembly language, C, C++, C#, Pascal, BASIC, Cobol, FORTRAN, Ada, Lisp, Smalltalk, Prolog, Perl, Python, Ruby, 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. Java is a relatively new language, having been introduced in 1995. In the ten years since its introduction, it has become one of the most important languages for real application development. While C++ is probably still the most popular language, Java seems to be a close second at this point in time. Java has also become very popular for teaching programming. Java is, in fact, very similar to C++, but it leaves out a lot of the complexity. 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. We will cover eight of the twelve chapters of this book, with a few topics omitted. I will hand out printed copies of Chapters 1 through 8 of the text on the second day of class. (The cost of the printout is included in the $25 lab fee for this course.) However, I urge you to also use the on-line version of the text, which contains working Java examples, solutions to the end-of-chapter exercises, and additional information

Computer Labs

This course has a required lab component. The labs give you a chance to get hands-on experience with the computer and with programming while someone is nearby to help you get through the trouble that inevitably arises. I will hand out a "lab worksheet" at the beginning of each lab. The worksheet will also be available on-line at the CPSC 124 web site.

Each lab will involve some programming. There might also be a few questions for you to answer in writing. Your lab report will consist of your answers to the programming and other exercises. It is quite possible that you will not finish all the exercises during the Tuesday lab period. That is to be expected. Completing the lab exercises is part of your homework for the course.

Lab reports will generally be due at the beginning of the next lab. I will not ordinarily accept lab reports late. You might persuade me to accept a report one or two days after it is due. However, I will not accept lab reports more than two days late under any circumstances.

Individual Programming Assignments

In addition to the lab reports, there will be two or three programming assignments that you will work on entirely outside of class. 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 program with them, or look at their programs. You are also not permitted to use code from the Internet or other sources in your program.

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.

For some of the programming assignments, I might ask each student in the class to schedule a meeting with me in which the student will present his or her program and answer questions about it.

Final Programming Project

A final programming project will be due at the end of the course. 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. For the final project, you can work with a partner if you like. Naturally, I will expect group projects to be more ambitious than a typical individual project. I will give you more detail about the final project in the middle of the term.

Tests, Quizzes, and Grading

There will be two in-class tests in addition to a final exam. The tests will be given on Friday, February 17 and on Friday, March 31. The final exam will take place during the official scheduled exam time period for the course, which is Sunday, May 7, from 3:00 to 6:00 PM.

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.

In addition to the exams, there will be approximately seven short quizzes. Quizzes will be given at the end of class. In general, they will not be announced in advance, but the first quiz will be given on Monday, January 23. Your lowest quiz grade will be dropped. The quizzes are supposed to help make sure that you keep up with the material.

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

             First Test:            15%
             Second Test:           15%
             Quizzes:               10%
             Final Exam:            20%
             Final Project:         10%
             Labs and Assignments:  30%

Attendance, Etc.

I assume that you understand the importance of attending class. While I do not necessarily take attendance in every class, I expect you to be present unless circumstances make that impossible. Participation in lab is particularly important, and I do take attendance at lab. If you miss a lab without a good reason, you can still turn in a lab report for that lab, but your grade on the lab report will be reduced.

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.

Although it should not need to be said, I expect you to maintain a reasonable level of decorum in class. This means that there is no eating or drinking in class. Cell phones are turned off. There is no walking in late or walking in and out of the room during lecture.

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.

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.

Tentative Schedule

Dates Readings, Etc.
Jan. 16, 18, and 20 All of Chapter 1; Section 2.1
Jan 23, 25, and 27 Sections 2.2, 2.3, and 2.4
Jan. 30; Feb. 1 and3 Sections 2.5, 3.1, and 3.2
Feb. 6, 8, and 10 Sections 3.3, 3.4, 3.5, and 3.6
Feb. 13, 15, and 17 Section 3.7
Test on Friday, February 17
Feb. 20, 22, and 24 Sections 4.1, 4.2, 4.3, and 4.4
Feb. 27; Mar. 1 and 3 Sections 4.5, 4.6, and 4.7
Mar. 6 and 8 Sections 5.1 and 5.2
March 10 through19 Spring Break
Mar. 20, 22, and 24 Section 5.3 and selections from the remainder of Chapter 5
Mar. 27, 29, and 31 Selections from Chapter 6
Test on Friday, March 31
Apr. 3, 5, and 7 Section 8.1 and selections from Chapters 6 and 7
Apr. 10, 12, and 14 Sections 8.2 and 8.3
Apr. 17, 19, and 21 Sections 8.4 and 8.5
Apr. 24, 26, and 28 Final selections from Chapters 5 through 7
May 1 Wrapping up the course
May 7 Final Exam
Sunday, May 7, 3:00 PM