COMS W4115 Programming Languages and Translators Fall 2021 |
Class meets Fridays 1:10 - 3:40 PM 717 Hamilton.
Name | Office hours | Location | |
---|---|---|---|
Prof. Stephen A. Edwards | sedwards@cs.columbia.edu | ||
Max Levatich | ml4553@columbia.edu | Th 5:30 - 7:30 PM | Mudd 122 TA Room |
John Hui | jzh2106@columbia.edu | T 9:30 AM - 11:30 AM | Mudd 122 TA Room |
Hao Zhou | hz2754@columbia.edu | T 4:30 PM - 6:30 PM | Mudd 122 TA Room |
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 | Lecture | Notes | Reading | Due | |
---|---|---|---|---|---|
Fri Sep 24 | Intro. to Languages Language Processors |
|
Ch 1, 2 Ch. 2 |
||
Fri Oct 1 | Some Outstanding Projects Programming in OCaml |
|
|
||
Fri Oct 8 | " |
Proposal | |||
Fri Oct 15 | Syntax and Parsing |
|
Ch. 3, 4 |
||
Fri Oct 22 | " |
||||
Sun Oct 24 | (no lecture; turn in homework) |
HW1 .zip file | |||
Fri Oct 29 | The MicroC Compiler |
|
App. A |
||
Sun Oct 31 | LRM, Parser | ||||
Fri Nov 5 | " |
||||
Fri Nov 12 | Runtime Environments |
|
Ch. 7 |
Hello World | |
Sun Nov 14 | (no lecture; turn in homework) |
HW2 | |||
Fri Nov 19 | " |
||||
Fri Nov 26 | Thanksgiving Holiday | ||||
Fri Dec 3 | Review for Final |
|
|||
Fri Dec 10 | Final Exam | ||||
Wed Dec 22 | 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 |
CTeX:
Functional LaTeX Language
(SE)
Proposal LRM Final Report Slides Project Files Rachel Liu, Unal Yigit Ozulku, Weicheng Zhao, and Hu Zheng |
Compati:
MicroC with structs, arrays, and strings
(JH)
Final Report Project Files Shannon Jin |
DRRTY:
HTML Generation Language
(SE)
Proposal LRM Final Report Slides Project Files Rania Alshafie, Dylan Bamirny, Richard Lopez, and Trinity Sazo |
GVL:
Graph Visualization Language
(HZ)
Proposal LRM Final Report Slides Project Files Yaxin Chen, Aster Wei, Jiawen Yan, and Minhe Zhang |
JEo-MC:
Graphics Language
(HZ)
Proposal LRM Final Report Slides Project Files Melody Hsu, Jeremy Lu, Emma Schwartz, and Connie Zhou |
Kazm:
Object-oriented Language
(JH)
Proposal LRM Final Report Slides Project Files Katie Kim, Molly McNutt, Aapeli Vuorinen, and Zhonglin Yang |
MQL:
Database Query Language
(ML)
Proposal LRM Final Report Slides Project Files Pitchapa Chantanapongvanij, Peihan Liu, Yiqu Liu, and Daisy Wang |
MX:
Matrix Language
(ML)
Proposal LRM Final Report Slides Project Files Mauricio Guerrero, Aaron Jackson, Wilderness Oberman, and Rashel Rojas |
Marble:
Matrix Language
(ML)
Proposal LRM Final Report Slides Project Files HUAXUAN GAO, Qiwen Luo, Yixin Pan, and Xindi Xu |
Pocaml:
Poor Man's OCaml
(JH)
Proposal LRM Final Report Slides Project Files Peter Choi, Yiming Fang, Yunlan Li, and Feitong Qiao |
SMAP:
Probabilistic Language
(JH)
Proposal LRM Final Report Slides Project Files Tushar Arora, Andrew Magid, SWAPNIL PALIWAL, and Emily Sillars |
See++:
Pixel Graphics Language
(HZ)
Proposal LRM Final Report Slides Project Files Jack LaVelle, Vishrut Tiwari, Adar Tulloch, and Winston Zhang |
TENLab:
Distributed Tensor-based Language
(HZ)
Proposal LRM Final Report Slides Project Files Senhong Liu, Xincheng Xie, Xiangrong Xu, and Songqing Ye |
Vowel:
Text Processing Language
(ML)
Proposal LRM Final Report Slides Project Files Aidai Beishekeeva, Lex Mengenhauser, Vikram Rajan, and Coby Simler |
cstar:
Systems Programming Language
(JH)
Proposal LRM Final Report Slides Project Files Khyber Sen |
cstarstar:
Systems Programming Language
(JH)
Final Report Slides Project Files Joanne Wang |
ezap:
Sockets and Strings
(JH)
Final Report Slides Project Files Ryan Lee |
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.