Old Program Plan
This document applies ONLY to student entering the Ph.D. program in 2011 or before.
To complete the PhD degree in Software Engineering, we require that each student:
- Participate in directed research.
- Pass 96 university units worth of graduate courses (equivalent to eight 12-unit courses). This includes six 12-unit courses and two practicums; each practicum serves as the equivalent of a 12-unit course.
- Serve as a teaching assistant at least twice.
- Demonstrate communication (speaking and writing) skills.
- Write and orally defend a thesis, a significant piece of original research in a specialized area of Software Engineering.
Overview of Requirements
|1‑2 courses||Star course in design and engineering (Software Engineering, Research Methods in Software Engineering)|
|1‑2 courses||Star course in systems (Computer Systems, Software Systems, or Application Systems)|
|1‑2 courses||Star course in analysis (Statistics, Performance Analysis, Algorithms, Theory of Programming Languages)|
|Note: Four courses in the above three areas are required, with at least one course in each area (requirement modified 12/04)|
|1 course||A course about economics, business, or policy issues, preferably in the software industry|
|1 elective||12 university units of electives|
|Note: A "star" course is a course that has been determined to satisfy certain standards of breadth and evaluation|
The first practicum is an issue-focused reflection and analysis of a software engineering practical experience of the author. The results are presented through an oral presentation and a written report. The second practicum may address a second issue in a similar way, or it may alternatively take the form of a critical literature survey. Please consult with the program committee regarding specific guidelines for the practicum.
We strongly prefer industrial software development experience prior to entering the program. Many students have two or more years of professional experience. Some students in the program have ten or more years of experience. A minimum of two summers is required. Students who enter with little development experience will increase their experience during the program.
TA in two courses. Normally, one will be a classroom course (20 hours/week for 1 semester) and the other will be as a mentor/advisor for a masters project (7-8 hours/week for 1 calendar year)
- Speaking Proficiency
- Writing Proficiency
- Application area knowledge in some specific application or technical specialty area
- (The programming skill requirement of other programs is subsumed by the experience requirement)
Participate in weekly ISR meeting on current research activity; contribute actively to the tasks required to make ISR a rich and rewarding environment
Throughout the program, participate actively in an ISR research project.
Conduct an original investigation leading to significant new results. This is the most important requirement of the program.
Estimated time requirement
4 Calendar Years (CY), accounted for as 1 Academic Year (AY) for courses, 0.5 AY for teaching, 1 CY for background work and proposal, 2 CY for thesis, including contributions to sponsoring project. While it is theoretically possible to complete the program in 4 years, a more normal expectation is 5 years to completion.
A note on highly experienced students: We especially value the special perspective that very senior software developers can bring to a research program. These very senior developers typically have 10 years or more of system development experience, at least 5 years in a position of senior responsibility for design and outcomes. We have attracted a number of such people as PhD students, and we highly value the contributions that they make to the program based on their experience. The scale and substance of the program enable us to recognize and adapt to the wide range of experience and background of our students.
The courses listed below are examples of courses available. Students interested in courses not listed here should contact their advisor for guidance and suggestions.
MSE Core Courses: We have adapted some of the existing Master of Software Engineering (MSE) core courses to serve both MSE and PhD students. MSE courses available for PhD credit are cross-listed as 17-7xx (e.g., 17-751, Models of Software Systems), and may require an additional project to satisfy the PhD requirement.
Design and Engineering
- 05-830 Advanced User Interface Software
- 17-752 Methods: Deciding What to Design (Adapted from MSE Core Course 17-652)
- 17-755 Architectures for Software Systems (Adapted from MSE Core Course 17-655)
- 36-749 Experimental Design for Behavioral and Social Sciences
- 05-830 Advanced User Interface Software
- 15-712 Advanced Operating Systems and Distributed Systems
- 15-740 Computer Architecture
- 15-744 Computer Networks
- 15-745 Optimizing Compilers for Modern Architectures
- 15-821 Mobile and Pervasive Computing
- 15-826 Multimedia Databases and Datamining
- 18-730 Introduction to Computer Security
- 18-732 Secure Software Systems
- 18-749 Fault-Tolerant Distributed Systems
- 08-803 Emperical Methods for Socio-Technical Research
- 10-601 Machine Learning
- 10-701 Machine Learning
- 15-750 Algorithms Core
- 15-812 Programming Languages Semantics
- 15-814 Type Systems for Programming Languages
- 15-819O Program Analysis
- 15-853 Algorithms in the Real World
- 17-751 Models of Software Systems (Adapted from MSE Core Course 17-651)
- 17-754 Analysis of Software Artifacts (Adapted from MSE Core Course 17-654)
- 90-905 Statistical Theory for Social and Policy Research
Business and Policy
- 08-731 Web, Commerce, Security and Privacy (Old 17-701)
- 08-733 Privacy, Policy, Law and Technology
- 08-734 Usable Privacy & Security
- 90-802 Information Security: Comparison of US and European Policies
- 95-782 Global eBusiness Strategy
Please consult with your current advisor regarding elective courses. Below are possible choices:
- 15-817 Introduction to Model Checking
- 15-818 Special Topics in Software Systems
- 17-635 Software Management
- 17-758 Signification Papers in Software Engineering
- 17-762 Great Readings in Software Engineering
- 90-906 Introduction to Economic Theory
Practical Experience within the Program
An integral part of the ISR research program is ongoing interaction with industrial-strength software development in a real (not just realistic) setting for hands-on education.
Two kinds of practical experience are required: the practicum (equivalent effort to 12 units) and experience in lieu of prior industrial experience.
Examples of a 12-unit practicum include:
- Longitudinal: issues raised in a short project from design to implementation, including course-based examples (15-822) or projects arranged with industrial partners.
- Topical: issues related to some particular aspect common to several different projects. For example, a quality-related practicum might involve spending several weeks with each of projects doing design reviews, test plans, user studies, and change requests. This aspect could be related to the student's chosen technical specialty.
Experience in lieu of prior industrial experience:
In addition to the Practicum, students who have had minimal prior industrial experience will be expected to deepen their understanding and perspective of industrial software development during the Ph.D. program. Alternatives include part-time work with local industry, extended internships in development groups (summer plus semester), and special arrangements with industrial partners in ISR research projects.
Research and Thesis
Research in the program will address topics related to projects led by the program faculty. There are diverse topics related to software engineering research, and students are encouraged to visit faculty and project web pages, read papers, and contact faculty and current students affiliated with projects of potential interest. Research projects, while focused on practical engineering challenges, take a scientific approach. That is, there are identified research hypotheses, experimentation possibly involving significant engineering and interaction, data collection and feedback, and iteration. We strive for both scientific impact and, in the long term, impact on the practice of software engineering.
Approaches appropriate to PhD theses include (but are not limited to):
- Novel methods for software development
- Implementation techniques for novel applications
- Automated support for software activities
- Measurement techniques for system evaluation
- Descriptive models that generalized from practical examples
- Guidance for making classes of design decisions
- Empirical models with predictive power
- Analytic models that permit quantitative or symbolic analysis
A Typical Plan of Study
Evaluations of student progress in SCS at Carnegie Mellon compare student achievement to the criterion, "Is this student making reasonable progress to completing an excellent PhD?". Consequently, the requirements may be satisfied in whatever order best serves the student and the institution.
A typical plan of study includes the following requirements:
- A course requires about 12 hours/week
- Participation in the weekly ISR Software Research Seminar requires about 3 hours/week plus one presentation preparation
- TAing is about a half-time load
- A student should usually be devoting about half time to a research project. This leads to a thesis proposal in spring semester of the third year and completion of the thesis, typically in the fifth year.
|Away for Internship|
Internship or Full-Time Research
Mentor 1 Course
Full Time Thesis Research
Full Time Thesis Research
Full Time Thesis Research
Common variations include TAing a course in the Spring of year 1 or 2 instead of the Fall of year 2, TAing a second course instead of mentoring a studio for a year, and moving the course from the TAing semester to the third year.