Semester Project


This semester, students will work in teams to produce an implementation of a web application that can be used to support the application process of the Discovery Learning Apprenticeship Program of the College of Engineering and Applied Science (CEAS) at the University of Colorado Boulder.

The Discovery Learning Apprenticeship (DLA) program is one that allows undergraduate students to apply to work on a research project with a CEAS faculty member. Faculty members submit projects to the DLA program and the requirements that they want to impose on that project (such as the expertise the student must have, their overall GPA, etc.). Students then apply to be in the program and select up to five projects that they would like to work on. Staff members of the College then work to match students with projects attempting to maximize the number of successful pairings within a hard constraint of the number of projects that can be supported each year.

There is an existing software system that helps with the application process. URLs to the existing system appear on the class's GitHub repo. Unfortunately, the existing system is legacy code that is difficult to maintain and the original (student) developer is no longer at CU and no longer able to provide support for the system. As such, the goal of the semester project is to design and implement a new web application that can take its place. Key requirements include:

  • extensibility: if a new field has to be added to a form, it should be easy to make that change as well as to update the underlying data store
  • ease of deployment: it should be straightforward to deploy the system; the number of dependencies (web frameworks, databases, etc.) should be kept to a minimum
  • new features: the existing system can accept input from faculty and students and generate lists of available projects; the matching process is currently performed manually via a database export to Excel. The new system should allow faculty and students to update/edit their projects/applications before submitting them and should provide new views that allow CEAS staff to perform the matching process without the need of external tools and should attempt to automate the matching process as much as possible.


Student teams will consist of three to five students from our class working to produce a software prototype of the DLA system using an agile software life cycle. The overall process will be driven by homework assignments, that will appear on a weekend, last two weeks, and will be due on the Friday of the second week.

Teams are allowed to use any technology platform that they would like to use to develop the web application, subject to the requirements above. I would prefer to have technologies that can be deployed on Unix/Linux platforms either on real hardware, Docker containers, or in the cloud. (Note: The essays portion of this class is a good way to force yourself to explore technologies that might be useful for your project.)

While teams will have a lot of freedom on the implementation side of the fence, teams will be required to conform to a suite of process-related requirements. In particular:

  • Each team will have a GitHub repository where all code and documentation will be stored. Teams will create documentation for their project using GitHub's wiki feature. Their repository will have a file located at the root of the repository that will contain the installation instructions for the system.
  • Each team will be required to use a system that allows for the tracking of user stories and tasks; I recommend using Trello for this, but that is not a requirement; if you would like to use a different system for this, that is okay.
  • Each team will produce diagrams that track their progress towards a release and during each two-week iteration. These diagrams can appear within the wiki of the GitHub repo.
  • Each team member and Prof. Anderson will be a collaborator on the GitHub repo and the story board software whatever that may be.
  • Finally, each team must determine how they are going to deploy their prototype such that it can be reviewed by Prof. Anderson at the end of each iteration. For instance, the Department of Computer Science provides some resources for student projects via the Computer Science Education Lab; this project would easily fit within the constraints of the free tier of Amazon's Web Services or within the free trial constraints of Google Compute Engine. As with any agile software development project, I will want you to tackle the issue of deployment up front.


The semester project will begin in Week 6 and consist of five two-week iterations. Details will be provided via Homework assignments.

© University of Colorado, Boulder 2016