ICS 314 Spring 2020: Software Engineering I

Welcome to the ICS 314 web site.

Philip Johnson will teach Sections 001 (Tu/Th 9:00am-10:30am) and 002 (Tu/Th 10:30am-11:45am) which both meet in Hamilton Library Basement, Room 3F.

Cam Moore will teach Section 003 (Tu/Th 1:30am-2:45pm) which meets in Holmes Hall 243.

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.

Pedagogy

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:

Professor Johnson’s course is the course that breaks open the field for students, in my opinion. He provides us the tools to effectively collaborate as a team when working with code and how to make the modern designs that we see today in sites. This course is definitely something I dreaded while taking, since the work load can be a little much at times, but if you properly try to understand how everything works, the knowledge gained can stay with you for life. It’s honestly insane. (Fall, 2019)

The course not only provides the tools and skills needed for Computer Science students to produce content but also introduces us to the social aspect we as programmers will have to understand in order to work in groups later in life. (Spring, 2019)

Overall, the course takes a different direction than the typical class would. The course is similar to conditioning yourself for a sport. It takes a lot of time and effort from the student initially, but as time goes on, the results show. At the start of the course, the time pressure of the assignments made me tense and clumsy, but the practices and material provided helped steel me into a LEAN, MEAN, FIERCE COMPUTER ATHLETE, WHO DOESN’T FLINCH AT THE SIGHT OF A WOD. The project period is also a time of revelation. (Spring, 2018)

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)

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 Philip Johnson’s teaching style, please see his unedited course evaluations since 2007, with hundreds of comments (both positive and negative).