Information

Overview

Computing professionals have to learn new programming
languages all the time. This course teaches the fundamental
principles of programming languages that enable you to learn
new languages quickly and help you decide which one is best
suited for a given task.

We will explore new ways of viewing computation and programs, and new
ways of approaching algorithmic problems, making you better
programmers overall. The topics covered in this course
include

functional programming

recursion and induction

algebraic data types and pattern matching

higher-order functions

continuations and tail recursion

programming language syntax and semantics

type systems

monads and state

objects and classes

We will explore this material by building interpreters for
programming languages of increasing complexity. The course
will thus be accompanied by an extensive programming
project. We will use the programming language Scala for this
project, which you will also learn in this course.

Materials

Recommended Reading

We will provide self-contained class notes for the materials
covered in the course. It is therefore not necessary that you
purchase additional textbooks. Nevertheless, we recommend the
following books for additional reading.

JavaScript Resources

Syllabus

You will find the syllabus and class notes on the course's
NYU classes page.

Mailing List

All course-related announcements will be sent to the
course
mailing list. You may also use this list to ask
questions and discuss issues related to the course. If you
have enrolled before the start of the term, you are
automatically subscribed to the list. Otherwise, use the above
link to subscribe manually.

Grading

Homework (50%), midterm exam (20%), final exam (30%).

Late Submission Policy

Late submissions of homework solutions will be graded with a
10% penalty per day of late submission. Solutions will not be
graded if they are submitted later than one week after the
specified deadline.

Academic Integrity

Please review
the
departmental academic integrity policy. In this course,
you may discuss homework problems and assignments with other
students, but the work you turn in must be your own. Do not
copy another student's work. Also, you should consult the
instructor before using materials or code other than that
provided in class. Copying code or other work without giving
appropriate acknowledgment is a serious offense with
consequences ranging from no credit to potential expulsion.