CS 300 Elements Of Software Engineering

Credit Hours: 4
Course Coordinator: Warren Harrison
Course Description: Practical techniques of program development for medium-scale software produced by individuals. Software development from problem specification through design, implementation, testing, and maintenance. The fundamental design techniques of step-wise refinement and data abstraction. A software project will be carried through the development cycle. Prerequisites: CS 163, 201, 202.
Prerequisites: CS 163, 201, 202.
Goals: To train students in developing medium-scale software, and to give practice in such a project. The purpose is to prepare them for projects in subsequent courses such as CS 321.

Upon the successful completion of this course students will be able to:

  1. Recognize software systems as human artifacts for which their developers must take responsibility.
  2. Separate software development into independent phases for the purpose of controlling the process.
  3. Participate in a developer-customer dialog about requirements for a particular software system.
  4. Develop a test plan for a software system using only its requirements documentation.
  5. Design software to solve a problem of small- to medium complexity, and express the design formally.
  6. Implement a software design to create a working system that must pass a user acceptance test.
  7. Test an implemented system according to an existing test plan, and correct any failures discovered.
  8. Use basic software tools under the UNIX system to aid in software development.
  9. Use iterative enhancement as a development technique.
  10. Explain the importance of information hiding in development.
  11. Explain the significance (or lack of significance) of testing coverage for software.
  12. Evaluate emerging formal software development methods.
Example Textbooks: Consult with the instructor/professor teaching the class for the quarter.
References: None.
Major Topics: Requirements and specifications for software systems.
System design.
Implementation.
Testing.
Formal methods.
Laboratory Exercises: Develop a working medium-scale software system from a given problem statement. (8 weeks)

CAC Category Credits Core Advanced
Data Structures 0.1
Algorithms 0.1
Software Design 1.3 2.0
Computer Architecture
Programming Languages 0.5

Oral and Written Communications: Every student is required to submit at least one written report (not including exams, tests, quizzes, or commented programs) of typically four pages. Written communication is documentation for the class software project, and includes documents describing the specification, design, and testing of this project.
Social and Ethical Issues:
Theoretical Content: Formal analysis and design methods, about 25% of the course.
Problem Analysis: Understanding of intuitive software requirements, and critique of precise (English language) specifications.
Solution Design: A working software system must be designed, implemented, and tested by each student individually, to be subjected to an acceptance test.