Click here to access press info

Prerequesite Knowledge

Applicants to the joint CMU-UC programs in Software Engineering should have a solid understanding of each of the topics listed below.


Basic Data Types: Lists, stacks, queues, hash tables, trees
Memory Management: Storage allocation, garbage collection;
Algorithms: Divide and conquer, backtracking, iterative techniques, searching and sorting, O-Notation.


Simple type systems, arrays, records, variants, recursive types; Name and structural type equivalence; Stack and heap allocation; Pointers, aliasing, parameter-passing mechanisms; Lexical and dynamic scope; Abstract types.

Knowledge of Object Oriented Programming is highly recommended.


Logic: Propositional and predicate logic; Proofs: Inference rules, proof methods;
Set theory: operations on sets, induction, set comprehension;
Relations & functions: equivalence relations, order relations, classes of functions, composition.


All candidates admitted into the programs on Software Engineering must complete the Personal Software Process (PSP) course prior to the beginning of Fall semester. PSP is offered free of charge as a distance education course to all admitted students.

The Personal Software Process: A Practitioner's Start-Up Kit course introduces the highest-leverage metrics, specifically the ones associated with improving time estimation and reducing defects. You will watch nine lectures, do seven programming problems, four reports, and read selected chapters from Watts Humphrey's "A Discipline for Software Engineering". Your course work will help you to immediately apply Personal Software Process principles to your daily work.

PSP is intended for practicing software engineers and their managers. The measures introduced can serve as the basis for software development process improvement in the organization as well as helping individuals. If you go on to take a more comprehensive course in the PSP through the Software Engineering Institute or other SEI-authorized PSP trainers, you will be able to concentrate more completely on advanced metrics.

Course Text

Humphrey, Watts S. A Discipline for Software Engineering. Reading, MA: Addison Wesley, 1995.

Course Objectives

By successfully completing the Practitioner's Starter Kit, you will achieve these objectives:

     * You will reduce overall defect rates

    * You will spend more time at the front end of the development cycle

    * You will eliminate or nearly eliminate compile and test defects

    * You will be able to more accutely estimate the time it takes to build software