Carnegie Mellon University

17-652 Methods: Deciding What to Design

Methods: Deciding What to Design is a 12 unit full semester course.

Practical development of software requires an understanding of successful methods for bridging the gap between a problem to be solved and a working software system. In this course you will study a variety of ways of understanding the problem to be solved by the system you're developing and of framing an appropriate solution to that problem.

More course details can be found in the Methods: Deciding What to Design syllabus.

After completing this course, students will:

  • apply engineering approaches to frame solutions;
  • identify different classes of problems and their structures;
  • analyze technical, organizational, usability, business, and marketing constraints on solutions;
  • recognize how their understanding of the problem should be reflected in the software design.


  • A minimum of three months hands-on software development experience in industry. Please submit a statement to the instructor that lists the company, the dates, and a sentence or two about what you were actually doing during that time (e.g., programming, testing, other things actually involved in software development).