The Capstone course (ICS 496) provides seniors with an opportunity to propose, plan, execute, and present a software development project. In this course, students will put into practice the skills they have learned during their educational journey in the ICS department.

Capstone is optional for ICS students who entered the major before Fall 2020. Students entering the BS CS (General) major in Fall 2020 and after are required to complete a capstone project in their senior year. Students in the Security Science track or Data Science track are not required to take the capstone course.

Capstone projects are preferably team projects, but at this time (due to COVID) individual projects may also be pursued. Projects can be self-generated or chosen from opportunities provided by faculty mentors. Students may also receive credit for a capstone project if they are engaged in a software development effort as part of an internship or other engagement with a company.

Students engaged in the capstone project are expected to develop and present a project plan with tasks, dates and milestones; provide periodic progress reports; prepare a summary video and poster; and ultimately participate in a presentation day that is open to the ICS community and interested community members. The capstone is largely student-driven. You must demonstrate that you can plan and guide a project to completion.

How to get Started for Fall 2021

The CRN for the Capstone course (ICS 496) does not appear on the registration system. Upon approval of your project, you will receive a CRN so that you can register. You should work with a faculty member to develop your project. (The Capstone Administrators, Scott Robertson and Guylaine Poisson, can help you find a faculty mentor if necessary.)

You should line up a faculty mentor and register for the course before the beginning of the Spring semester.

  • If you already have a project idea: Contact a faculty member to discuss your idea. Choose a faculty member who has similar interests. It would be best to have a small group (2-4 people), but individuals are welcome to pitch their ideas as well. You may propose a project that you are already working on, or plan to work on, with a faculty mentor.
  • If you don’t have a project idea yet: Look at the ideas below and contact the faculty member directly about doing a Capstone Project.

Capstone ideas from faculty members:

  1.  ML as a Service: implementing a back-end to facilitate access to a wide-array of pre-trained deep learning models. This project consists of implementing a serverless architecture to provide deep learning models as-a-service (FaaS) in an academic setting. This project, which is similar in scope to Amazon’s and Google’s Machine Learning services, will use free academic computational resources such as the FuncX and Tapis NSF funded projects. The set of Machine Learning models provisioned through this platform will range from object detection and tracking to document analysis, anomaly detection, and time-series modeling.  Ideal participants should know the Python programming language. While ML expertise is not required, students interested in this project should have taken at least one machine learning course (preferably ICS 435).  The framework developed in this project will be integrated into the NSF-funded SAGE3 platform and will be potentially used by thousands of researchers, professionals, and students internationally. Faculty sponsor: Mahdi Belcaid
  2. Jupyter Notebook Widgets in Education: Developing a JavaScript (React) collection of widgets to gather user learning insight. This project consists of building a suite of JavaScript widgets that can be embedded in online notebooks to instrument student learning. This project is divided into two components, student-facing functionality, which will provide valuable mechanisms of immediate feedback to students, and instructor-facing functionality, which will provide the instructor with a comprehensive snapshot of both learnings progress and the pedagogical value of the material. The widgets will be developed as React web-components and the interaction data will be aggregated in a NoSQL database and visualized using popular JavaScript viz. libraries. This is a good project for students interested in user analytics and web technologies. Faculty sponsor: Mahdi Belcaid
  3. RadGrad: Developing Awesome Computer Scientists, One Graduate at a Time:  RadGrad is an NSF-funded project involving the development and evaluation of technology to re-envision the goals of the undergraduate STEM degree experience, with the hope of increasing engagement and diversity. We are currently reimplementing the RadGrad platform using Meteor and Typescript to improve its efficiency, robustness, tailorability, and maintainability. This project requires completion of ICS 314, and an interest in developing your software engineering skills on a moderate scale codebase (~60,000 LOC). Faculty sponsor: Philip Johnson.
  4. InternAloha: Helping local computer science students find internships, island style:  A summer internship doing real-world software development is increasingly necessary for successful job (or graduate school) placement upon graduation. However, it’s hard to find a good internship: there are too many online sites to check, the offerings are posted at unpredictable times, and it’s difficult to match the internship to your current skills and future goals. InternAloha is a site custom-designed for local Hawaii computer science undergraduates which scrapes dozens of online sites for listings appropriate to computer science, combines this with private information about local internships, and then provides recommendations to UH computer science students based on the current skills, future interests, and feedback from past students on internship programs. InternAloha will not only help you get an internship, but also help you understand which courses and local opportunities will best prepare you for an internship in future years.” Faculty sponsor: Philip Johnson.
  5. EduWRENCH: A site for interactice parallel and distributed computing education: This project consists in turning EduWRENCH ( into a full-feature, professional, Web site and application. The NSF-funded EduWRENCH project aims at developing innovative pedagogic material for teaching parallel and distributed computing topics to university students, from freshmen to graduate students. The key innovation is that the material includes interactive, simulation-driven activities that students can invoke in the browser to learn concepts in a hands-on manner. Many pedagogic modules and activities already exist on the EduWRENCH site, and new ones are continuously being integrated. The EduWRENCH site is implemented with Gatsby/React. While the site is perfectly usable (and used!), it is not full-feature. For instance: while users log in with a Google account, they do not have an account that tracks their progress or completion of the activities/exercises; practice questions allow users to merely reveal answers, rather than forcing them to come up with answers; some activities are stand-alone in Docker containers but should be fully integrated into the site. The overall look-and-feel of the site could be vastly improved. This project would consist in: (i) analyzing the current site and its capabilities, (ii) proposing a number of enhancements, (iii) designing and implementing these enhancement in development branches, (iv) merging these enhancements into the master branch using pull requests when completed. Ideal participants would have experience in web development, JavaScript, React, and Gatsby. Some interest in fields such as parallel distributed computing and high performance computing is desirable but not required. The EduWRENCH project has an active development community that involve students and researchers at the UHM and at USC.  Faculty Sponsor: Henri Casanova.