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

A team project provides the student with practical experience in applying the techniques.

Course Objectives

Upon completion of this course the successful student will:

  1. have experience in software development activities from specification to testing and maintenance.
  2. have experienced the difficulties of working in teams and investigated techniques for overcoming those difficulties.
  3. have presented technical material to a group.
  4. have created precise and informative documents for each stage of software development.
  5. be aware of various approaches to software development such as waterfall, iterative enhancement, and prototyping.
  6. be familiar with formal specification notations such as axiomatic and algebraic specifications.
  7. have applied several approaches to software design such as data flow oriented, data structure oriented, and object oriented techniques.
  8. have examined programs formally and understand how such an examination aids our understanding of any program's function.
  9. understand the purpose and effectiveness of various testing strategies such as black box, operational, and structural testing.
  10. understand the importance of quality assurance and reliability of software systems.