| 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:
|
| 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. |