Why take ICS 414, Software Engineering II?

ICS 314 provides a solid foundation in basic software engineering concepts: coding, testing, configuration management, project planning, basics of web application development, etc.

What cannot also be accomplished in a single semester is the experience of using that foundation on a significant, real-world software development project.

In ICS 414, you will have a unique opportunity: the creation of a world-class, open source, web and mobile application to support computer science degree and career planning.

What makes ICS degree planning hard?

Currently, ICS degree and career planning is done via yearly meetings with Gerald. This is working OK, but there are several things that are hard to do:

  1. It’s hard to translate the degree requirements into a concrete schedule. How do you navigate through the curriculum most efficiently?

  2. It’s hard to plan out more than a semester. How do you plan your future schedule when you don’t know when/if an ICS course will be offered?

  3. It’s hard to understand when your course schedule for a given semester becomes “overloaded”. And, what is the impact of taking too many courses and then doing poorly in one or more of them?

  4. Finally, it’s hard to decide what courses and activities will be of most benefit to you in future. Besides courses, there are a lot of the other ICS educational opportunities: honors thesis, participation in Grey Hats or ACM Manoa, internships with local high tech organizations, independent study, research publications, hackathons, open source software systems developed, etc. How should one best use one’s time?

While these problems are described in terms of the UH ICS department, I suspect that these very same problems exist for many academic CS departments.

RadGrad: Creating awesome computer scientists, one graduate at a time.

Our vision is a student information system called RadGrad, written in Meteor, that provides a ground-breaking solution that integrates current curricular needs with the future career desires of ICS students, and helps students actively plan in a data-driven fashion for specific post-graduation outcomes.

RadGrad is intended for use by both students and ICS academic advisors. It is not intended to replace the regular face-to-face meetings, but rather to make those meetings more productive by providing additional insight into the current state and possible future(s) for each ICS student.

RadGrad focusses on the student’s degree program and professional development, both historically and predictively. The following diagram illustrates the basic approach:

Let’s look at how RadGrad will support these quadrants:

Degree Program: History. Each ICS student can login to http://radgrad.ics.hawaii.edu using their UH account. (For privacy purposes, RadGrad will run on ITS servers.) RadGrad will show the student user all the ICS courses they have taken, the semesters they took the courses, and the grades they received. This information will hopefully be automatically imported from STAR, but can also be entered manually by ICS advisors or even the students themselves.

Professional Development: History. Preparation for a successful career in computer science involves more than just obtaining a sufficient number of credit hours. Students and advisors will use RadGrad to document extracurricular activities (honors, Grey Hats, ACM Manoa, hackathons, internships, research, etc.) and the semester(s) in which they occurred.

Degree Program: Planning. RadGrad will provide provide enhanced support for course planning. First, it will provide, for each ICS course, an indication of the likelihood of it being offered for each semester for the upcoming five years. For each upcoming semester, each ICS course will be tagged with one of three “likelihood” values: (1) “almost certainly will be offered” (green), (2) “might be offered” (yellow), and (3) “unlikely to be offered” (red).

Second, RadGrad will represent the prerequisite structure of the ICS curriculum. This will enable RadGrad to simplify degree planning by preventing students from creating a course schedule in which courses are taken without have first taken the appropriate prerequisites.

Third, RadGrad will prevent students from “overloading” themselves during a single semester with too many ICS courses. For example, RadGrad could impose an absolute cap of four ICS courses in a single semester. RadGrad could also provide “contextual” caps: for example, no more than two “programming intensive” courses in a semester.

These three capabilities enable students, either alone or during a meeting with their advisor, to map out their entire ICS degree program.

Big Win #1: RadGrad provides ICS faculty for the first time with data on the future desirability of specific ICS courses. Traditionally, course planning is based on historical data: for example, a class was oversubscribed before, and our enrollment is increasing, so we’ll probably need even more seats in future. RadGrad replaces this “backward looking” approach with an data-driven, “forward looking” capability. Specifically, RadGrad enables us to list courses as “yellow” for future semesters, then allow students to “vote” via RadGrad for the courses they actually want, and finally decide which courses to offer based upon student-based data about their upcoming enrollment.

Professional Development: Planning. RadGrad allows students to do more than just indicate what classes they hope to take in future, it also allows them to think about what extracurricular activities they hope to engage in. This data is used for the next capability.

Post-Graduation Career: Feedback and Prediction. Our students have gone on to a wide variety of professional positions immediately after graduation. We will solicit information from our prior graduates during their first year out, as well as from high tech companies who have hired our graduates, as well as from graduate programs who have accepted our students. From all of these sources we will acquire data about the factors (courses taken, gpa, skills, accomplishments, activities) that positively influence career success (number of offers, position descriptions, acceptance into graduate school, salary). RadGrad will implement analytics based on this data to produce an “early career predictor”: what each student can expect post-graduation based upon their historical and planned degree program and professional development.

Big Win #2: RadGrad’s early career predictor will provide students for the first time with data on the future career impact of their past and future choices during their degree program. For example, they can see the impact of their GPA on their future salary. Or the impact of an honors degree on getting into graduate school. We believe that students with a high GPA across a variety of demanding courses, coupled with participation in extracurricular activities like Grey Hats, will have significantly better early career opportunities, and we hope that as we gather more and more post-graduation data, we will be able to help students see the advantages more clearly.

Big Win #3: Post-graduation early career data will also provide new insight to the ICS faculty to shape our future offerings by helping us to identify significant unmet needs in our department. We can also present outcome data from our graduates to the community (including local high tech employers) so they have a better sense of where our students go and how to more effectively compete for them.

Organization of the class

All members of the class will form a single software development team whose mission is to build the initial release of RadGrad in a single semester. Members of the class will work alone or in small groups to implement individual features of the system. Twice weekly meetings will employ Scrum style agile software development methods.

RadGrad will be deployed for ICS, but designed to support tailoring to other CS departments. I anticipate that, if successful, participation in the RadGrad project will be a very valuable addition to your professional portfolio and will provide you with singular software engineering skills and experiences.