ISR Logo  

School of Computer Science

Institute for Software Research

PhD Program in Software Engineering


Home
Expectations
Prerequisites
Application
Program Plan
   Overview of Requirements
   Courses
   Practicum
   Teaching
   Skills
   Research and Thesis
   Sample Study Plan
People
   Faculty
   Students
   Alumni
   Incoming Students
Research
   Faculty Research Guide
   Student Publications
Administration
   PhD Student Handbook
Contact Us

Program Plan

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

Courses (6)
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
Practicums (2) 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.
Experience 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.
Teaching (2) 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)
Skills
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)
Community Engagement Participate in weekly ISRI meeting on current research activity; contribute actively to the tasks required to make ISRI a rich and rewarding environment
Research Throughout the program, participate actively in an ISRI research project.
Thesis 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.

[back to top]

Courses

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

  • 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)
  • 17-939 What Makes Good Research in Software Engineering?

Systems

  • 15-712 Advanced Operating Systems and Distributed Systems
  • 15-740 Computer Architecture
  • 15-744 Computer Networks
  • 18-730 Introduction to Computer Security
  • 18-749 Fault-Tolerant Distributed Systems
  • 15-745 Optimizing Compilers
  • 18-732 Secure Software Systems
  • Application systems courses include systems courses offered through the Language Technologies Institute (LTI) in the School of Computer Science

Analysis

  • 15-750 Algorithms Core
  • 15-812 Semantics of Programming Languages
  • 15-814 Type Systems for Programming Languages
  • 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) -- new for Spring 2005
  • 17-757 Empirical Methods: Validating Results and Testing Hypotheses -- new for Spring 2005
  • 90-905 Statistical Theory for Social and Policy Research

Business and Policy

  • 17-701 Web, Commerce, Security and Privacy
  • 17-802 Privacy and Anonymity in Data
  • 90-802 Information Security: Comparison of US and European Policies
  • 95-782 Global eBusiness Strategy
  • 08-734 Usable Privacy & Security
  • 08-733 Privacy, Policy, Law and Technology

Electives

  • 15-819 Objects and Aspects: Language Support for Extensible and Evolvable Software (new course Fall 2004)
  • 15-887 AI Planning, Executing and Learning
  • 17-810 Empirical Methods in Software Engineering Research (6 unit mini-course)
  • 17-811 Self-Healing Systems (6 unit mini-course)
  • 17-812 Open Source Software Development (6 unit course)
  • 17-898 Special Topics SE Reading Seminar
  • 17-993 (listed internally as 17-960): How to Write a Good Research Paper (6 unit mini-course)

    [back to top]

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 ISRI research projects.

[back to top]

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

    [back to top]

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.

Fall Spring Summer
Year 1

2 Courses
1/2 Time Research
Research Meeting

2 Courses
1/2 Time Research
Research Meeting

Away for Internship
Year 2

1 Course
TA one course
1/4 Time Research
Research Meeting

2 Courses
1/2 Time Research
Research Meeting

Internship or Full-Time Research
Research Meeting

Year 3

Mentor 1 Course
5/8 Time Research
Research Meeting


Studio
5/6 Time Research
Thesis Proposal
Research Meeting

 

1 Course
5/6 Time Research
Research Meeting

Rest

Full Time Thesis Research
Research Meeting

Full Time Thesis Research
Research Meeting

Full Time Thesis Research
Research Meeting

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.

[back to top]

 


The Software Engineering PhD Program is part of the Institute for Software Research in the School of Computer Science at Carnegie Mellon University.

© 2004 Carnegie Mellon University
This site was last modified on June 24, 2008.