Northwestern CS394 Spring Software Engineering Course 2026
This post is background primarily aimed at potential students of spring CS394 software engineering with me at Northwestern University and changes for 2026
Introduction and Overview
In the spring of 2026, I will again 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 1960s, 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 2000s, a significant breakthrough in team software development, which built on lessons of the previous decades, was the creation of agile methodologies and the 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. Students will also complete a self-paced lab component (5-7 focused labs) to ensure strong fundamentals in React, TypeScript, and advanced Git, GitHub, and testing techniques particularly useful with AI-aided coding practices. The second will be a client-oriented project where software is developed on behalf of a ‘customer’ outside of the students, with a heavy focus on Harness Engineering techniques using AI agent tools. Our second project will also explore issues with multi-agile team development.
What is required to take the course
Students should have done some significant programming. A good knowledge of data structures and 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.
Students also should be prepared for significant time to coordinate with their teams (And in the second project) with their clients outside of course times. How well you show up and perform with your team is fundamental to success in the course.
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.
That said, last year I introduced a set of self-paced labs that were well received by students, and I will continue to develop and refine those labs for this year. The goal will be that all students who complete the course will be able to successfully pass the technical aspects of an interview as an intermediate-level React Developer; and to develop some better fluency with testing and Git/GitHub workflows, particularly in the context of AI-assisted development.
A common survey is used for CS 394 to get into the course and the survey is available on the CS 394 Course Page for admittance. Let us know if you have preferences between the courses. My class will be Monday & Wednesday at 3:30 pm, and Professor Riesbeck’s 394 is Monday & Wednesday at 9:30 am. Students will need to coordinate times to meet with their team outside of class as well to work on the project. Students will be expected to be in each class on time in person. (See FAQ below).
Some more on Professor Warren
This site provides a 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’ve taught software engineering multiple times recently, and elements of CS394 also existed within the NUvention Web course I team-taught for more than 15 years. 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 for the second year in the Farley Center for Innovation and Entrepreneurship.
Guest Speakers
We will have a few guest speakers, some in person, some on Zoom for short Q & A’s, though most learning will come from building projects in teams. In particular, we may have guests who have led software products at major tech companies, many of whom will be former students. In the past we have had people with software development experience at Google, Microsoft, Ford, OpenAI, and more.
FAQ
When is the course?
The course is scheduled for Monday and Wednesday in person at 3:30pm-4:50pm. Room TBD.
How can I take the course?
The course is by permission only. Dr. Riesbeck and I use a common 394 application form, which is available on the CS 394 Course Page. Priority is given to those who are CS Majors/Masters, towards the end of their NU degree program, and those with web programming experience.
How is the course the same or different from Professor Riesbeck’s CS394?
They will be very similar. Dr. Riesbeck and I have taught together in NUVention Web, and the syllabus for spring 394 is a second derivative of his.
Three differences are the following:
-
I recommend developing in TypeScript and will provide a starter for the first project.
-
The second project has a client like Professor Riesbeck’s, but it is done by multiple teams who coordinate to serve a single client. This is to get some ‘real world’ experience with managing the interdependencies of teams in developing software. Students were positive on this approach last year and recommended continuing the approach in future classes.
-
5-7 focused labs covering React fundamentals, TypeScript best practices, advanced Git and GitHub workflows, and testing techniques for AI-aided development workflows. Dr. Riesbeck covers similar topics in slightly different formats.
What will I get out of the course?
You will learn tools and techniques for building software in groups; and more importantly, you will get the experience of applying those concepts experientially with your team—learning by doing. This is not a lecture-oriented course. You will leave the class with opinions and experience on how best to run a team software project; perhaps a technique or two you will introduce to the next software team you are part of. You will get a project you will have completed with your team you can talk about. You will likely also build a strong connection with one or more members of your team. If you are engaged with your team, project, and the labs, you should exit the class with enough knowledge to pass an entry-level ‘full stack’ interview in industry.
Is the class recorded? Can I be remote?
The class is in person, and to receive full points, students must be on time and attend each class. The classes will be recorded. A full attendance and grading policy will be provided in the syllabus.
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,
React, and database technology, will be required for the projects and is not covered directly in the syllabus. All students will be required to write software in React and JavaScript/TypeScript in the course. Every student must check in some code to their project under their GitHub ID to get a good grade in the course. If you want to get started, look through Professor Riesbeck’s excellent set of resources.
Can I use AI tools in the course
With a few small caveats, Yes. Software development continues to change; and use of software agents (GitHub Copilot, Claude Code, Codex, OpenCode) is the latest. Most of the agile practices in the manifesto transcend these tools; and software engineering fundamentals from working well in a team, to rapid iteration, and testing strategies make AI coding more effective and will make you a better computer scientist. We will have you install GitHub Copilot as part of your standard toolset.
Can I audit the course?
Since most of the course is project work in a team, auditing the course isn’t permitted.