CSCI400: Programming Languages
Where and When:
T/Th, 9:30-10:45, MZ 22
Office hours: T/Th, 8-9:15
This purpose of this course is to consider in detail the main constructs of modern programming languages, including abstraction mechanisms, sequence control, data control and storage management. The course will include a brief introduction to functional and logic programming. We'll also discuss some pragmatics of programming as time allows.
Why study principles of programming languages?
- To enhance your ability to learn new languages,
- To allow you to choose an appropriate tool for a given task,
- To gain an appreciation for the challenges involved in implementing a language,
- To expand your ability to express your ideas using a given language,
- To see some very different styles of programming (e.g., Ruby and Haskell),
- Because it's fun!
Miran Lipovaca, Learn You a Haskell for Great Good, Required (pdf available)
Flanagan & Matsumoto, The Ruby Programming Language, Recommended
Robert Sebesta, concepts of Programming Languages, Recommended
Late work is strongly discouraged. Late assignments will be penalized 10% per day and no assignments will be accepted more than 2 days late.
We will make use of piazza for this course: https://piazza.com/mines/fall2014/csci400/home.