COMS W4115 Programming Languages and Translators

Spring 2019

Final Project

It all comes down to this! For your final compiler deliverable, you'll be submitting 3 things. If your team is named "XYZ", please submit:

  • XYZ.pdf, a final report containing the content described below.
  • XYZ.zip, a zip file of your entire project.
  • XYZ-presentation.pdf, a PDF version of your final presentation slides, if applicable.

Due date

May 20th via coursework

Presentation

  • Location: 515 CSB or via Skype (especially for CVN students)

  • Instructions:

    • 13 mins presentation + 2 mins questions
    • pick any empty slots (first come first served) on the shared google sheet by filling in the team name and team members (name and uni)
    • if you plan to present via skype, please fill in your skype id as well

Project Report

The project report must have the following sections included:

  • Introduction

    • Explain the purpose and motivation of your language, its use cases, and any necessary background that I'll need to understand the point of your language.
  • Language Tutorial

    • A short explanation telling a novice how to use your language (consider this an informal version of a Language Reference Manual).
  • Language Manual

    • Include your language reference manual. Make sure it's been updated if you've made any changes since the first LRM deliverable was turned in.
  • Project Plan

    • Identify process used for planning, specification, and development
    • Include a one-page programming style guide used by the team (if one was used at all)
    • Show your project timeline
    • Identify roles and responsibilities of each team member
    • Describe the software development environment used (tools and languages)
    • Include your project log
  • Architectural Design

    • Give block diagram showing the major components of your translator
    • Describe the interfaces between the components
    • State who implemented each component
  • Test Plan

    • Show two or three representative source language programs along with the target language program generated for each
    • Show the test scripts used to test your translator
    • What kind of automation was used in testing
    • State who did what
  • Lessons Learned

    • Each team member should explain his or her most important takeaways from working on this project
    • Include any advice the team has for future teams
  • Appendix

    • Attach a complete code listing of your translator with each module signed by its author
    • Do not include any automatically generated files, only the sources.

Grading

Your final deliverables will be graded with a holistic approach, as opposed to the rubric-based grading that has been applied to previous deliverables. I'll be looking for indications that your group actually learned something about compilers and language design via this project, and that your compiler can actually handle a collection of "interesting'' (i.e., non-MicroC) programs.

Acknowledgment

This final project rubric is designed by Richard Townsend former TA for COMS W4115 Programming Languages and Translators, Columbia University.