ICS 314: Software Engineering I

All sections meet Tu/Thu, Hamilton Library Basement 3F

Section 001: 9:00am-10:15am, Section 002: 10:30am-11:45am, Section 003: 6:00pm-7:15pm

ICS 314 is a fast-paced immersion into significant software engineering concepts and technologies. It incorporates the following themes:

The course grounds these thematic elements by covering the skills necessary to quickly build two-tier web applications with a modern look-and-feel. Many computer science and computer engineering projects benefit from a web-based user interface, and this class will help you to create a nice one regardless of your “design” background.

Who should take this course

This course is intended for undergraduates in computer science or computer engineering who have a working knowledge of Java or C++ and who want to invest effort into developing their software engineering skill set.

A significant component of the course is a student-selected final project to showcase the techniques learned during the course.


ICS 314 is structured as a sequential series of modules, most taking approximately a week to complete. Each module has the following structure:

Prior results

While ICS software engineering requires discipline and effort, the results appear to be worth the investment. Here are some recent course evaluation comments:

The course teaching style and format were innovative and effective at maintaining a rigorous yet intriguing pace of learning. Dr. Johnson’s Athletic Software Engineering pedagogy – specifically the concept of WODs – was tremendously stimulating and efficient at fostering class learning. (Fall, 2017)

I enjoyed this course very much. Though it may have caused me some stress along the way, there was never a moment when the amount of effort I put in didn’t result in a satisfying reward. It teaches you much more beyond coding and shapes you as a future computer scientist. I really feel as if it has been a significant stepping stone in the journey towards my career, whatever that may turn out to be. (Fall, 2016)

Take this course if you have the time and want to learn some useful skills. Don’t underestimate the amount of time you’ll need to put in, but it is definitely rewarding if you want to pursue software engineering. (Fall, 2015)

On the other hand, some students find the workload to be stressful, as shown by this comment:

A very spirited instructor, sometimes too spirited. The constant requirements for the class both with studying materials and programming can be overwhelming to a student of typical course & out of school load (other classes and work/family obligations). (Fall, 2009)

For additional student perspectives on my teaching, please see my unedited course evaluations since 2007, with hundreds of comments (both positive and negative).