






































Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
A course syllabus for Programming Languages and Translators taught by Prof. Stephen A. Edwards at Columbia University in Fall 2013. The course covers topics such as compilers, regular and context-free languages, and software development. The main project for the course involves designing and implementing a compiler for a student's own little language using OCaml. information on assignments, grading, prerequisites, and common mistakes to avoid.
Typology: Study notes
1 / 46
This page cannot be seen from the preview
Don't miss anything!
Stephen A. Edwards
Columbia University
Fall 2013
Pieter Bruegel, The Tower of Babel , 1563
Prof. Stephen A. Edwards sedwards@cs.columbia.edu http://www.cs.columbia.edu/~sedwards/ 462 Computer Science Building
Theory of language design œ (^) Finer points of languages œ (^) Different languages and paradigms Practice of Compiler Construction œ (^) Overall structure of a compiler œ (^) Automated tools and their use œ (^) Lexical analysis to assembly generation
Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 2006. Second Edition. Bug Al about all bugs. You can get away with the first edition.
COMS W3261 Computer Science Theory œ (^) You need to understand grammars œ (^) We will be working with regular and context-free languages COMS W3157 Advanced Programming œ (^) Teams will build a large software system œ (^) Makefiles, version control, test suites œ (^) Testing will be as important as development
Off my home page, http://www.cs.columbia.edu/~sedwards/ Contains syllabus, lecture notes, and assignments. Schedule may be updated
Design and implement your own little language. Five deliverables:
œ (^) There should be one leader. S/he should resolve all contentious design decisions. œ (^) If you have any doubt about your team dynamics, have no doubt: you are headed for trouble. Tell your TA or me about it as soon as possible. Each member of a group gets a separate grade for the project.
A careful definition of the syntax and semantics of your language. Follow the style of the C language reference manual (Appendix A of Kernighan and Ritchie, The C Programming Langauge ; see the class website).
A small, domain-specific language. Think of awk or php, not Java or C++. Examples from earlier terms: Geometric figure drawing language Matlab-like array manipulation language Quantum computing language Screenplay animation language Escher-like pattern generator Music manipulation language (harmony) Web surfing language Mathematical function manipulator Simple scripting language (à lá Tcl)