CS 383

From CS Wiki
Jump to: navigation, search

Software Engineering I

Catalog Description: Current topics in development of software systems; software life cycle model, requirements definition, design, verification and validation, and project management techniques.

Type: Required for all CS majors.

Total Credits: 3

Contact Hours: 3 lecture hours per week

Course Coordinator: Clinton Jeffery

URL: http://www2.cs.uidaho.edu/~jeffery/courses/383/

Prereq: Have passed all required CS 2XX level course with C or better.

Textbook: Bernd Bruegge and Allen Dutoit, Object-Oriented Software Engineering, 3rd Ed., Prentice Hall, 2010. Or equivalent text.

Textbook URL: http://www.pearsonhighered.com/educator/product/ObjectOriented-Software-Engineering-Using-UML-Patterns-and-Java/9780136061250.page

Prerequisites by Topic:

  • Proficient programming skills in a high level language such as C++ or Java (CS 121)
  • Understanding of basic concepts of programming languages and the benefits and limitations associated with them (CS 210)
  • Ability to use basic software development tools (CS 270)
  • Understand fundamental concepts of computer organization, computer architecture, operating systems and their relationship to application programs (CS 150, CS 240)

Major Topics Covered

  1. Software development life cycle: waterfall, spiral, and agile (k)
  2. Software project management, estimation, revision control (b)
  3. Product definition, requirements elicitation, use cases (b)
  4. Architectural design and design composition (c)
  5. System modeling with UML (j)
  6. Modularity and component design (k)
  7. Object-oriented methods for composition, modeling and component design (j)
  8. Professional, ethical, legal, security and social issues (e)
  9. Testing and verification (c)
  10. Design tools (i)
  11. User interfaces (k)

Course Outcomes

  1. Define and compare several development models (k)
  2. Construct a project plan and schedule (b)
  3. Write a software specification containing product definition and requirements (b)
  4. Design a system architecture including components and their relationships (c)
  5. Develop UML use case descriptions and use cases (b)
  6. Define inheritance, aggregation and user-defined associations/responsibilities between classes (j)
  7. Describe the professional, ethical, legal, security and social issues involved in a software product (e)
  8. Design modules and components, using object-oriented methods (k)
  9. Develop a test plan to test and verify a software product (c)
  10. Use software design tools to design and test a system to meet requirements (i)
  11. Design effective user interfaces (k)