Objectives of Computer Science 420
Spring 2005 - Ms. Katz
Course Description
Our main goals this term are to study the major phases of software development and
some of the tools and techniques that may be used to support them.
This course provides an overview of Software Engineering concentrating on each
of the phases of the software development life cycle. Topics include the goals of
each phase, a survey of techniques that are used in each phase, and the management
and organization of team projects.
This course will provide the student with experience in teamwork by incorporating
a major project that is to be completed by a group of students.
This project will involve significant writing, programming, and presentation/speaking
activities as the students design, implement, and test their solutions.
Each team will be expected to present its solution to the class providing the
students an opportunity to prepare and deliver a technical presentation.
Techniques covered include
- The waterfall model, iterative enhancement, prototyping;
- Axiomatic and algebraic specifications;
- User interface design and evaluation, data flow, data structure, and object oriented design;
- Specification based, code based, statistical, and regression testing;
- Quality assurance and reliability measurement.
A team project provides the student with practical experience in applying the techniques.
Course Objectives
Upon completion of this course the successful student will:
- have experience in software development activities from specification to testing and maintenance.
- have experienced the difficulties of working in teams and investigated techniques for overcoming those difficulties.
- have presented technical material to a group.
- have created precise and informative documents for each stage of software development.
- be aware of various approaches to software development such as waterfall, iterative enhancement, and prototyping.
- be familiar with formal specification notations such as axiomatic and algebraic specifications.
- have applied several approaches to software design such as data flow oriented, data structure oriented, and object oriented techniques.
- have examined programs formally and understand how such an examination aids our understanding of any program's function.
- understand the purpose and effectiveness of various testing strategies such as black box, operational, and structural testing.
- understand the importance of quality assurance and reliability of software systems.