The Purpose of this course
To learn the principles and methods of reliable
software design and to get acquainted with modern CASE tools. This
course also aims to make you understand that software development
in practice, is not just coding successfully and efficiently, but
a lot more than that.
Course Synopsis
-
Software Engineering paradigms, Waterfall model, Spiral model,
Cleanroom model
-
Requirement Analysis, Software Specification, Decision Tables
-
Pseudocode method, Top-Down Design, Jackson diagrams
-
Structured Programming, Boehm-Jacopini Theorem
-
Design graphical representation, Data Flow diagrams, Nassi-Shneiderman
diagrams, etc.
-
Modules
-
Coding, programming style, code optimization
-
Software Design Inspections
-
Testing, Black-Box and White-Box methods, testing planning
-
Debugging, formal assertion technique
-
Program verification, partial and total correctness proofs
-
Software Design Planning and Organization
Laboratory sessions will introduce modern CASE tools
for program design at the UNIX/Linux/C platform.
The team project is an essential part of the course.
It includes the work in team (4-5 people) on a design of a
C program (approximately 2K lines of code) and a complete
set of documentation and test cases.
Suggested Reading
-
S.L.Pfleeger, Software
Engineering, Theory and Practice, Prentice Hall, 1998,
(available in Corbett Center Bookstore)
-
F.Brooks, The Mythical Man-Month,
Addison-Wesley,
2nd edition, 1995
-
B.Kernighan, R.Pike, The Practice of Programming,
Addison-Wesley, 1999
-
B.Kernighan, P.Plauger,The Elements
of Programming Style, McGraw-Hill, 2nd edition, 1978
-
S.McConnel, Code Complete,
Microsoft
Press, 1993
-
R.Pressman, Software Engineering,
McGraw-Hill,
4th edition, 1996
Copies of transparencies are available
at CS office.
Assessment
-
Homework / Laboratory Assignments
20%
-
First Test
20%
-
Second Test
20%
-
Final Project
40%
CS371 Home |Next
|