CS 134
Introduction to Computer Science

Instructors: Stephen Freund Tom Murtagh
Office: 302 TPL, x4260 306 TCL, x2369
E-mail: freund@cs.williams.edu tom@cs.williams.edu
Office Hours: M,W 2:30 - 4 Tu, Th 2:30 - 4
& by appointment & by appointment


Java: An Eventful Approach (draft) by Kim B. Bruce, Andrea Pohoreckyj Danyluk, and Thomas P. Murtagh. An on-line version of the text can be found at


Access to Java development software is provided on all machines in the CS Macintosh Laboratories.
Teaching assistants will be available in TCL 217 from 7-11 P.M. Sunday through Thursday.

Computer Science 134 is an introduction to algorithm development emphasizing structured, object-oriented design. Algorithms will be implemented as programs in the Java programming language. We will introduce data structures and recursion as tools to construct correct, understandable, and efficient algorithms. These topics will be developed further in Computer Science 136. We highly recommend the combination of Computer Science 134 and Computer Science 136 for those who wish a good introduction to the science of computing.

This course is a prerequisite for all upper level Computer Science courses. In Computer Science 134 we do not assume that you have had any previous computer programming experience. If you have had extensive previous experience you might consider CS 136. Please discuss this with any member of the department's faculty if you feel you fall into this category.

There will be two types of programming assignments: laboratory programs that, as a unit, count for 15% of your final grade, and two test programs that make up 40% of the final grade. Test programs are treated as take-home exams, with no assistance allowed. All programs assigned during the semester should be completed following the guidelines in the Honor Code Guidelines for Computer Science Courses .

Laboratory programs will not be accepted after the due date, but in computing your grade the lowest score on submitted assignments will be dropped. Late test programs will be accepted, but with a penalty of 10% per day.

There will be in-class quizzes and an evening midterm (worth 20% of your grade). There will also be a scheduled final exam (counting 25%).

Midterm examination: Thursday, April 8, Time 7:30 p.m. - 9 p.m., in TCL 123 (Wege Auditorium).

Final examination: Scheduled final - Monday, May 24, 9:30 a.m., in TCL 202.

A copy of the Spring '03 midterms is now available in either html or pdf format: Midterms03html or Midtermso3.pdf. (The pdf files should be much easier to read if you have Adobe Acrobat Reader installed on your computer.)

A copy of the Spring '03 Final Exam is now available in either html or pdf format.

A second sample exam is also available in html: Spring 00 Exam

Lectures and Readings

The schedule on the following two pages shows the topics to be covered at each class meeting during the semester. Students should consult this page regularly to see the most current version of the schedule of topics and readings.

Students should come to class having completed the indicated readings for each day. The reading assignments are all from Bruce, Danyluk, and Murtagh, "Java: An Eventful Approach". A preprint of this text will be distributed the first day of class. Your term bill will be charged for the costs of reproducing these materials.

Lecture Date Topic Reading
1. Feb. 6 Fundamentals


Feb. 9 Graphics and Event Handling Methods Ch 1


Feb. 11 Variables and Numbers Ch 2


Feb. 13 Conditionals Ch 3


Feb. 16 Primitive Types and Strings Ch 4


Feb. 18 Defining and Using Classes Ch 5

Feb. 20 Winter Carnival


Feb. 23 Classes, Control Structures Ch 5, 6


Feb. 25 Declarations & Scope Ch 7


Feb. 27 Iteration & Active Objects Ch 8


March 1 More Active Objects Ch 8


March 3 More Active Objects Ch 8


March 5 Interfaces Ch 9


March 8 User Interface Components and Events Ch 10


March 10 User Interface Components and Events Ch 10


March 12 Still More User Interface Components and Events Ch 10


March 15 Recursive structures & methods Ch 11


March 17 Recursive structures & methods Ch 11


March 19 Recursive structures & methods Ch 11


April 5 For Loops & Arrays Ch 12, 13


April 7 Arrays Ch 13

April 8 Evening Midterm Sample solutions


April 9 class cancelled Ch 13


April 12 More Arrays Ch 13


April 14 Multi-dimensional Arrays Ch 14


April 16 Inheritance Ch 16


April 19 Inheritance Ch 16


April 21 Character Strings Ch 15


April 23 More Character Strings Ch 15


April 26 Exceptions Ch 17


April 28 Streams Ch 18


April 30 More Streams Ch 18


May 3 Streams and networks Ch 18


May 5 Object-oriented Program Design


May 7 Searching Ch 19


May 10 Sorting Ch 19


May 12 More Searching/Sorting


May 14 What is Computer Science?

Laboratories and Programming Assignments

Programs in this course are run on Apple Macintoshes using the Eclipse development system. Room 217A in Thompson Chemistry (TCL) is the primary lab for CSCI 134 (and other CS courses). It is equipped with Macintosh computers that can be used to run all of the programs in the course (sample programs, lab exercises, and homework assignments). Software for the course is stored on hard disks in the computers in 217A.

In addition to class time, we will conduct lab sessions each week. The purpose of these sessions is to provide a time during which your instructor can actively assist you in the development of laboratory programs. Attendance at these lab sessions is mandatory. The initial lab period will familiarize you with the use of the Macintosh and course software. Remaining labs will be handed out in advance, and you will be expected to have planned your approach to the assignment before the beginning of lab. The lab session will then be used to develop the program and perform related exercises. You will submit your laboratory programs electronically. The procedure will be explained in laboratory. Laboratory programs will be accepted up until 11:00 P.M. on the second night after your lab session.

Monday      Tuesday      Laboratory Title     
Feb. 9 Feb. 10 Intro. to Java

Feb. 16

Feb. 17 Event Handling with Conditionals

Feb. 23

Feb. 24 Defining Classes

March 1

March 2 Parameters

March 8

March 9 Loops and Simple Threads

Wed., March 10

Test Program 1 Test Program 1 Sample Solutions

March 15

March 16 GUI Practice (no handout before lab)

Fri., March 19

Test Program 1 Due at 4:00 P.M.

April 5

April 6 Recursive Definitions

Thursday., April 8

Midterm Exam, 7:30 PM

April 12

April 13 Arrays

April 19

April 20 More Arrays

April 26

April 27 Strings

Wed., April 28

Test Program 2

May 3

May 4 Streams (no handout before lab)

May 10

May 11 Work on test program

Fri., May 14

Test Program 2 Due, 4:00 P.M.

Mon, May 24

Final Exam, 9:30 a.m., in TCL 202

Honor Code Guidelines for Computer Science Courses

The Honor Code as it applies to non-programming assignments is outlined in the Student Handbook.

For programming assignments in Computer Science courses, the honor code is interpreted in very specific ways. When a program is assigned, your instructor will identify it as a "practice," "test," "laboratory," or "team" program. The Honor Code applies differently to each with respect to collaboration or assistance from anyone other than the TAs or instructors:

Practice Programs. These are provided to help you gain an understanding of a topic, and are not graded. Guideline: Help on these programs is unrestricted.

Test Programs. Any assignment designated as a test program is to be treated exactly as a take-home, open-book test. You are allowed to read your textbook, class notes, and any other source approved by your instructor. You may not consult anyone other than your instructor. The instructor encourages the asking of questions, but reserves the right not to answer, just as you would expect during an exam. Guideline: Any work that is not your own is considered a violation of the honor code.

Laboratory Programs. Laboratory programs are expected to be the work of the individual student, designed and coded by him or her alone. Help locating errors is allowed, but a student may only receive help in correcting errors of syntax; help in correcting errors of logic is strictly forbidden. Guideline: Assistance from anyone other than the TAs or instructors in the design or coding of program logic will be considered a violation of the honor code.

Team Programs. Team programs are laboratory or test programs to be worked on in teams of two or more students. You are allowed to discuss team programs with your partners, but work with others is otherwise restricted by the appropriate rules above. Guideline: Any work that is not the work of your team is considered a violation of the honor code.

If you do not understand how the honor code applies to a particular assignment, consult your instructor.

Students should be aware of the Computer Ethics outlined in the Student Handbook. Violations (including uninvited access to private information and malicious tampering or theft of computer equipment or software) are subject to disciplinary action.

Guideline: To protect your work dispose of printouts and diskettes carefully, and avoid leaving your programs on hard disks in labs and other public storage areas.

The Department of Computer Science takes the Honor Code seriously. Violations are easy to identify and will be dealt with promptly.