Lecture Slides |
Links |
Projects |
turing
What this course is about
This course deals with the processes involved in software development, from
requirements specification and analysis, on through design, implementation,
and verification.
We discuss ways to organize and manage work processes
as well as technical design models.
A major portion of the course activity is the development of real software
products in teams of about four students each.
Instructor
Bob Keller, 1242 Olin (office hours 3-4 MW, 4-5 p.m. Tu, or whenever), keller@cs.hmc.edu, x 18483
Grader
James Brooks, jbrooks@orion.ac.hmc.edu
Catalog Description
Rigorous introduction to the technological and managerial discipline concerned
with the design and implementation of large software systems. Techniques for
software specification, design, verification, and validation. Formal methods
for proving the correctness of programs. Students working in teams are required
to design, implement, and present a substantial software project.
Prerequisites: Computer Science 70 and 80.
Requirements and Grading
Homework and quizzes(40%), participation (20%), team software development
project (40%)
Participation will include making a presentation on a current software
development topic.
Failure to show up for class means that your participation component takes
a major hit, enough to bring you down a letter grade.
Outline
- Overview of software development activities
- Requirements elicitation
- Modeling, UML (Unified Modeling Language)
- Analysis
- Design
- Design Patterns
- Object Design
- Project Management
- Life Cycle Models and Standards
- Testing
- Software metrics
- Software inspections, walkthroughs
- Formal Methods
- Inductive Assertions Method
- Structural Induction Method
- Design by Contract
- Anti-Patterns
- Project presentations (multiple phases, lasting several weeks)
Note: Instructor will attend some non-presentation project meetings.
Textbook
At present, I haven't found a textbook that I consider ideal, so there
is no required textbook. I plan to assign some readings on the web.
If you want to get some reasonable texts, I suggest the following.
Copies will also be on reserve in Sprague Library.
- Dean Leffingwell, Don Widrig,
Managing software requirements : a unified approach,
Reading, MA : Addison-Wesley, 2000.
- Daryl Kulak, Eamonn Guiney,
Use cases: Requirements in context,
Reading, MA : Addison-Wesley, 2000.
- Grady Booch, Ivar Jacobson, James Rumbaugh,
The unified modeling language user guide,
Reading, Mass : Addison-Wesley, 1998.
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides,
Design patterns: Elements of reusable object-oriented software
Reading, Mass : Addison-Wesley, 1995.
- Ivar Jacobson, Grady Booch, James Rumbaugh,
The unified software development process,
Reading, Mass : Addison-Wesley, 1999.
- James Rumbaugh, Ivar Jacobson, Grady Booch,
The unified modeling language reference manual,
Reading, Mass : Addison-Wesley, 1998.