View a video preview of this course
Course Description:
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 group project. While few of you will ever implement a full commercial compiler professionally, the concepts, techniques, and tools you will learn have broad application.
Faculty/Manager:
Steven Edwards
Contact Information:
Steven Edwards
email: sedwards@cs.columbia.eduClass Homepage: http://www1.cs.columbia.edu/~sedwards/classes/2009/w4115-spring/index.html Credits for Course: 3 Viewing Schedule: 2 lectures per week Prerequisites: Java fluency: You will be writing a large Java program and must know the language well.
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.
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. Applicable Degree Program: Core breadth course for MS program in Computer Science
Most courses 4000-level and above can be credited to all degree programs. All courses are subject to advisor approval.Required Text(s): Books can be ordered from the bookstore through this link.
http://www.campusstores.com/columbia/index.asp