| 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. |
| 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.
Upon the successful completion of this course students will be able to:
|
| Textbooks: | Object-Oriented & Classical Software Engineering (7th ed), Stephen Schach, McGraw Hill |
| References: | References on the web. |
| Major Topics: |
|
| 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. |