Graduate students (and those taking the course for four credit hours) must complete a project for their fourth credit hour.
You may work alone or in groups of two to three people. You should expect about two MP’s worth of work for each person involved in the project. You may do any of the following:
Find a research paper published in ACM or IEEE that details a programming language concept, and implement it. (One paper per person in the group.)
Pick a published research paper on a programming language topic (some may be found here), or at the qual reading list and write a two to four page summary, and/or prepare a twenty minute presentation.
Deveop some content or a tool to improve the quality of CS 421.
Develop a project idea of your own, based on previous experience or research interests.
Project Proposal #
Write a proposal at least half page long that details the scope of your project and an implementation schedule. If you are basing your project on a paper, cite the paper and provide a URL to a PDF version. Be sure to include a description of the target language you want to work on, the concept you want to implement, and an outline of how you would like to to demonstrate your project at the end of the semester. Also, give a clear outline of each individual’s responsibility in the project.
You should submit your proposal electronically, in plain text form contained in the body of an e-mail message (no attachments please). It should be not more than two pages long. Feel free to ask for an appointment to discuss the project proposal with me before the proposals are due.
Final submission #
By default, project demonstrations and paper presentations will be the last week of class. This can be rescheduled if necessary. To avoid an incomplete in this course, you should present your final submission by the end of finals week.
Project Reports #
At the end of the project, you need to turn in two things:
projectdirectory in your repository containing your source code, tests, and Makefile; and
- a project report, as a PDF file, containing the information below. In addition to the work turned in, each group will give a brief presentation and demo of their code.
You may create a separate git repository if you prefer that.
Your final report should have 4 sections:
Describe the motivation, goals, and broad accomplishments of your project in general terms.
A brief description of the important aspects of your implementation, in terms of (a) the major tasks or capabilities of your code; (b) components of the code; (d) status of the project – what works well, what works partially, and and what is not implemented at all. You MUST compare these with your original proposed goals in the project proposal.
Coming up with appropriate tests is one of the most important part of good software development. Your tests should include unit tests, feature tests, and larger test codes. Give a short description of the tests used, performance results if appropriate (e.g., memory consumption for garbage collection) etc. Be sure to explain how these tests exercise the concept(s) you’ve implemented.
A listing of your code. The code should be documented thoroughly and clearly. You don’t need to comment every single line or even every single function. Instead, focus on the central functions and data structures in your implementation, and document them well.
Project Demo #
Demos are given the last week of class. Contact me for a specific time slot for your presentation. During this time, your group will make a brief presentation of your work and then give a demo of your project.
This project outline based heavily on Elsa Gunter’s CS 421 website.