COMS W4115 Programming Languages and Translators Fall 2018 |
Class meets Mondays and Wednesdays 4:10 - 5:25 PM 451 CSB.
Name | Office hours | Location | |
---|---|---|---|
Prof. Stephen A. Edwards | sedwards@cs.columbia.edu | see my home page | 462 CSB |
John Hui | jzh2106@columbia.edu | T 3:30-5:30 | 487 CSB |
Jennifer Bi | jb3495@columbia.edu | M 2-4 | 487 CSB |
Mark Mazel | mm4764@columbia.edu | Th 5-7 | 487 CSB |
Lauren Arnett | lba2138@columbia.edu | M 10-12 | 487 CSB |
Dean Deng | dd2563@columbia.edu | Th 3-5 | 487 CSB |
Justin Wong | jw3354@columbia.edu | T 12-2 | 487 CSB |
The goal of PLT is to teach you both about the structure of computer programming languages and the basics of implementing compilers for such languages.
The course will focus mostly on traditional imperative and object-oriented languages, but will also cover functional and logic programming, concurrency issues, and some aspects of scripting languages. Homework and tests will cover language issues. You will design and implement a language of your own design in a semester-long team project.
While few of you will ever implement a full commercial compiler professionally, the concepts, techniques, and tools you will learn have broad application.
COMS W3157 Advanced Programming: You will be dividing into teams to build a compiler, so you need to have some idea how to keep this under control. Quick test: you need to know about Makefiles and source code control systems.
COMS W3261 Computability and Models of Computation: You will need an understanding of formal languages and grammar to build the parser and lexical analyzer. Quick test: you must know about regular expressions, context-free grammars, and NFAs.
Alfred V. Aho, Monica Lam, Ravi Sethi, and Jeffrey D. Ullman. |
Michael L. Scott. |
|
Andrew W. Appel. |
|
Lawrence C. Paulson |
|
Steven S. Muchnick |
The focus of 4115 is 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.
This is a critical part of the project and will be a substantial fraction of the grade.
Include the following sections:
Dennis M. Ritchie, C Reference Manual | |
Kernighan & Ritchie, The C Programming Language | |
The C Language Reference Manual (SGI) | |
Stroustrup, The C++ Programming Language | |
The Java Language Specification | |
The C# Language Specification |
AP++:
List language
(MM)
Proposal LRM Final Report Project Files Amit Patel |
BitTwiddler:
A language for binary data parsers
(SE)
Proposal LRM Final Report Project Files Bruno Martins |
Casper:
MicroC with strings
(SE)
Proposal LRM Final Report Project Files Michael Makris |
Coral:
Python-like language with gradual typing
(LA)
Proposal LRM Final Report Slides Project Files Jacob Austin, Matthew Bowers, Rebecca Cawkwell, and Sanford Miller |
FIRE:
Fire Input Reinterpretation Language
(JH)
Proposal LRM Final Report Project Files Ayer Chan, Jason Konikow, Graham Patterson, Frank Spano, and Christopher Thomas |
Fli-O:
File I/O language
(JH)
Proposal LRM Final Report Slides Project Files Matthew Chan, Gideon Cheruiyot, Justin Gross, and Eyob Tefera |
GaE:
Graphs Ain't Easy
(DD)
Proposal LRM Final Report Slides Project Files Andrew Jones, Samara Nebel, and Kevin Zeng |
Grape:
Graph Manipulation Language
(DD)
Proposal LRM Final Report Slides Project Files James Kolsby, Nick Krasnoff, Po-Yu Wu, and Hyun Bin Yoo |
Graphiti:
Graph Language
(DD)
Proposal LRM Final Report UNRECOGNIZED FILETYPEProject Files Emily Hao, Sydney Lee, Michal Porubcin, Andrew Quijano, and Alice Thum |
Hippograph:
High-Performance Parsing of Graphs
(JB)
Proposal LRM Final Report Slides Project Files Benjamin Lewinter, Irina Mateescu, Harry Smith, and Yasunari Watanabe |
IRIs:
Workflow Description Language
(JH)
Proposal LRM Final Report Slides Project Files Hanzhou Gu, Xuheng Li, Shulan TANG, and Pinxi Tai |
MATRX:
Matrix Language
(DD)
Proposal LRM Final Report Slides Project Files Alana Anderson, Pearce Kieser, Katherine Pfleger, Julia Sheth, and Nicholas Sparks |
MMM:
Image Matrix Manipulation Language
(LA)
Proposal LRM Final Report Project Files Shenghao Jiang, Yixiong Ren, and Shikun Wang |
MathLight:
Matrix manipulation language
(JB)
Proposal LRM Final Report Slides Project Files Mingye Chen, Chunli Fu, Yuli Han, and Boya Song |
ProCSV:
CSV File Processing Languages
(JW)
Proposal LRM Final Report Slides Project Files Tahiya Chowdhury, Tabara Nosiba, and Tahsina Saosun |
PyLit:
Python-like language
(JW)
Proposal LRM Final Report Project Files Ryan Loprete |
SCoLang:
Contract Fulfillment Language
(JB)
Proposal LRM Final Report Slides Project Files Sambhav Anand, Jackson Chen, Sushanth Raman, Varun Varahabhotla, and Kanishk Vashisht |
SOSL:
Set Operation Simplification Language
(LA)
Proposal LRM Final Report Slides Project Files Ryan Chun, Garrison Grogan, Ryan Koning, and Trisha Maniar |
SSOL:
Simple Shape Oriented Language
(MM)
Proposal LRM Final Report Slides Project Files Jeevan Farias, Daniel Mesko, and Madeleine Tipp |
Shoo:
Imperative and functional language
(JW)
Proposal LRM Final Report Slides Project Files Claire Adams, Samurdha Jayasinghe Mudi, Cindy Le, and Crystal Ren |
Tree++:
Tree Manipulation Language
(JW)
Proposal LRM Final Report Slides Project Files Allison Costa, Laura Matos, Jacob Penn, and Laura Smerling |
Typescript-on-LLVM:
Statically-typed scripting without the browser
(SE)
Proposal LRM Final Report Project Files Ratheet Pandya |
Uni-Corn:
Hardware Description Language
(SE)
Proposal LRM Final Report Slides Project Files Maryam Aly, Adiza Awwal, David Lalo, Dan Sendik, and Gael Zendejas |
VSCOde:
Image Manipulation
(MM)
Proposal LRM Final Report Slides Project Files Jessica Cheng, Anna Lu, Hana Mizuta, Spencer Yen, and Kenneth Yuan |
ZEN:
Graphics Language
(MM)
Proposal LRM Final Report Slides Project Files Zoe Gordin, Eleanor Murguia, and Nadia Saleh |
bawk:
bad awk
(JH)
Proposal LRM Final Report Slides Project Files Ashley An, Christine Hsu, Mel Sawyer, and Victoria Yang |
text++:
PDF Generation Language
(SE)
Proposal LRM Final Report Slides Project Files Joi Anderson, Maria Javier, and Klarizsa Padilla |
My favorites
40 % Project |
20 % Midterm |
30 % Final |
10 % Homework |
You will collaborate with your own small team on the programming project, but you may not collaborate with others on homeworks. Teams may share ideas about the programming assignments, but not code. Any two teams found submitting similar code will receive zero credit for the whole assignment, and repeat offenses will be referred to the dean. See the Columbia CS department academic policies for more details.