EECS 395: Software Construction

Quarter Offered

Spring : TuTh 11-12:20 ; Findler


EECS 214 & EECS 111


Software Construction is based on the premise that

                                 programs are written for people, not computers.

Accordingly, the course focuses on the design and implementation of maintainable programs and how to present such programs to others.

During the course, students synthesize knowledge from the pre-requite courses and learn the fundamental tools for maintaining programs:

  • testing (focusing on unit testing),

  • design of new, simple data structures (how to use basic data structures to fit a new problem), and

  • checkable program specification techniques (simple type systems, behavioral contracts, and sequence contracts)

  • This course satisfies the Software Development Breadth and project requirement.

COURSE INSTRUCTOR: Prof. Robby Findler

COURSE ASSIGNMENTS: The course has nine assignments, one each week. The first two assignments expose students to the idea of modifying large programs and the design of a subscription-notification architecture. For assignments three through nine, students build and modify their own software. To date, the final product has been a complete implementation of an existing board game (e.g., Scrabble or Parcheesi), including a rules manager, a GUI, automated players, and networked play.

COURSE OUTLINE:  The course is organized as a studio course, following the tradition of art and architecture school. Each week, students present their programs and (with the instructor's guidance) learn from each others' experience. Final grades are based on the quality of the students' code and the quality of their presentations, with an emphasis on the later code and the later presentations.