Page 1 of 3
New York University Tandon School of Engineering
CS-GY 6373 Programming Languages
Spring 2020
Professor Thomas Reddington
Friday 10:30 – 12:55 PM; 2 MTC Rm 9.011
To contact professor: [email protected]u
370 Jay Street Floor 8, Rm: 843
Office hours: by appointment
Graduate Assistants
Abhinav Sharma
Kavin Sharad Shah
Prequisites
CS-GY 5403
Be familiar with Linux, c and Python.
Course Description:
This course covers the structures, notations and semantics of multiple programming languages. Topics: Issues of
scope, type structure and parameter passing. Control structures, including support for exception handling and
concurrency. Abstract data types and object-oriented languages. Functional, logic programming languages.
Examples from a variety of languages will be used especially the newer concepts that are now appearing.
This is not a class on any one programming language but a class on a series of concepts that underlie one of more
programming languages. We will focus for instance, on c, Lisp/scheme, Haskell, Julia and Prolog. I will provide
documentation for each. It is assumed you have some familiarity with Python3. You are expected to learn each
language and demonstrate through your homework that you understand concepts.
Course Objectives
1) Understand different concepts and constructions across multiple programming languages
2) Be able to critique how one language provides support for a concept versus another language.
3) Learn functional, logic, Aspect Oriented programming languages.
4) Be able to compare Imperative, functional and logic language features.
Textbooks (supplied as pdfs)
Robert W. Sebesta, Concepts of Programming Languages (10th ed.)
Kent Lee, Foundations of Programming Languages
A Linux Virtual Machine (VM) will be provided that has languages preinstalled. Class exercises will be done on this
VM. It will be preloaded with flex, python, python3, swi-prolog, lisp, c & C++, and Haskell, Julia, ocaml, php, ruby,
bison, golang, fortran, mit-scheme, clojure1.6, smlnj, aspectj.
Grade Calculations
30% Homework
35% Midterm exam
35% Final exam
Course Requirements
1) reading before class
2) class participation
3) assignments
4) exams
Lessons
Homework is the key to success in this course. There will be assignments that are done in the Vital. There may also
be writing assignments. You are responsible for reading Chapters 1 and 2 of Sebesta on your own.
A rough schedule of topics/chapters (These may change as the semester progresses).
Page 2 of 3
Policies:
The exact topics listed in this syllabus are subject to change. As the class progresses we will gauge where your
interests lie and may adjust topics and schedule appropriately.
All homework and laboratory assignments are due on the date indicated on the course website. Late assignments
will not be accepted so don’t ask for an extension if you are late. Failure to submit an assignment will result in a
grade of zero for that assignment. You will have ample time from the time an assignment is given until it is due. We
will not consider a network outage, unavailability of your computer or a computer in the lab (whether a specific
computer or any computer in general), or other computer problem that occurred the night before the due date to be a
justification for submitting an assignment late. You may assume that there will be one lab and/or homework for each
lecture.
Individual Work and Collaboration
In preparing your submissions for homework and laboratory projects you are authorized to use the textbook, your
notes, web sites, on-line documentation and any other reference materials to which you have access. You may also
discuss the assignment in general with other members of the class or with anyone else whom you believe can be of
assistance (including possibly the instructor).
The work that you submit for grading must, however, be exclusively your own work. If you do obtain assistance
from another individual, you must include an explicit note to that effect in your submission for the assignment.
Further all references used must be cited. This means that if you are using various web sites for assistance in
laboratory assignments and/or homework you must cite the exact URLs. In addition, any other printed material used
must be explicitly cited.
NYU School of Engineering Policies and Procedures on Academic Misconduct
See: https://engineering.nyu.edu/campus-and-community/student-life/office-student-affairs/policies/student-code-
conduct
Cheating & Plagiarism
Cheating or plagiarism on a lab or homework will result in a zero and the Computer Science department will track
you going forward for subsequent infractions. Cheating on an exam is a much more serious infraction and may
result in a lower grade for the course or an F.
Moses Center Statement of Disability
If you are student with a disability who is requesting accommodations, please contact New York University’s Moses
Center for Students with Disabilities at 212-998-4980 or mosescsd@nyu.edu. You must be registered with CSD to
receive accommodations. Information about the Moses Center can be found at www.nyu.edu/csd. The Moses
Center is located at 726 Broadway on the 2nd floor.
NYU School of Engineering Policies and Procedures on Excused Absences complete policy is found here
with associated form:
A. Introduction: An absence can be excused if you have missed no more than 10 days of school. If an illness or
special circumstance has caused you to miss more than two weeks of school, please refer to the section labeled
Medical Leave of Absence.
B. Students may request special accommodations for an absence to be excused in the following cases:
1. Medical reasons
2. Death in immediate family
3. Personal qualified emergencies (documentation must be provided)
4. Religious Expression or Practice
Deanna Rayment, deanna[email protected], is the Coordinator of Student Advocacy, Compliance and Student
Affairs and handles excused absences. She is located in 5 MTC, LC240C and can assist you should it become
necessary
Page 3 of 3
NYU School of Engineering Academic Calendar complete list is here:
The final exam is on May 15, 2020. Final exams for graduate courses will be held on the last day of class. Do not
make any travel plans until the exam schedule is finalized.
Also, please pay attention to notable dates such as Add/Drop, Withdrawal, etc. For confirmation of dates or further
information, please contact Susana M. Garcia-Henriquez at [email protected].
Schedule
Lectures Date Assignment Topics
1 31-Jan Ch 3 Introduction; VLAB, Parse Trees
2 7-Feb Ch 3, 4 Lambda Calculus, Lexical and Syntatic Analysis
3 14-Feb Ch 15, Haskell Funcational Programming Languages, Lisp Scheme
4 21-Feb Haskell Haskell
5 28-Feb Haskell Haskell + Monads
6 6-Mar mro paper
Closures, Object Oriented Programming, Method Resolution Order
Decorators, Review
7 13-Mar Midterm
8 20-Mar Spring Break Spring Break
9 27-Mar Julia Julia
10 3-Apr Julia Juia Metaprogramming
11 10-Apr Ch 16, Prolog Logic Programming, Prolog
12 17-Apr Ch 16, Prolog Logic Programming, Prolog
13 24-Apr CH 9,10 Subprograms, Implementing Subprogrms
14 1-May Ch 11, 12
Exception Handing, Generic Functions, Advice, Aspect Oriented
Programming
15 8-May Review
16 15-May Final Exam Final Exam