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]
|