Electrical Engineering
      and Computer Sciences

Electrical Engineering and Computer Sciences

COLLEGE OF ENGINEERING

UC Berkeley

   

Courses

CS 169. Software Engineering

Current Schedule (Spring 2014)

Description

Catalog Description: (4 units) Ideas and techniques for designing, developing, and modifying large software systems. Object-oriented and agile design techniques. Design patterns and modeling languages. Specification and documentation. Verification, static analysis, testing, version control, and debugging. Cost and quality metrics and estimation. Project team organization and management. Students will work in teams on a substantial programming project.

Prerequisites: CS 61B and CS 61C, Math 55 or 113.

Course objectives: To have detailed knowledge of the object-oriented software development method, and to be able to apply it. To master the development of a medium size software application from the conception stage to deployment, using modern technologies. To experience working in a team. To master written technical communication.

Topics covered:

  • Software engineering processes
    • Object-oriented processed
    • Agile processes (Extreme programming)
  • Gathering requirements
  • Specifications
    • Unified Modeling Language
  • Design
    • Unified Modeling Language
    • Design patterns
  • Version control
  • Testing
    • Regression testing
    • Integration testing
    • Test generation
  • Debugging
    • General principles
    • Delta debugging
  • Runtime monitoring
    • Purify
    • Cooperative Bug Isolation
    • Diduce
    • Eraser (data race debugging)
  • Software security
  • Verification
  • Refactoring
  • Software reuse
  • Programming with Exceptions

General Catalog

Undergraduate Student Learning Goals