CMSC 838P Spring 2005

Research in Software Engineering

Instructor Adam Porter
TuTh 9:30pm-10:45pm


What is software engineering?

Software engineering is the study of theories, methods and tools needed to develop large software products cost-effectively (paraphrased from Sommerville)

This entails understanding issues such as: how to determine what a program is supposed to do, how to express those requirements, how to structure and construct software systems, how do ensure that they actually do what they're supposed to do, and how to organize groups of people so they can do all this.

Who should take this course?

This class is intended to introduce students to research in software engineering. Consequently, I will not assume nor require that students have any background in software engineering before taking this class.

How is this course organized?

The course will cover specific research areas following an idealized view of how software is developed, i.e., starting with conceptualizing a system, to designing, building, testing, and maintaining it.  At each stage we will survey how software engineering research has and is continuing to address each area. We will do this by first examining fundamental background, after which we will examine current research. We will end the semester by concentrating on interesting directions for future research.

How does this course meet graduation requirements?

This course will count towards the various comprehensive exam requirements.  Class requirements will primarily be a final exam, active class participation (including at least one presentation), and a research project. The results of the research project will be captured in a publishable-quality report. 

Preliminary Reading List

Instructions on writing and submitting reviews for each reading assignment

Class Slides

Student Presentations

Project Presentations