Building a great, successful software system is an intellectually
challenging activity that is more likely to fail than succeed. Yet,
software is becoming increasingly sophisticated and now permeates every
aspect of our lives. Thus, software is becoming harder to build, but it's
increasingly important to build it right.

The methods for creating software have changed dramatically to keep pace,
even while the core principles have not, because they are timeless. This
course is about learning to read, think about, discuss, and practice
software engineering in a way that helps you apply the timeless principles of
software engineering to today's software engineering problems.

Specifically, the goals of this course are to:

Teach you how to read research papers in computer science

With that skill, introduce you to the research literature of software engineering

Through that literature, introduce the core concepts in software engineering

With all the of above, learn how to critically think about and discuss technical issues in software engineering

Give you practice in applying the core concepts of software engineering

We will study insightful case studies such as the Mythical Man Month and
Microsoft Secrets, as well as classic and leading edge articles from the
research literature, including Agile and Design Patterns.

An undergraduate background in computer science (or equivalent) is a
prerequisite, but an undergraduate software engineering class is not.

Announcements

You are responsible for acquiring the book The Mythical Man
Month. I will provide all other readings for copy. The book is
not available in the textbook section of the bookstore. I recommend
ordering online. Used books can often be found at amazing prices
through Amazon's bookseller's marketplace.