A perspective on the ICS Software Engineering Curriculum

  • Even though ICS 414 did not have any lectures, no exams, and no
    assignments, I feel like this probably has been my most valuable class
    yet. With my interest being in software engineering, being able to
    take a class that provides a realistic approach as to how software
    engineering is actually done in the tech world has been very
    beneficial to me and my computer science career. From running into
    communication issues with the client, to having issues within the
    development group, to improving my problem-solving skills and self
    learning skills, I feel like I have gained valuable experience on how
    a career in software engineering may be like. Because of this, I feel
    a lot more confident in my ability to become a software engineer, and
    I feel like I have a significant advantage over my peers trying to get
    into the same career choice. With all the problems and lessons learned
    while taking this course, I really feel like ICS 414 provided me a
    glimpse into my future, and I have never been more excited for it.
  • During the entire semester of ICS 414, there was no lectures, tests,
    quizzes or any of the standard things one would do in a class and that
    would make you think that you learned nothing at all! But not ICS 414,
    even though there was none of that I felt I’ve learned more from this
    class than any other class in the whole program of Computer
    Science. Going from having to work with a actual client with a program
    and this features and have it built by a certain deadline or to
    working with a bigger group than normal is all something that can push
    me towards a career after I graduate.
  • Conversations with an old friend is what meeting ICS 414 for the first
    time was like. It presented itself with familiar content that for the
    most part were covered in ICS 314. It is overall a fun roller-coaster
    of a course. Its structure was project-based and significant amount of
    the course material stems from cultivating ones skills in the work put
    in these large set of groups. Course material includes knowledge of
    MongoDB, Javascript, Intellij IDEA, Github, Semantic UI, Meteor, and
    React.
  • My experience in ICS414 was an unforgettable one. I enjoyed every bit
    of this class and I know that everything I learned in this class will
    be useful to me in the future. I’m grateful for this opportunity to
    have a customer and experience what it is like to work with a customer
    and create something that is providing for someone’s needs. Thank you
    to my teammates who put in a lot of time and effort into our project
    to create something I never thought I could do. I can’t wait to see
    what the future has in store for me!

tl;dr

For those who don’t want to read the entire essay, here are my three “prime directives” for how to create a high quality software engineering experience for our undergraduates:

About Software Engineering I

I have had primary responsibility for Software Engineering I (ICS 314) for many years. After a great deal of experimentation, I developed a pedagogy called “Athletic Software Engineering” and a curriculum that blends the introduction of standard software engineering concepts (configuration management, quality assurance, UI and application design, testing, etc) with a tech stack for web application development. The module page for the course website (https://courses.ics.hawaii.edu/ics314f21/) illustrates the course content:

Modules for ICS 314 in Fall 2019
  • 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 work load is a lot but it’s really fun to see the possibilities that can be done because of it. I enjoyed the course and never felt burdened to do any of the coding assignments because it was so engaging. As long as you keep doing the assignments you are supposed to, you can stay on track and learn efficiently. Its broken down concepts that you gradually learn and by the end, you come out with a great amount of knowledge than before. This is probably one of the best courses you’ll take as it will apply far beyond school. (Spring, 2020)

Less optimal ways to organize ICS 314 and 414

Over the years, we’ve tried organizing the software engineering curriculum in several other ways, but none of those were as successful as the current design.

Possible ways to evolve the software engineering curriculum

Here are some ideas on how the current software engineering could evolve in a manner consistent with the three prime directives listed above:

  • Change the pedagogy. As I said previously, I don’t think Athletic Software Engineering is essential to a successful experience. There are other modern pedagogies that have demonstrated good outcomes. For example, studio-based learning appears to be a promising approach.
  • Change tech stack tools. Any software development tech stack must evolve to keep up with best practices, and the ICS 314/414 tech stack is no exception. For example, in the past few years we’ve swapped out Blaze for React, Mocha for TestCafe, Bootstrap for Semantic UI, Eclipse for IntelliJ IDEA, and Galaxy for Digital Ocean. Cam and I have discussed moving back to Bootstrap from Semantic UI, and to Visual Studio Code from IntelliJ IDEA.
  • Change the language. While Javascript currently works really well, it is only a matter of time until another language will be more appropriate. Cam and I have discussed moving to Typescript, since that’s what we use for our research projects, but haven’t committed to the switch yet. A more dramatic move would be to Python, because that would also necessitate moving to a Python-based web application framework such as Django.
  • Change the application domain. While web application development is a really excellent choice for ICS 314 students for a number of reasons, it’s not the only possibility. One possible alternative application domain is mobile application development. I’ve recently been playing around with Flutter, which is based on the Dart programming language, and both of these technologies have a lot to recommend them.

Outcome measures

How do we continue to ensure that ICS 314 and 414 continue to provide a high quality experience as it changes in content and instructors? I think it can be done by gathering both internal and external outcome measures.

Internal outcome measures

The UH Course Evaluation System provides a very simple way to obtain internal outcome measures. There are standard questions asked every semester. Here are some example outcome measures from the UH CES for both ICS 314 and 414. The values are averages for the courses from the past few semesters. I also include recent values for UHM and ICS for comparative purposes:

External outcome measures

There are opportunities to assess the software engineering preparation of our students from outside the university system. Interviews with community members, particularly those who have a long-standing relationship with recent ICS graduates, can provide insight into whether things are improving or not.

Enhancing software engineering education in ICS beyond 314, 414, and 613

There are currently three courses in the ICS curriculum that focus on software engineering. If the department decides to increase its emphasis on software engineering, how might that happen?

Unlisted

--

--

--

Professor of Computer Science at the University of Hawaii

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Philip Johnson

Philip Johnson

Professor of Computer Science at the University of Hawaii