Computer Science 209

Software Development

General Information

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


Office Hours

M/W/F 12:15-1:15   Parmly 307

M/T/W/F 10:30-11:30, or by appointment

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

The hourly exams and the final exam should be written individually and pledged.

Although you may discuss programming problems among yourselves, your programs should be your own work, unless otherwise specified (as when you do pair or team programming). You MAY use code from the PowerPoint slides or from the textbook for the course. Otherwise, you may NOT use the work of your classmates, former students, friends, or anyone else in writing your programs. By "use" I mean turning in the work of others as your own, or even casting your eyes upon the work of others with a view to incorporating their solutions into your own. Deliberate concealment of sources constitutes plagiarism and will result in a failing grade for the course and a report to the EC. Deliberately providing solutions to other students, either verbally or in writing, via hardcopy or electronic transmission, will result in a failing grade for the course and a report to the EC. In particular, you may not share your work until the deadline to hand in material has passed. Please familiarize yourself with W&L’s policy on plagiarism.


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 Title IX Coordinator and Director of Disability Resources, Elrod Commons 212, (540) 458-4055. Students requesting accommodations for this course should present an official accommodation letter within the first two weeks of the 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 must be arranged with the professor at least a week before the date of the test or exam, including finals.

Tentative Schedule (caution: this will change!)

Monday Wednesday Friday
Sept 2


Basic Java syntax and semantics


Sept 9 I/O and numbers

Primitive and reference types

Equality and comparisons

Strings and arrays


Classes and methods

Sept 16

Preconditions, postconditions, exceptions, and javadoc



GUIs with BreezySwing


Collections and interfaces


Sept 23 File processing Inheritance and composition Abstract classes


Sept 30



GUIs with Swing and AWT


Graphics and


Oct 7

Numeric I/O and handing errors with dialogs

Loading images from files

On to Eclipse!

No lecture: Reading Day
Oct 14 Design patterns: iterator, composite, and decorator

The strategy pattern: comparisons and layouts

The strategy pattern: map, filter, and reduce

Oct 21

The adapter pattern

Specializing by subclassing

The proxy pattern

Oct 28

Linked structures

The singleton pattern I The singleton pattern II
Nov 4 The singleton pattern II

Tools: JUnit

No lecture:

Reading day

Nov 11

Refactoring and extreme programming


Refactoring and extreme programming Paul Graham essays
Nov 18 Paul Graham essays Working with jar files

Project presentations


Dec 2 Project presentations

Project presentations

Project presentations



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

Getting Started with Eclipse

Getting Started with GitHub

15-Displaying Images from Files

17-Design Patterns: Iterator, Composite, and Decorator

18-The Strategy Pattern: Comparisons and Layouts

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

20-The Strategy Pattern: Streams, HOFs, and Lambdas

21-The Adapter Pattern

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


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