Computer Science 209

Software Development

General Information

Professor Ken Lambert
Office Parmly Hall 406
Phone 458-8809
Home page


Office Hours

M/W/F 1:25-2:20   Science 214

M/W/F 9:00-10:00

T/R 1:00-2:00

Brief Overview

This course introduces the concepts, tools, and techniques used in software development. Topics include

Classroom work will consist of lecture and discussion. Written work will consist of several team-based programming projects, homework exercises that employ tools used in software development, and a comprehensive final exam.

Course Objectives

After taking this course, you should be able to


The book listed below are required. All but the first are available to W&L students via Safari Books. We will have additional readings from journal articles and books on reserve in the Science Library.

Horstmann Object-Oriented Design and Patterns, Second Edition
$59.30 (Amazon)
Horstmann Core Java for the Impatient, 1st Edition
Safari Books
Horstmann Core Java Volume I — Fundamentals,10th Edition
Safari Books
Bell and Beer Introducing GitHub: A Non-Technical Guide, 2nd edition
Safari Books
Beck JUnit Pocket Guide: Quick Look-up and Advice
Safari Books
Burnette Eclipse IDE Pocket Guide: Using the Full-Featured IDE
Safari Books








The written work for the course will consist of

Attendance and Other Policies

Academic Integrity

Programming projects, homework exercises, and exams should be written individually. Deliberate concealment of sources constitutes plagiarism and will result in a failing grade for the course and a report to the EC. Please familiarize yourself with W&L’s policy on plagiarism at


Final Exam Policy

The final exam for this course will be given during the final exam week. You can take this exam during any of the regularly scheduled exam periods that week. You must supply an exam envelope to the instructor or the department administrative assistant no later than noon on the last day of class. You must specify a provisional day and time on the envelope, which you are free to change on the clipboard provided outside the door of Parmly 407 any time that week. Email or phone requests to reschedule will not be accepted.

The exam will be given in Parmly 405, and you should arrive promptly before the appointed time. If you are more than 15 minutes late, you will have to reschedule your exam. If you are more than 15 minutes late to the last exam period on Friday afternoon, you will receive a grade of 0 on your exam.

Students who have approved academic accommodations must make arrangements to use those accommodations directly with the instructor no later than the last day of class. Students approved for extra time will receive that time at the tail end of the morning exam period or before the beginning of the afternoon exam period (for example, ending at 1:30 PM for a morning exam or beginning at 12:30 PM for an afternoon exam). Students approved for a low-distraction testing location should reserve that space during the last week of classes (following instructions distributed by Director of Disability Resources Lauren Kozak.


Washington and Lee University makes reasonable academic accommodations for qualified students with disabilities. All undergraduate accommodations must be approved through the Office of the Dean of the College. Students requesting accommodations for this course should present an official accommodation letter within the first two weeks of the (fall or winter) term and schedule a meeting outside of class time to discuss accommodations. It is the student’s responsibility to present this paperwork in a timely fashion and to follow up about accommodation arrangements. Accommodations for test-taking should be arranged with the professor at least a week before the date of the test or exam.

Tentative Schedule (caution: this will change!)

Monday Wednesday Friday
Sept 4


Basic Java syntax and semantics


Sept 11 I/O and numbers

Primitive and reference types

Equality and comparisons

Strings and arrays


Classes and methods

Sept 18

Preconditions, postconditions, exceptions, and javadoc



GUIs with BreezySwing


Collections and interfaces


Sept 25 File processing Inheritance and composition Abstract classes


Oct 2



GUIs with Swing and AWT


Graphics and


Oct 9

Numeric I/O and handing errors with dialogs

Loading images from files

On to Eclipse!

Reading day
Oct 16

Design patterns: iterator, composite, and decorator

The strategy pattern: comparisons and layouts

The strategy pattern: map, filter, and reduce

Oct 23

The adapter pattern

Specializing by subclassing

The proxy pattern

Oct 30

Linked structures

The singleton pattern I The singleton pattern II
Nov 6 The singleton pattern II

Tools: JUnit

Refactoring and extreme programming
Nov 13

Refactoring and extreme programming


Paul Graham essays Paul Graham essays
Nov 27 Working with jar files Project presentations

Project presentations


Dec 4 Project presentations

Project presentations

Project presentations


Video recordings of lectures (Tegrity site)


1-I/O and Numbers

2-Equality, Comparisons, Types, Strings, and Arrays

3-Java Classes and Methods

4-Error Handling, Exceptions, and Documentation


6-Easy GUIs with BreezySwing

7-Collections and Interfaces

8-File Processing

9-Inheritance and Composition

10-Abstract Classes


12-GUIs, Model View Controller, and Layouts

13-Graphics and GUIs

14-Numeric Input, Error Handling, and Standard Popup Dialogs

15-Displaying Images from Files

16-On to Eclipse!

17-Design Patterns: Iterator, Composite, and Decorator

18-The Strategy Pattern: Comparisons and Layouts

19-The Strategy Pattern: Map, Filter, and Reduce

20-The Adapter Pattern

21-Specializing by Subclassing

22-The Proxy Pattern

23-The Singleton Pattern: Introduction

24-The Singleton Pattern and Recursive Data

25-Unit Testing


27-Working with Jar Files

Programming Projects


Java for Python Programmers

Java at Oracle's Web Site

Java 8 Documentation


Paul Graham's Web Site

Working With jar Files

Further Readings in Software Development

Pair Programming


Eclipse Web Site

ArgoUML - A Free UML Authoring Tool

JUnit Web Site

Hillside's Patterns Page

PageTutor's ColorPicker 3