ICS 314, MW 10:30 – 11:45, Hamilton 3F

A primary goal of ICS 314: Software Engineering is to take you to the next level with respect to your ability to design and implement high quality software systems using open source software development principles.

This course takes a technological approach to the presentation of traditional software engineering concepts like specification, modeling, analysis, and design. By the end of the semester, you will acquire significant new skills with useful tools including: the Java programming language, the Eclipse integrated development environment, the JUnit testing framework, the git configuration management system and GitHub cloud-based project hosting, the Play web application framework, and the CheckstylePMD, and FindBugs automated quality assurance tools.

Your skill with these tools and traditional software engineering concepts will be complemented by an understanding of open source software development methods, continuous integration and testing, process and product measurement and analysis, agile software development, and web application development.

The course also focuses on improving the speed with which you can develop high quality software using the concept of “Workout of the Day” (WOD).

A secondary goal of this class is to help you establish a “professional persona”.  This includes: (a) a professional, permanent email address; (b) a professional portfolio; (c) a technical blog written by you with well-written articles; (d) participation in professional networking sites such as LinkedIn and TechHui; and (d) awareness of ethical issues as they apply to software engineering.

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

  • “An interesting and challenging course, [where] you will learn about key conventions in Software Engineering as well as life in general.”
  • “This course is crucial for all ICS students. It was very valuable!”
  • “Excellent course for ICS majors.  Should not miss it.”
  • “Highly recommend this class.”
  • “I really enjoyed this class and learned more than in my entire college career combined. It also made me discover my love for programming”.
  • “Excellent—teaching the real facts that we actually need to know.”
  • “I used to dread software engineering, now I love it.”

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).”

For additional student perspectives on this class, please see my unedited course evaluations from prior semesters, with hundreds of comments from 2007 to now.

The skills you acquire in ICS 314 provide professional advantages.  Aaron Kagawa, a software engineer and recruiter for Referentia Corporation, has this to say: It has been my experience that learning technologies like Ant, JUnit, Eclipse, and Subversion and practices like Code Reviews, Extreme Programming, and User Testing will separate you from the rest of crowd when applying for entry level Software Engineering positions. While recruiting and evaluating University of Hawaii ICS students one of the first questions I ask is “Did you take Software Engineering?” Followed by, “Do you know what JUnit is?”