![]() |
![]() |
|
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![]() ![]() ![]() |
|||
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 |
![]() ![]() |
|
![]() |
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)
![]() ![]() ![]() ![]() ![]() Caitlyn Chen, Tiffeny Chen, Jang Hun Choi, Mara Dimofte, and Christi Kim |
Arbol:
Tree language
(AA)
![]() ![]() ![]() ![]() ![]() Andrea McCormick, Anthony Nascimento, and Derek Zhang |
BLAStoff:
Matrix manipulation language
(DN)
![]() ![]() ![]() ![]() ![]() Jacob Fisher, Michael Jan, Jason Kao, and Katon Luaces |
C-flat:
Computer Music Language
(WC)
![]() ![]() ![]() ![]() ![]() Jiayi Chen, Isabella Cho, Katie Kim, and Jasmine Valera |
C-net:
Language for File I/O and Networking
(EM)
![]() ![]() ![]() ![]() ![]() ![]() Rediet Bekele, Kidus Mulu, Kingsley Neequaye, William Oseghare, and Bruk Zewdie |
CGC:
C with garbage collection
(EM)
![]() ![]() ![]() ![]() ![]() Lieyang Chen, Tianze Huang, Zhuoxuan Li, and Fanhao Zeng |
CLL:
ConLangLang
(SE)
![]() ![]() ![]() Annalise Mariottini |
CaRdY:
Card Game Language
(XL)
![]() ![]() ![]() ![]() ![]() Liseidy Bueno, Kenya Plenty, Pazit Schrecker, Lindsey Wales, and Katrina Zhao |
CompArt:
Drawing Language
(WC)
![]() ![]() ![]() ![]() ![]() Aaron Priven, Julia Reichel, Asher Willner, and Evan Zauderer |
Digo:
Distributed Go-like Language
(AA)
![]() ![]() ![]() ![]() ![]() ![]() Yufan Chen, Sida Huang, Hanxiao Lu, and Wenqian Yan |
E-CATZ:
Music Language
(WC)
![]() ![]() ![]() ![]() ![]() Chianna Cohen, Ethiopia Mengesha, Annie Sui, and Timothy Vallancourt |
FFBB:
Imperative Language
(JY)
![]() ![]() ![]() ![]() ![]() Bowen Chen, Xiaosheng Chen, Joseph Yang, and Jianan Yao |
GASSP:
OO Language
(JY)
![]() ![]() ![]() ![]() ![]() Adam Fowler, Swan Htet, Patrycja Przewoznik, Samuel Weissmann, and Yuanxin Yang |
GRACL:
Parallel Graph Algorithm Language
(AA)
![]() ![]() ![]() ![]() ![]() Hadley Callaway, Pelin Cetin, Eilam Lehrman, Defne Sonmez, and Maya Venkatraman |
GWiz:
GPS Exchange Format (GPX) Langauge
(EM)
![]() ![]() ![]() ![]() ![]() Katherine Duff, Ashley Kim, Elisa Luo, and Rebecca Yao |
Go--:
C-like Language with Concurrency
(XL)
![]() ![]() ![]() ![]() ![]() Chen Chen, Yuyan Ke, Yang Li, and Arya Zhao |
Graphene:
Graph Algorithm Language
(AA)
![]() ![]() ![]() ![]() ![]() Vasileios Kopanas, Ashar Nadeem, and Matthew Sanchez |
Improv:
Improvisational Music Language
(HM)
![]() ![]() ![]() ![]() ![]() Joshua Choi, Natalia Dorogi, Emily Li, and Alice Zhang |
JQER:
Python-like language for trees
(SE)
![]() ![]() ![]() ![]() ![]() Qianjun Chen, Roger Lu, Eurey Noguchi, and Jiaxuan Pan |
JavaLite:
A Java-like Language
(JY)
![]() ![]() ![]() ![]() ![]() Frances Cao, Hongfei Chen, Yen-Lin Chen, and Mateo Maturana |
Konig:
Graph Algorithm Language
(AA)
![]() ![]() ![]() ![]() ![]() Delilah Beverly, Lord Crawford, and Matteo Sandrin |
Lingo:
Functional Language with Linear Types
(SE)
![]() ![]() ![]() ![]() ![]() ![]() Benjamin Flin, Jay Karp, and Sophia Kolak |
Lucifer:
2D Video Game Language
(WC)
![]() ![]() ![]() ![]() ![]() Robert Becker, Cherry Chu, Michael Fagan, and Elliott Morelli |
MM:
Matrix Mania
(DN)
![]() ![]() ![]() ![]() ![]() Cindy Espinosa, Desu Imudia, Diego Prado, Sophie Reese-Wirpsa, and Emily Ringel |
Matcat:
Linear Algebra Language
(XL)
![]() ![]() ![]() ![]() ![]() Davit Barblishvili, Andreas Cheng, Mariam Khmaladze, and James Ryan |
Meowlang:
LOLCODE-like OO language
(HM)
![]() ![]() ![]() ![]() ![]() Carolyn Chen, Megan Frenkel, Michelle Lin, and Lauren Pham |
PRIME:
Cryptography Language
(SE)
![]() ![]() ![]() ![]() ![]() Pedro Barbosa Teixeira Santos, Alexander Liebeskind, Nikhil Mehta, and Thomas Tran |
PartialC:
C-like language
(EM)
![]() ![]() ![]() ![]() ![]() MINGJIE LAO, and JIAYING SONG |
Photon:
Image Editing Language
(JY)
![]() ![]() ![]() ![]() ![]() Franky Campuzano, Akira Higaki, CALUM MCCARTAN, and Phu Pham |
Pixel:
Image Processing Language
(JY)
![]() ![]() ![]() ![]() ![]() Alex Anthony Cortes-Ose, Dillon Davis, Jessica Kim, and Jessica Peng |
Poicent:
C-style points in MicroC
(SE)
![]() ![]() ![]() ![]() Shengtan Mao |
PolyWiz:
Symbolic Math Language
(HM)
![]() ![]() ![]() ![]() ![]() Tamjeed Azad, Rose Chrin, Max Helman, Aditya Kankariya, and Anthony Pitts |
PyThon:
Python-like Language
(XL)
![]() ![]() ![]() ![]() ![]() Gabriel Clinger, George DiNicola, Daniel Hanoch, and Cameron Miller |
Python++:
Python-like Language
(XL)
![]() ![]() ![]() ![]() ![]() Nathan Cuevas, Robert Kim, Nikhil Kovelamudi, and David Steiner |
QWEB:
Website Language
(HM)
![]() ![]() ![]() ![]() ![]() Kamrul Hossain, Tamanna Hussain, Ramisa Murshed, and Xabier Peralta |
RJEC:
Go-like Really Just Elementary Concurrency
(AA)
![]() ![]() ![]() ![]() ![]() Riya Chakraborty, Justin Chen, Caroline HOANG, and Yuanyuting Wang |
Racontr:
Text Adventure Game Language
(SE)
![]() ![]() ![]() ![]() ![]() Saumya Agarwal, Xinye Jiang, Janelle Ponnor, Shuyu Ye, and Morgan Zee |
Reptile:
Geometric Figure Drawing Language
(JY)
![]() ![]() ![]() ![]() ![]() Aileen Cano, Hariti Patel, Aviva Weinbaum, and Lindsey Weiskopf |
SCIC:
Scientific Calculation Language
(EM)
![]() ![]() ![]() ![]() ![]() Zhengyuan Dong, ZHENGYI LI, and Yucen Sun |
SOS:
Graphics Language
(WC)
![]() ![]() ![]() ![]() ![]() Terric Abella, Sitong Feng, G Pershing, and Sheron Wang |
Seaflow:
Reactive Programming Language
(EM)
![]() ![]() ![]() ![]() ![]() Rohan Arora, Junyang Jin, Sanlok Lee, and Sarah Seidman |
TiMRS:
Timers, Made Readable and Simple
(EM)
![]() ![]() ![]() ![]() ![]() Jeffrey Kline, Faisal Rahman, Daniel Rindone, and Eric Webb |
Viper:
Python-like Language
(HM)
![]() ![]() ![]() ![]() ![]() Mustafa Eyceoz, Trey Gilliland, Thomas Kaufman-Gomez, Raghav Mecheri, and Matthew Ottomano Jr. |
XIRTAM:
Matrix Manipulation Language
(DN)
![]() ![]() ![]() ![]() ![]() Lior Attias, Andrew Gorovoy, Bailey Hwa, Shida Jing, and Annie Wang |
YAGL:
Yet Another Graph Language
(SE)
![]() ![]() ![]() ![]() ![]() Adam Carpentieri, Jack Hurley, James Mastran, and Shvetank Prakash |
YAMML:
Yet Another Matrix Manipulation Language
(DN)
![]() ![]() ![]() ![]() ![]() Bill Chen, Doria Chen, Kent Hall, James Xu Jr., and Janet Zhang |
bugsy:
2D Animation Language
(HM)
![]() ![]() ![]() ![]() ![]() Jason Cardinale, Sofia Sanchez-Zarate, Benjamin Snyder, Evan Tilley, and Michael Winitch |
nodable:
Graph Language
(SE)
![]() ![]() ![]() ![]() ![]() Ajita Bala, Ariel Goldman, Naviya Makhija, and Karen Shi |
red-pandas:
Matrix Manipulation Language
(DN)
![]() ![]() ![]() ![]() ![]() 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.