ICS 613: Advanced Software Engineering, MW 1:30 – 2:45pm, WAT 113

software_engineering_explained3A primary goal of ICS 613: Advanced 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, the Maven build system, 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.

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 613 (and its undergraduate version, 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 413 Software Engineering?” Followed by, “Do you know what JUnit is?”