Stephen A. Edwards Columbia University Crown
  COMS W4115
Programming Languages and Translators
The Project: Fall 2004
Home Project
 Overview
  The focus of 4115 will be the design and implementation of a little language. You will divide into teams and design the goals, syntax, and semantics of your language, and implement a compiler for your language.
  Exception: CVN students will do the project individually.
 Resources
  pdf A Two-page Introduction to ANTLR
  An ANTLR example illustrating how to display ASTs. Run SimpLexer.g through ANTLR, compile the generated .java files along with Main.java and run "java Main < test.txt" to both print the AST in a human-readable way and display it in a window.
  The ANTLR homepage
  pdf A two-page introduction to the CVS version control system. I strongly suggest you keep your project under some version control system.
  pdf A sample final report by Chris Conway, Cheng-Hong Li, and Megan Pengelly. It includes the white paper, tutorial, language reference manual, project plan, architectural design, and testing plan. It does not include the lessons learned and code listings sections, although it should.
  Source for the very successful MX language project from Spring 2003
  Other projects from Spring 2003
  Other projects from Fall 2003
 White Papers
  pdf The Java white paper from Sun Microsystems
  C# Introduction and Overview
 Language Reference Manuals
  pdf Dennis M. Ritchie, C Reference Manual
  Kernighan & Ritchie, The C Programming Language
  The C Language Reference Manual (DEC)
  pdf The C Language Reference Manual (SGI)
  The C Language Reference Manual (Microsoft)
  Stroustrup, The C++ Programming Language
  The C++ Language Reference (Microsoft)
  pdf The Java Language Specification
  pdf The C# Language Specification
  Aho, Kernighan, and Weinberger, The AWK Programming Language
 Final Report
 
  1. Introduction
    • Include your language white paper.
  2. Language Tutorial
    • A short explanation telling a novice how to use your language.
  3. Language Manual
    • Include your language reference manual.
  4. Project Plan
    • Identify process used for planning, specification, development and testing
    • Include a one-page programming style guide used by the team
    • 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
  5. Architectural Design
    • Give block diagram showing the major components of your translator
    • Describe the interfaces between the components
    • State who implemented each component
  6. Test Plan
    • Show two or three representative source language programs along with the target language program generated for each
      • Show the test suites used to test your translator
        Explain why and how these test cases were chosen
        What kind of automation was used in testing
        State who did what
  7. Lessons Learned
    • Each team member should explain his or her most important learning
    • Include any advice the team has for future teams
  8. Appendix
    • Attach a complete code listing of your translator with each module signed by its author
 Projects
Sets: Set manipulation language
PDF fileWhitepaper   

Haim Cohen   
CAT: Context-free Attributed Translator Language
PDF fileWhitepaper   

Douglass James   
Osdm: Ordered Set Data Manipulation Language
PDF fileWhitepaper   

Yong Feng   
Onefish: Cute, Cuddly language for Children
PDF fileWhitepaper   

Joseph Fortuna   
VISGEO: Geometric object manipulation language
PDF fileWhitepaper   

Sumithra Gomadam    Edan Harel   
PIPE:
PDF fileWhitepaper   

Pierre Menard   
Diddle: Data Definition Language for Clinical Trials Electronic Forms Systems
PDF fileWhitepaper   

Andrew Trenk   
MLB: Major League Baseball Language
PDF fileWhitepaper   

Chia-yen Wu   

Copyright © 2006 Stephen A. Edwards Updated Sat Jun 10 19:07:39 EDT 2006 All Rights reserved