CS 345H: Programming Languages (Honors) Spring 2024

Course Project

Students registered for CS 386L (the graduate-level version of the course) are required to complete a course project. The project is intentionally open-ended and is an opportunity to explore something interesting in the realm of programming languages, broadly construed.

Ideas

I think programming languages is a very broad topic, touching many fields of computer science, and so we'll take a similarly broad approach to defining what's in scope for the course project. Here are a few suggested directions to consider (these are by no means exhaustive):

Basically, the goal is to either code, model, or write something that piques your interest and applies the ideas from this class.

Milestones

There are two milestones for the project, both submitted via Canvas:

  1. Submit a short project proposal (1–2 pages, plus references) by February 22 at 6pm CT. The proposal should identify your group members (if applicable), outline what you intend to do, sketch how you intend to do it, estimate how much work it will take, and describe why it's relevant to programming languages (if it's not obvious). We'll use the proposal as an opportunity to give you feedback on your project direction, making sure it's in scope for the course and an appropriate size for the semester.
  2. Submit a final project report (4–6 pages, plus references) by April 25 at 6pm CT. The final report should describe the problem you tried to solve, how you solved it, any results or data you gathered, and any future directions for the work. Think of the project report as writing a short research paper that you could submit to a workshop. We'll grade the final project report based on the ambition of the proposed project, the results achieved, and the quality of the report.

Group projects

You may complete the course project alone or in a group of up to 3 students. Larger groups should expect to propose and complete commensurately larger projects. As part of the project proposal, we'll give feedback on whether the scope of your project is appropriate for the group size and length of the semester. All group members will receive the same grade for the project, except in exceptional circumstances.

Redeemable option for CS 345H

Students registered for CS 345H (the undergraduate version of this course) can choose to complete the course project on a redeemable basis. This means we'll compute your final grade with both the 345H and 386L grading scales and you will receive whichever grade is higher. In other words, there's no risk involved in choosing to do the course project—although it will still be a lot of work!—so we encourage you to give it a try if you're interested in doing something cool with programming languages. It's fine for students to form groups across both variants of the course. You cannot opt into the course project after the due date for project proposals has passed.

Please don't interpret this redeemable option as license to flake out on a group project. In circumstances where group members haven't contributed fairly to a project, we reserve the right to deny you the redeemable option (offering only the grading scale that includes the project) and/or to assign different project grades to members of the same group.