[ Administrivia | Outline ]
William D Clinger
Software Engineering, Ninth Edition.
Considers software development as a systematic process, involving specification, design, documentation, implementation, testing, and maintenance. Examines software process models; methods for software specification; modularity, abstraction, and software reuse; issues of software quality. Students, possibly working in groups, will design, document, implement, test, and modify software projects.
Prerequisites: CS 3500 (object-oriented design) and CS 3800 (theory of computation)
The course will be organized around a semester project. During the early part of the course, most homework assignments will emphasize individual writing. During the second half of the course, most project work will be done in teams. Students should expect to present some of their work to groups of other students, including at least one presentation before the entire class. The semester project will involve writing a program that runs on a CCIS Linux machine.
The writing, presentation, software projects, and other assignments will account for about three quarters of the final grade. A midterm will account for about one quarter. No final exam will be given, but project walkthroughs and demonstrations will be conducted during the last week of class.
This is not a course in software engineering, primarily because we will avoid most of the management issues. Software engineering does, however, provide the context for our discussion of the more technical aspects of software quality.
Security is an important aspect of software development. In this course, students are expected to protect the software they develop from plagiarists and thieves. The quality of this protection will be graded.
The Tar Pit
The Mythical Man-Month
|Chapter 1 (Introduction)
Chapter 2 (Software Processes)
Chapter 4 (Requirements Engineering)
|15 Jan||Passing the Word
Interchangeable parts and black-box testing
Software process models
Calling the Shot
Project-specific theory and standards
|Chapter 3 (Agile Software Development)
Chapter 8 (Software Testing)
Chapter 6 (Architectural Design)
|22 Jan||Software Architecture and Design
Scaling up, part 1:
asymptotic complexity & efficiency
|Chapter 7 (Design and Implementation)
The Story of Mel, a Real Programmer
Chapter 22 (Project Management)
|29 Jan||The Surgical Team
Plan To Throw One Away
|5 Feb||Testing & debugging
Reliability & security
|12 Feb||Scaling up, part 2: reuse|
|19 Feb||Scaling up, part 3|
|26 Feb||Sharp Tools
Hatching a Catastrophe
|5 Mar||No class: spring break|
|12 Mar||Architectural reviews|
|19 Mar||Architectural reviews|
|26 Mar||Midterm exam|
|2 Apr||Code reviews|
|9 Apr||Code reviews|
|16 Apr||Code reviews|
Last updated 26 February 2013.