Introduction to Programming (CPSC 124)

Hobart & William Smith Colleges, Fall 2014

Home | Syllabus | Calendar | Class Notes | Labs and Projects General Notes |

Vital Stats


Required Texts
David Eck, Introduction to Programming Using Java, Seventh Edition, August 2014
This text is freely available online at If you'd like a printed copy, the book's web page has a link to order this from (with a cost that's cheaper than printing it on campus!).
Recommended Texts

Java Tutorials: The Java language ecosystem is enormous, and it can be difficult to find a starting point. Our textbook serves as a general reference, but there are many others, as well. A good one is the set of tutorial documents provided by Oracle:

General Program Design: This course is more about the intricacies of program design than it is about Java or any other programming language. A particularly good work on this subject is the book How To Design Programs, by Felleisen, Findler, Flatt, and Krishnamurthy. While we won't use this book directly, the authors have an uncanny knack for capturing the elements of the creative process in program design. You can buy a physical copy from MIT Press, but the book is also freely available online at


All software necessary for this course is available on the lab machines in Gulick 208, as well as the machines in the Math/CS lab, on the 3rd floor of Lansing Hall. You can also install versions of everything on your personal machines, as it's all available for free.

Java compiler and Java runtime. The most recent version of the language is Java 8, but our labs only have Java 7 installed, and this is the version we'll use for our class. If you wish to install the system on your personal machine, it is freely available from this site:

Regardless of your machine's platform (Mac, Windows, Linux), you should install using the "JDK" link, not "Server JRE" or "JRE".

Plain text editor. For the first several weeks of the course, we will work with the Linux command line and a plain text editor. There are several choices available for Mac, Windows, and Linux systems. In the Gulick lab, the easiest one to use is probably GEdit. For our purposes, another particularly good one is ...

... DrJava ( DrJava combines a text editor with a debugger and interactive interpreter, allowing you to experiment quickly with various Java constructs. It is available for MacOS, Windows, and Linux, though there are some inconvenient quirks in its interaction with Java 7 on MacOS.

Eclipse. Eclipse is an industrial-strength, integrated-development environment (IDE). We will begin using around the second half of the course. Details will be taught in class
Log Book
In addition to an ordinary notebook for class lectures, I strongly suggest that you keep a binder for the in-class projects. You will find useful not only the code you write with your partners during this time, but also the notes you take for each other.
CS 124 Web Page


Exam Dates

October 6—First Exam
November 17—Second Exam
December 18 (8:30 - 11:30 am)—Final Exam

Format of the Course

All of the above goals, along with the questions that motivate them, are best achieved by active engagement. Each class will therefore be a mix of lecture time, discussion, quizzes (if appropriate) and in-class projects.

Please come to each class having completed the reading assigned for that session, prepared to discuss questions, insights, or observations as they occur to you.

Laboratory Assignments

Over the course of the semester, there will be a total of 10 lab assignments. Each of these will be given at the start of a Thursday lab, and they are designed to be completed within the 85 minutes of that session. In each case, you will turn in a report of of your work the following day. The labs themselves will be done in groups of two or more, but the each write-up must be completed individually. The due dates are given on the class calendar.


There will be 8 programming assignments throughout the semester. Some of these will be individual efforts, while others are designed for group work. You will have about a week to complete each one, and in some cases more. The due dates are given on the class calendar.

Participation and Attendance

You will be evaluated on your regular attendance, timely preparation of the readings, and your efforts to bring helpful observations and insightful questions to the classroom.

See also the policy on class attendance, below.

Midterm Exam
There will be two exams during the semester, and both are clearly marked on the schedule. We will discuss the format in class. Barring extraordinary adverse circumstances, an exam cannot be taken on an alternate date (CTL proctoring for documented accommodations excepted, of course).
Final Project

Rather than a cumulative final exam, each of you will complete a software construction project that you design, as part of a team of two or more. You will have at least two weeks to complete this work. The scheduled final exam time for this class is Thursday, December 18th, 8:30 - 11:30 am. Projects are due at the beginning of that time, and each group will present their work during the exam period.

Policies (READ ME)


I do not take attendance at the regular classes, though it is a poor idea to miss too many of them, and this will negatively impact the participation component of your grade. I reserve the right to determine on a case-by-case basis exactly what impact this will be.

Attendance is required for every lab session. Both your learning and the success of your colleagues in the class depend on this. You may take up to two unexcused absences, and after that, you will forfeit the participation component of the course grade.

Late Policy

Lab Assignments. Lab reports are due before the beginning of class on the day after they are assigned. This deadline is absolute: no late work will be accepted.

Programming Assignments. Late submissions of the take-home assigments will be accepted, but you must make arrangements with me in advance of the due date. In almost all circumstances, the following penalty will be imposed on late work: 10% for each day late, up to 40%. That being said, do not get behind on the assignments. Although this is an introductory course, the pace is intense, and you will get overwhelmed. If you are having trouble, please ask for my help, as early as possible.

Students with Disabilities

Students with documented disabilities who may need accomodations, who have any emergency medical information an instructor should know of, or who require special arrangements in the event of an evacuation, should contact me as early as possible, preferably no later than the first week of classes.

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 x3351.

Academic Honesty

I take this very seriously: a breach of academic honor will result in a failing grade for the course, and may be subject to further college sanctions. These standards are clearly laid out in the HWS Catalogue

and for the most part, they're pretty straightforward: your lab and project work must be yours and yours alone (or your working groups, if that applies), and your exams can only be discussed with me. Basically, you know already know the difference. Don't cheat.

Collaboration: This is something of a gray area, and a common source of misunderstanding.

To clarify: Learning is usually more successful when it is done in community rather than in isolation. For all assignments, you are permitted—indeed, encouraged—to discuss course material with each other, to evaluate, trace, debug, refute, validate, or otherwise compare each others' work, and to adjust your own work if this collaboration results in new understanding.

However, you are not free to simply mail or print identical copies of the same work, and claim that it is the work of two separate individuals/groups. This is plagiarism, and is a breach of academic honor standards (it is also extremely easy to spot, especially in a class this small). While I encourage you to learn from each other, at the end of the day, the work you submit for a grade must be yours and yours alone.

If you find yourself unsure whether a form of collaboration or borrowing is acceptable, please ask me, in advance.


Relative weights for your final grade are as follows

Participation: 5%
Lab Assignments: 25%
Programming Assignments: 30%
Exam 1: 10%
Exam 2: 10%
Final Project:20%

Getting Help

Me, outside of class: The best way by far to get in touch with me is in person, during office hours. Any kind of class-related discussion is encouraged, whether it be a specific question about a homework problem, a request for encouragement and help getting started on an assignment, a point of confusion about the reading, or just plain curiousity about some of the further scientific directions that are possible. I am often available outside of office hours to answer questions, offer further explanation, or just to shoot the breeze. I am always available during posted hours. I encourage you to drop by.

Please note that my office (on the third floor of Lansing) is not wheelchair accessible. If this or another physical disability prevents your from reaching me there, please let me know, and I will happily arrange an alternative meeting place with you.

In Writing: Barring that, your best bet is by email, which I check late, early, and often. In fact, email is very often the most effective way for you to ask a question, as the effort involved in articulating what you want to ask can help clarify many things. It also makes it easier for me to give succinct replies to which you can refer later. I'm a pretty early riser, though, so don't assume I'll answer anything after 9 pm or so.

By Phone: Phone calls are, frankly, lousy. You're certainly invited to call (315-781-4652), but it's difficult to communicate technical questions and answers clearly without reading or writing down anything. Phone messages are generally a poor choice: you might wait as much as 24 hours before I get any voice mail message you leave.

Teaching Assistants We have drop-in help available every week, in the Lansing 3rd floor lab. The hours are Sunday - Thursday evenings, 7:00 - 10:00 pm.

Philosophical Overview: What this course is

CS 124 is an introduction to computer programming: the "practice", the "science" and the "art". We will use the Java programming language for this course, and one component of the course will be a study of the main elements of the language. We assume no prior experience with Java nor any other programming language, nor with computer programming in general: this is the prior experience!

Broadly speaking, the task of computer programming rests on three pillars:

If you have ever written a computer program, most of the concepts you learn in this class will be familiar. This is not an accident. Although you will learn programming in the Java language, you should understand that in some sense, the language elements we study exist in every programming language that ever has or ever will be created. The ideas we study—program design, classical algorithms, and early concepts in object oriented programming—will accompany you throughout your development as scientists and engineers, no matter what language you use.

Even broader, the ideas behind computer programming have application that goes well beyond the task of writing or reading code. Computer scientists are not the only people required to perform systematic problem solving, but in a century of investigation, we have made a science (and great beauty) out of it.

John H. E. Lasseter