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. Prerequisite: CS 202. |
| Prerequisites: | Programming skills (CS 161, 162, 163, and 202) in a high level language.
Familiarity with the local UNIX operating-system environment (CS 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:
- Recognize software systems as human artifacts for which their
developers must take responsibility.
- Separate software development into independent phases for the
purpose of controlling the process.
- Participate in a developer-customer dialog about requirements
for a particular software system.
- Develop a test plan for a software system using only its requirements
documentation.
- Design software to solve a problem of small- to medium complexity,
and express the design formally.
- Implement a software design to create a working system that must
pass a user acceptance test.
- Test an implemented system according to an existing test plan,
and correct any failures discovered.
- Use basic software tools under the UNIX system to aid in software
development.
- Use iterative enhancement as a development technique.
- Explain the importance of information hiding in development.
- Explain the significance (or lack of significance) of testing
coverage for software.
- Evaluate emerging formal software development methods.
|
| Textbooks: | The Engineering of Software, D. Hamlet & J. Maybee, Addison-Wesley, 2001. |
| 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.
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. |
|