CMSC 838Z

An Introduction to Research in Software Engineering

MW 3:30pm- 4:45pm (CSI 1121)

Adam Porter

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?

Despite the 838 course number, this class is intended to introduce students to research in software engineering. I do not assume nor require that students have any particular background in software engineering before taking this class.

How is this course organized?

The course will survey a variety of software engineering 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 examine 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 for submitting reviews

Class Slides and Resources

Class Forum