Home Contact

CMSC435: Software Engineering (Spring 2012)

Dept. of Computer Science, University of Maryland, College Park, MD, USA.

Important Updates

  • Jan. 26. Teams have been formed. Each student must belong to one team.
  • Jan. 26. Project phases 1 and 2 have been posted.
  • Feb.

About the Course

Welcome to the home-page for the Software Engineering Course (CMSC 435, Section 0101).

In most of our computer science classes, we have written small programs and developed software that had few users, if any. What can we say about the design, analysis, quality, and reusability of these programs? Did we keep these issues in mind when we developed our programs? In other words, did we "engineer" the software?

In the real world, we will be required to team-develop large software that may be used by hundreds of people. We want to make sure that the software we develop is "engineered" well. In this course, we will learn how to engineer software by developing a detailed design, testing/debugging the design for correctness, writing the code, and testing the quality of our software.

More specifically, we will study techniques for:

  • Planning and managing a software development project
  • Capturing the requirements
  • Designing the system
  • Writing the code
  • Testing each functional unit and the overall system
  • Delivering the software
  • Maintaining the software
Most importantly, we will work on a large, team-based project (or multiple interrelated projects) to apply all the techniques. Happy Software Engineering!

Meeting Times & Location

Tue. Thu. - 9:30AM - 10:45AM (CSIC 1122).

Office Hours

Tue. Thu. - 10:45AM - 12:00PM (4115 A. V. Williams Building) Other meetings may be scheduled individually and held over Skype and Phone.

Course TA

Bryan Robbins (brobbins AT cs.umd.edu). Office hours: Tue.Wed.Thu 3:00pm-5:00pm.

Catalog Course Description

State-of-the-art techniques in software design and development. Laboratory experience in applying the techniques covered. Structured design, structured programming, top-down design and development, segmentation and modularization techniques, iterative enhancement, design and code inspection techniques, correctness, and chief-programmer teams. The development of a large software project.


The grade of the course will be determined as follows: 10% midterm exam, 15% quizzes, 25% final exam, 50% class project.