Computer Science 12: Introduction to Computer Science II

Syllabus, Spring 2011


Lyle A. McGeoch
Office: 405 Seeley Mudd
Phone: x2414
E-mail: lamcgeoch
Home page:
Office hours: By appointment. I am available often, so feel free to get in touch.

Course web site:

Class Hours

1:00 MWF. We will meet in 014 Seeley Mudd on Monday and Wednesday and in 206 Seeley Mudd on Friday.

Course Overview

This class is first and foremost an advanced programming course, based on the programming language Java. We will take an object-oriented approach to programming. Topics will include objects, inheritance, graphical programming, patterns, and use of the Java API.

Programming is, of course, simply problem solving based on a particular language. We will explore a wide variety of topics in general algorithm and data structure design, including searching, sorting, linked data structures, and finite state machines.

Requisites: CS 11 or substantial programming experience in a structured language such as C, C++, or Java.


I have written a Java programming textbook that you can download at

Course Website

Lots of information about the course will be available at the course website


There will be a weekly lab session to give you experience with the programming concepts we've been discussing in class. Labs are held in the computer classroom, room 014 on the basement level of Seeley Mudd.

If you are an Amherst College student, whether or not you are preregistered, you will be able to use your usual username and password to access computers in this course.

If you are a Five-College student, and if you are preregistered for this course, computer accounts have already been created for you. Check with the IT department on the first floor of Seeley Mudd to get the password that you will need to use the College computers.

If you are a Five-College student, and if you are not preregistered, go to

to begin the process of requesting an account.

Your Responsibilities

All of the following will be clear to any student who has reached this point in his or her academic career. Nevertheless, they are worth repeating so that you know what I expect of you.

  • Do the assigned reading. I will sometimes ask you to read particular articles or sections of my book or of other texts that are available on-line.


  • Attend class every day. It's essential that you attend class every day. The material is cumulative and you can fall behind quickly if you miss classes. You are responsible for everything I discuss, and you're responsible for knowing about any announcements I make in class.


  • Turn your assignments in on time. I am sometimes willing to give extensions, but do not assume that late work will be accepted.


  • Be aware of how you're doing in the class. If you have problems, I don't want them to be a surprise to you at the end of the semester. The hour exams will give you an early indication of your standing in the class. Be sure you pick up all graded homework. If you don't pick up your homework, you won't know your grade and you won't benefit from any comments we make. Keep all the homework I return to you.


  • Do your own work. To put it differently, "Don't cheat." Your work on all aspects of this class should be your own. We'll talk about what kinds of questions you can reasonably ask others and what kinds you should not. Always feel free to come to your instructor.

Welcome to CS 12!