Feb 05, 2024

Northwestern CS394 Spring Software Engineering Course

Introduction and Overview

In spring of 2024, I will be teaching CS394 at Northwestern University in Evanston, IL. The course will focus on answering and exploring the question, how do we best work in teams to build software reliably and predictably that users love. With few exceptions, most software is built by a team of people working together; whether that is in a company or as part of an open source project. Since the 1960’s, a significant branch of computer science, software engineering, has explored tools and methods for humans to work better together to produce machine code that solves problems. In the early 2000’s a significant breakthrough, which built on lessons of the previous decades, in team software development was the creation of agile methodologies and drafting of the agile manifesto.

The course I will teach will have a very similar structure to Chris Riesbeck’s 394 Course. We will have two team projects as the significant focus of the course. The first will be a startup-like project in react and firebase. The second will be a client oriented project where software is developed on behalf of a ‘customer’ outside of the students. In the second half we will also explore some of the issues in large scale software development through both guest speakers and topics integrated into the client project.

What is required to take the course

Students should have done some significant programming. A good knowledge of data structures, and having experience working in multiple programming languages is essential. The course projects will require software development from every student in Javascript/Typescript and the React framework. We will use google’s firebase as our backend database.

Learning react and javascript/typescript will not be covered in the course syllabus and students are expected to have this experience or pick it up in the process of developing their team projects. Resources will be provided for students to learn these technical pieces on their own. Likewise, source code control using git and github will be used extensively in the course for software development. Basic git skills are not covered in the course; but resources will be provided.

There is a survey students must take in order to be eligible for permission to take the course. This survey is distinct from the survey Dr. Riesbeck has for his course (See FAQ below).

Some more on Professor Warren

This site provides pretty complete background on me in the profile on this site. I’ve been teaching off and on at Northwestern for more than ten years. I have not taught software engineering in quite a few; but many elements of CS394 also existed within the NUvention Web course. I’m a “pracademic”—that is most of my approach is based on my work experience at big companies (Microsoft and Ford Motor Company) and startups. Most recently I was involved in leading software at Ford Motor Company, where I was responsible for all in-vehicle software, connected cloud systems, and mobile applications. I will also be co-teaching a course in corporate innovation in the Farley Center for Innovation and Entrepreneurship

Guest Speakers

We will have a few guest speakers; though most learning will come from building projects in teams in the class. In particular, we will have guests who have led software products at Google, Microsoft, and Ford currently in the plan.


When is the course?

The course is scheduled for Tuesdays and Thursdays in person at 9:30am. Room TBD.

How is the course the same or different from Professor Riesbeck’s CS394?

They will be very very similar. Dr. Riesbeck and I have taught together in NUVention Web and the syllabus for spring 394 is a derivative of his. The second project may have some differences in client orientation and structure. I also have a preference for typescript and Dr. Riesbeck does not.

If I apply for Professor Riesbeck’s course do i need to apply to yours?

Yes please. The surveys are similar but I’m asking a few more questions; and it ends up in a separate list. If you are applying to both; we would appreciate in the comments at the end that you indicate so; and if so whether you would prefer my class (Tu/Th) or Professor Riesbeck’s (M/W)

What textbook is required?

The Agile Samurai by Jonathan Rasmusson

What programming knowledge do i need to take the course?

It’s recommended students complete CS214 and another substantial programming course in any language before this course. Familiarity with web technologies, including JavaScript, CSS, HTML and database technology will be required for the projects and is not covered directly in the syllabus. All student will be required to write software in React and JavaScript/Typescript in the course. If you want to get started look through Professor Riesbeck’s excellent set of resources


Subscribe to my mailing list