COMS W4115 Programming Languages and Translators Spring 2015 |
Announcements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Class meets 2:40-3:55pm on Mondays and Wednesdays, 833 Mudd.
Important Dates
Guest LecturerOn March 30, 2015, Dr. Robert L. Martin gave a talk on software project management titled "There is No Magic" Bob argued that producing a high quality programming product on time requires the disciplined application of well-tuned technical, inter-personal and managerial skills. While often repackaged with fancy consultant-expensive names, these skills are decades old. Intriguingly, many programmers and programming teams ignore them and assume, by magic, they will avoid repeating history's disasters. They don't - there is no magic.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Teaching Staff | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Course Overview | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
In PLT you will learn the syntactic
and semantic elements and the computational models of the most important modern
programming languages
as well as the algorithms and techniques used
by compilers to translate them into machine and other
target languages.
The course will cover imperative, object-oriented, functional,
logic and scripting languages, as well as trends in the evolution of programming languages.
A highlight of this course is a semester-long programming
project in which you will work in a small team to create
and implement an innovative little language of your own design.
This project will teach you computational thinking in language design as
well as project management, teamwork, and
communication skills that you can apply in all aspects of your
career. The concepts, techniques, and tools that you will learn in this course have broad application to many areas of computer science outside of programming languages and compilers. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Prerequisites | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Fluency in C, C++, Java, OCaml, Python or other high-level programming language | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COMS W3157 Advanced Programming | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COMS W3261 Computer Science Theory | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COMS W3827 Fundamentals of Computer Systems | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Knowledge about Makefiles and Source Code Control Systems | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Schedule 2015 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Required Text | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Alfred V. Aho, Monica Lam, Ravi Sethi, and Jeffrey D. Ullman Compilers: Principles, Techniques, and Tools, Second Edition Addison-Wesley, 2007, ISBN 978-0321486813 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Additional References | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Alfred V. Aho and Jeffrey D. Ullman Foundations of Computer Science, C Edition W. H. Freeman, 1995 An online version of this book is available here. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Andrew W. Appel Modern Compiler Implementation in Java, Second Edition Cambridge University Press, 2002 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Keith D. Cooper and Linda Torczon Engineering a Compiler, Second Edition Morgan Kaufmann, 2012 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Steven S. Muchnick Advanced Compiler Design and Implementation Morgan Kaufmann, 1997 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Michael L. Scott Programming Language Pragmatics, Third Edition Morgan Kaufmann, 2009 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Robert W. Sebesta Concepts of Programming Languages, Tenth Edition Pearson/Addison-Wesley, 2012 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Stephen Edward's CS4115 Web Page |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Class Policies | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Grading |
40 % Project 10 % Homeworks 20 % Midterm 30 % Final |
aho@cs.columbia.edu | Updated 3/21/15 |