Computer Science 124:
Introductory Programming

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Spring 2014.

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

   Monday, Wednesday, Friday, 12:20--1:15 PM
        Room Gulick 206A.

   Lab: Tuesday, 1:30--2:55 PM
        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, JavaScript, Python, PHP, 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 was introduced in 1995. In the years since then, it has become one of the most important languages for real application development. It is a very versatile language. Java can be used to write regular desktop applications Many complex interactive Web sites are written using Java on the Web server, and it can be used to write applications for many types of mobile phones. Even high-performance scientific programming has been done in Java. It can also be used to write "applets," which are small programs that appear on web pages, but that use has become much less common than it was when Java was first introduced. Java has also become perhaps the most popular language for teaching programming.

Instead of a regular textbook, we will use an on-line text that I wrote for this course. The book can be found at We will cover Chapters 1 through 7, with a few topics omitted. I urge you to read the book on-line or to download a PDF version for easier reading on your computer, but if you would like a printed version, you can order one. See the links at the bottom of for more information. If you really want to learn programming, you will read the book carefully and get help on the parts that you don't understand.

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 make a "lab worksheet" available on-line for each lab. For one or two of the labs, you will have the option of working with a partner. Aside from that, the labs are individual work.

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 Thursday 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 following lab. In some cases the due date will be extended for longer, more complex labs.

In general, lab reports and programming assignments will not be accepted late (although in extraordinary cases, with sufficient reason, you might persuade me to accept them one or two days late).

About Programming Assignments and Academic Integrity

The computer programs that you turn in should be your own work or, in cases where you work with a partner, the work of you and your partner. You can get a certain amount of help from the Professor and from Teaching Assistants, but you should not discuss the details of your programs with anyone else, you should not look at the programs of other people in the class, and you should not use code that you find on the Internet or in books, unless that is specifically allowed for a given assignment.

Inevitably in a programming course, it seems that a few people will turn in work that is not their own. You should understand that it is usually easy to detect copying of programs -- even when a program is modified to try to disguise its source. Copying a program, or letting someone else copy your program, is a form of academic dishonesty and will be treated as such.

Computer Science Colloquia

The Department of Mathematics and Computer Science sponsors several colloquium talks every semester. They are usually scheduled at 4:15 or 4:45 PM. I expect a few talks to be about computer science. It would be a good experience for you to attend these talks. To encourage you to attend at least one of them, you can get one point of extra credit on your final grade for the course for attending one of the computer science talks, or you can get one and one-half points for attending two or more talks.

Talks will be announced in class and by email. If you attend a talk, be sure to let me know that you are there!


Quizzes will be given at the beginning of some classes, usually on a Friday. Most quizzes will be announced in advance, although I might spring a couple on you unannounced. There will be eight to ten quizzes. Quizzes might cover material from assigned readings before that material is covered in class, so it is important to keep up with the reading! It is not possible to make up quizzes that you miss. However, your two lowest quiz grades will be dropped.

Tests and Final Exam

There will be two in-class tests in addition to a final exam. The tests will be given on Monday, February 24 and on Wednesday, April 9. The final exam will take place during the officially scheduled exam time for the course, which is Sunday, May 11, at 7: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.


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

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

Letter grades are assigned as follows: 90-100: A; 80-89: B; 65-79: C; 55-64: D; 0-54: F. Grades near a cutoff get a + or -.

Attendance, Etc.

I assume that you understand the importance of attending class. While I do not 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 might 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 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 usually 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.

Disability Statement from the CTL

Disability Accommodations: If you are a student with a disability for which you may need accommodations, you should self-identify and register for services with the Coordinator of Disability Services at the Center for Teaching and Learning (CTL), and provide documentation of your disability. Disability related accommodations and services generally will not be provided until the registration and documentation process is complete. The guidelines for documenting disabilities can be found at the following website:

Please direct questions about this process or Disability Services at HWS to David Silver, Coordinator of Disability Services, at or 315-781-3351.

Office Hours, E-mail, WWW

My office is room 313 in Lansing Hall. 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 and on the course web page 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. You will want to bookmark this page. This courses does not use Canvas.

Tentative Schedule

Here is a tentative schedule of readings for this course. We will try to keep approximately to this schedule. We will not cover every topic in every section -- but it would be a good idea for you to read the first seven chapters of the book in their entirty, if you really want to learn Java. I also recommend reading the end-of-chapter exercises and reading their solutions on-line.

(Note that we will cover some of the material from Chapter 6 in labs before we get to Chapter 6 on this schedule.)

Dates Readings, Etc.
Jan. 22 and 24 Chapter 1, especially 1.1, 1.3, 1.4;
Introduction to Linux (half-period in lab on Friday)
Jan. 27, 29 and 31 Sections 2.1 to 2.4
Feb. 3, 5, and 7 Sections 2.5, 3.1, and 3.2
Feb. 10, 12, and 14 Sections 3.3 to 3.5
Feb. 17, 19, and 21 Selections from Sections 3.6 to 3.8
Feb. 24, 26, and 28 TEST on Monday, February 24, on Chapters 1 to 3.
Sections 4.1 and 4.2
Mar. 3, 5, and 7 Sections 4.3 to 4.5
Mar. 10, 12, and 14 Sections 4.6, 4.7, and 5.1
Spring Break, March 15--23
Mar. 24, 26, and 28 Sections 5.2 and 5.3
Mar. 31; Apr. 2 and 4 Sections 5.4 to 5.6
Apr. 7, 9, and 11 TEST on Wednesday, April 10, on Chapters 4 and 5.
Section 5.7; Selections from Chapter 6
Apr. 14, 16, and 18 Selections from Chapter 6
Apr. 21, 23, and 25 Sections 7.1 to 7.3
Apr. 28 and 30; May 2 Sections 7.4 and 7.5
May 5 Last day of class; wrap up the course!
May 11 Final Exam: Sunday, May 11, 7:00 PM