COMS W4115 Programming Languages and Translators Spring 2021 |
Class meets Mondays and Wednesdays 5:40 - 6:55 PM Online.
Name | Office hours | Location | |
---|---|---|---|
Prof. Stephen A. Edwards | sedwards@cs.columbia.edu | see Courseworks | Online |
Wonhyuk Choi | wc2737@columbia.edu | See Courseworks | Online |
Evan Mesterhazy | etm2131@columbia.edu | See Courseworks | Online |
Hans Montero | hjm2133@columbia.edu | See Courseworks | Online |
Dipankar Niranjan | dipankar.n@columbia.edu | See Courseworks | Online |
Jianan Yao | jy3022@columbia.edu | See Courseworks | Online |
Xijiao Li | xl2950@columbia.edu | See Courseworks | Online |
Arjun Ahua | aa4664@columbia.edu | See Courseworks | Online |
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 Computer Science Theory: 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.
Date | Session | Lecture | Notes | Reading | Due |
---|---|---|---|---|---|
Mon Jan 11 | 1 1 |
Intro. to Languages (annotated) |
|
Ch 1, 2 |
|
Wed Jan 13 | 2 2 |
Language Processors (annotated) |
|
Ch. 2 |
|
Mon Jan 18 | MLK Holiday | ||||
Wed Jan 20 | 3 |
Some Outstanding Projects |
|
||
Mon Jan 25 | 4 4 |
Programming in OCaml (annotated) |
|
|
|
Wed Jan 27 | 5 |
" |
|||
Mon Feb 1 | 6 |
" |
|||
Wed Feb 3 | 7 |
" |
Proposal | ||
Mon Feb 8 | 8 8 |
Syntax and Parsing (annotated) |
|
Ch. 3, 4 |
|
Wed Feb 10 | 9 |
" |
HW1 .tar.gz file | ||
Mon Feb 15 | 10 |
" |
|||
Wed Feb 17 | 11 |
" |
|||
Mon Feb 22 | 11 |
" |
|||
Wed Feb 24 | 11 |
" |
LRM, Parser | ||
Mon Mar 1 | Spring Break | ||||
Mon Mar 8 | 11 |
" |
|||
Wed Mar 10 | 12 12 |
The MicroC Compiler (annotated) |
|
App. A |
|
Fri Mar 12 | (no lecture; turn in homework) |
HW2 p1 p2 p3 | |||
Mon Mar 15 | 16 |
MicroC contd. |
|||
Wed Mar 17 | 17 |
" |
|||
Mon Mar 22 | 18 |
" |
|||
Wed Mar 24 | 19 |
" |
Hello World | ||
Mon Mar 29 | 20 |
" |
|||
Wed Mar 31 | 21 21 |
Runtime Environments (annotated) |
|
Ch. 7 |
|
Mon Apr 5 | 22 |
" |
|||
Wed Apr 7 | 23 23 |
The Lambda Calculus (annotated) |
|
|
|
Mon Apr 12 | 24 |
" |
|||
Wed Apr 14 | 25 25 |
Review for Final Coversheet for Final |
|
|
HW3 |
Fri Apr 16 | Final Exam | ||||
Mon Apr 26 | Project Reports Due |
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.
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 |
AHOD:
AllHandsOnDeck: Card game language
(XL)
Proposal LRM Final Report Slides Project Files Caitlyn Chen, Tiffeny Chen, Jang Hun Choi, Mara Dimofte, and Christi Kim |
Arbol:
Tree language
(AA)
Proposal LRM Final Report Slides Project Files Andrea McCormick, Anthony Nascimento, and Derek Zhang |
BLAStoff:
Matrix manipulation language
(DN)
Proposal LRM Final Report Slides Project Files Jacob Fisher, Michael Jan, Jason Kao, and Katon Luaces |
C-flat:
Computer Music Language
(WC)
Proposal LRM Final Report Slides Project Files Jiayi Chen, Isabella Cho, Katie Kim, and Jasmine Valera |
C-net:
Language for File I/O and Networking
(EM)
Proposal LRM Final Report Slides Project Files Rediet Bekele, Kidus Mulu, Kingsley Neequaye, William Oseghare, and Bruk Zewdie |
CGC:
C with garbage collection
(EM)
Proposal LRM Final Report Slides Project Files Lieyang Chen, Tianze Huang, Zhuoxuan Li, and Fanhao Zeng |
CLL:
ConLangLang
(SE)
Final Report Slides Project Files Annalise Mariottini |
CaRdY:
Card Game Language
(XL)
Proposal LRM Final Report Slides Project Files Liseidy Bueno, Kenya Plenty, Pazit Schrecker, Lindsey Wales, and Katrina Zhao |
CompArt:
Drawing Language
(WC)
Proposal LRM Final Report Slides Project Files Aaron Priven, Julia Reichel, Asher Willner, and Evan Zauderer |
Digo:
Distributed Go-like Language
(AA)
Proposal LRM Final Report Slides Project Files Yufan Chen, Sida Huang, Hanxiao Lu, and Wenqian Yan |
E-CATZ:
Music Language
(WC)
Proposal LRM Final Report Slides Project Files Chianna Cohen, Ethiopia Mengesha, Annie Sui, and Timothy Vallancourt |
FFBB:
Imperative Language
(JY)
Proposal LRM Final Report Slides Project Files Bowen Chen, Xiaosheng Chen, Joseph Yang, and Jianan Yao |
GASSP:
OO Language
(JY)
Proposal LRM Final Report Slides Project Files Adam Fowler, Swan Htet, Patrycja Przewoznik, Samuel Weissmann, and Yuanxin Yang |
GRACL:
Parallel Graph Algorithm Language
(AA)
Proposal LRM Final Report Slides Project Files Hadley Callaway, Pelin Cetin, Eilam Lehrman, Defne Sonmez, and Maya Venkatraman |
GWiz:
GPS Exchange Format (GPX) Langauge
(EM)
Proposal LRM Final Report Slides Project Files Katherine Duff, Ashley Kim, Elisa Luo, and Rebecca Yao |
Go--:
C-like Language with Concurrency
(XL)
Proposal LRM Final Report Slides Project Files Chen Chen, Yuyan Ke, Yang Li, and Arya Zhao |
Graphene:
Graph Algorithm Language
(AA)
Proposal LRM Final Report Slides Project Files Vasileios Kopanas, Ashar Nadeem, and Matthew Sanchez |
Improv:
Improvisational Music Language
(HM)
Proposal LRM Final Report Slides Project Files Joshua Choi, Natalia Dorogi, Emily Li, and Alice Zhang |
JQER:
Python-like language for trees
(SE)
Proposal LRM Final Report Slides Project Files Qianjun Chen, Roger Lu, Eurey Noguchi, and Jiaxuan Pan |
JavaLite:
A Java-like Language
(JY)
Proposal LRM Final Report Slides Project Files Frances Cao, Hongfei Chen, Yen-Lin Chen, and Mateo Maturana |
Konig:
Graph Algorithm Language
(AA)
Proposal LRM Final Report Slides Project Files Delilah Beverly, Lord Crawford, and Matteo Sandrin |
Lingo:
Functional Language with Linear Types
(SE)
Proposal LRM Final Report Slides Project Files Benjamin Flin, Jay Karp, and Sophia Kolak |
Lucifer:
2D Video Game Language
(WC)
Proposal LRM Final Report Slides Project Files Robert Becker, Cherry Chu, Michael Fagan, and Elliott Morelli |
MM:
Matrix Mania
(DN)
Proposal LRM Final Report Slides Project Files Cindy Espinosa, Desu Imudia, Diego Prado, Sophie Reese-Wirpsa, and Emily Ringel |
Matcat:
Linear Algebra Language
(XL)
Proposal LRM Final Report Slides Project Files Davit Barblishvili, Andreas Cheng, Mariam Khmaladze, and James Ryan |
Meowlang:
LOLCODE-like OO language
(HM)
Proposal LRM Final Report Slides Project Files Carolyn Chen, Megan Frenkel, Michelle Lin, and Lauren Pham |
PRIME:
Cryptography Language
(SE)
Proposal LRM Final Report Slides Project Files Pedro Barbosa Teixeira Santos, Alexander Liebeskind, Nikhil Mehta, and Thomas Tran |
PartialC:
C-like language
(EM)
Proposal LRM Final Report Slides Project Files MINGJIE LAO, and JIAYING SONG |
Photon:
Image Editing Language
(JY)
Proposal LRM Final Report Slides Project Files Franky Campuzano, Akira Higaki, CALUM MCCARTAN, and Phu Pham |
Pixel:
Image Processing Language
(JY)
Proposal LRM Final Report Slides Project Files Alex Anthony Cortes-Ose, Dillon Davis, Jessica Kim, and Jessica Peng |
Poicent:
C-style points in MicroC
(SE)
Proposal Final Report Slides Project Files Shengtan Mao |
PolyWiz:
Symbolic Math Language
(HM)
Proposal LRM Final Report Slides Project Files Tamjeed Azad, Rose Chrin, Max Helman, Aditya Kankariya, and Anthony Pitts |
PyThon:
Python-like Language
(XL)
Proposal LRM Final Report Slides Project Files Gabriel Clinger, George DiNicola, Daniel Hanoch, and Cameron Miller |
Python++:
Python-like Language
(XL)
Proposal LRM Final Report Slides Project Files Nathan Cuevas, Robert Kim, Nikhil Kovelamudi, and David Steiner |
QWEB:
Website Language
(HM)
Proposal LRM Final Report Slides Project Files Kamrul Hossain, Tamanna Hussain, Ramisa Murshed, and Xabier Peralta |
RJEC:
Go-like Really Just Elementary Concurrency
(AA)
Proposal LRM Final Report Slides Project Files Riya Chakraborty, Justin Chen, Caroline HOANG, and Yuanyuting Wang |
Racontr:
Text Adventure Game Language
(SE)
Proposal LRM Final Report Slides Project Files Saumya Agarwal, Xinye Jiang, Janelle Ponnor, Shuyu Ye, and Morgan Zee |
Reptile:
Geometric Figure Drawing Language
(JY)
Proposal LRM Final Report Slides Project Files Aileen Cano, Hariti Patel, Aviva Weinbaum, and Lindsey Weiskopf |
SCIC:
Scientific Calculation Language
(EM)
Proposal LRM Final Report Slides Project Files Zhengyuan Dong, ZHENGYI LI, and Yucen Sun |
SOS:
Graphics Language
(WC)
Proposal LRM Final Report Slides Project Files Terric Abella, Sitong Feng, G Pershing, and Sheron Wang |
Seaflow:
Reactive Programming Language
(EM)
Proposal LRM Final Report Slides Project Files Rohan Arora, Junyang Jin, Sanlok Lee, and Sarah Seidman |
TiMRS:
Timers, Made Readable and Simple
(EM)
Proposal LRM Final Report Slides Project Files Jeffrey Kline, Faisal Rahman, Daniel Rindone, and Eric Webb |
Viper:
Python-like Language
(HM)
Proposal LRM Final Report Slides Project Files Mustafa Eyceoz, Trey Gilliland, Thomas Kaufman-Gomez, Raghav Mecheri, and Matthew Ottomano Jr. |
XIRTAM:
Matrix Manipulation Language
(DN)
Proposal LRM Final Report Slides Project Files Lior Attias, Andrew Gorovoy, Bailey Hwa, Shida Jing, and Annie Wang |
YAGL:
Yet Another Graph Language
(SE)
Proposal LRM Final Report Slides Project Files Adam Carpentieri, Jack Hurley, James Mastran, and Shvetank Prakash |
YAMML:
Yet Another Matrix Manipulation Language
(DN)
Proposal LRM Final Report Slides Project Files Bill Chen, Doria Chen, Kent Hall, James Xu Jr., and Janet Zhang |
bugsy:
2D Animation Language
(HM)
Proposal LRM Final Report Slides Project Files Jason Cardinale, Sofia Sanchez-Zarate, Benjamin Snyder, Evan Tilley, and Michael Winitch |
nodable:
Graph Language
(SE)
Proposal LRM Final Report Slides Project Files Ajita Bala, Ariel Goldman, Naviya Makhija, and Karen Shi |
red-pandas:
Matrix Manipulation Language
(DN)
Proposal LRM Final Report Slides Project Files Amina Assal, Ivan Barral, Rafail Khalilov, and Myric Lehner |
My favorites
40 % Project |
40 % Final |
20 % 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.