Department of Computer Science
CS 260 - Software Design
Fall 2007 Syllabus
- COURSE OBJECTIVES: This course studies the
process for designing complex software applications, with a special
focus on the use of formal design and agile methods. Formal
design includes the
"Design by Contract" methodology, the
Java Modeling Language (JML), and correctness-checking with ESC/Java2.
Agile methods include unit testing, pair
programming, patterns, and refactoring. The course allows you
to learn about and evaluate these formal design and agile
methods in the software development process. Software
design projects will be used as case studies for working with these
concepts and tools in a laboratory setting.
Course Web site: http://blackboard.bowdoin.edu
- Course e-mail address: csci260@bowdoin.edu
- Class meeting time (attendance required): MW
2:30-3:55pm, Searles 224
PRIMARY TEXT (required): Horstmann, Object-Oriented
Design and Patterns 2e, Wiley, 2006 ($64.95 new from Wiley, $47.00
new from Amazon, ? new/used from the Bowdoin
Bookstore)
INSTRUCTOR: Allen Tucker, 82 Federal Street, campus
phone:
725-3131
E-mail address: allen@bowdoin.edu
Office Hours: in Searles 224 lab
MW 4:00-5:00pm, or by arrangement
COURSE WORK: The course includes seven laboratory
assignments,
five projects, and a final exam. The lab assignments include
experiments using various lab tools and
techniques. The projects are interrelated, using
a collection of well-known solitaire games, and so they build upon each
other. The final exam unifies all the projects and will include
a summary write-up and an oral presentation. The projects may be
done individually or in teams of two; all labs must be done
individually.
You are expected to follow the
Bowdoin College Academic Honor Code in all your course work. In
particular, your own authorship and the authorship of others whose work
contributes yours must be explicitly acknowledged as comments in your
Java code. This is facilitated by Javadoc, which we will use
throughout the course.
The Honor Code extends to 2-person project teams in the
following
way: each person on the project must identify those parts of the
code that he/she has authored, using Javadoc comments in the Java code.
Help received from persons or sources outside the project team
must be acknowledged in the same way.
Of course, "common knowledge" received during class meetings or other
conversations with classmates or the instructor need not be
acknowledged. So you should use your own judgment to determine
whether or not to explicitly acknowledge a source -- if in doubt, err
on the conservative side.
All laboratory work for the course will use the Eclipse
Integrated Design
Environment (IDE), which is installed on the Macs in Searles 224.
Java, javadoc, junit, the Java
Modeling Language (JML), and ESC/Java2 are all accessed through the
Eclipse environment. These tools
will be explained as they are needed. Also, these tools are
freely
downloadable for use on your own (Windows, Linux, or Mac)
computers.
COURSE OUTLINE:
|
Week beginning |
Topics |
Lectures |
Labs and Projects
|
|
Sept 3
|
Motivation for software design; overview of agile
programming
and formal methods
Software process: requirements analysis
|
Overview
Chapter
1
2.1-2.5
|
eclipse |
|
Sept 10 |
Use cases, CRC cards; UML class, sequence,
and
state diagrams; Unit testing |
2.6-2.12
|
junit;
3.7
|
|
Sept 17 |
Class design: Qualities of classes --
coupling,
cohesion, completeness, convenience |
3.1-3.5 |
Project 1 |
|
Sept 24 |
The Java Modeling Language (JML); pre and
postconditions, invariants, documentation |
3.6
JML
|
jml |
|
Oct 1
|
Class structure; inheritance,
polymorphism,
abstraction and interfaces, visibility
|
Chapter
4
|
javadoc; 1.2; 2.11
|
|
Oct 8 (1/2 week)
|
Design patterns; GUI design: the Model View Controller
pattern
|
Chapter
5
mvc |
Project 2 |
|
Oct 15 |
Quality measures: metrics
and
bad smells |
Chapter
6 |
metrics
|
|
Oct 22 |
Refactoring |
Refactoring
|
|
|
Oct 29
|
Software architecture;
frameworks |
Chapter
8
software
architecture
|
Project
3
|
|
Nov 5
|
Threads: the client-server
framework
|
Chapter
9
|
|
|
Nov 12
|
Databases and SQL: The Java/SQL connector
|
Java/SQL
|
Java/SQL |
|
Nov 19 (1/2 week)
|
Team formation;
introduction to
final projects
|
|
Final
Project |
|
Nov 26
|
System testing
|
testing
|
|
|
Dec 3
|
Project Review |
|
|
|
Dec 10
|
Final exam -- Dec 11 2:00pm |
|
Final Project
Presentations
|