CISC 7120X Programming Languages and Compilers
Basic Information
- Instructor: Prof. Neng-Fa Zhou
- Class hours: Wednesday 6:05PM - 8:10PM (Inger Add 232)
- Office hours: 1:05-2:05 Thursday (1161 Inger)
Topics
Formal languages for language specification (regular expressions and context-free grammars), scanning and parsing, programming paradigms and their characteristics, imperative programming, object-oriented programming, functional programming, logic and constraint programming, scripting languages, concurrent programming, language implementation techniques, virtual machines, run-time systems and memory management, programming language examples (including Java, C/C++, Python, Haskell, and Picat).
Resources
- Compilers: Principles, Techniques, and Tools (2nd Edition), by Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman.
- Java Online Tutorials
- OOP Wiki
- A Gentle Introduction to Haskell, by Paul Hudak, John Peterson, and Joseph Fasel.
- Constraint Solving and Planning with Picat, by Neng-Fa Zhou, Hakan Kjellerstrand, and Jonathan Fruhman.
Homework
There will be one homework assignment each week. Unless notified
otherwise, the homework is due in one week after it is assigned. Please
email your homework to nzhou (AT) brookly (DOT) cuny (DOT) edu.
Please write your name, student ID, and the number of the assignment in
the Subject of the email. You are also encouraged to submit your homework on paper in addition to email submissions. Sample answers to the programming questions
will be given and selected questions will be reviewed in class. There
will be a one-point deduction for each missing homework or late
submitted homework. The total deduction will not exceed 10 points.
Exams and Grading
There will be one midterm exam and one final exam, both open-book.
Homework and projects account for 30%, the midterm 30%, and the final
40%.
Syllabus
- Introduction
- Lexical Analysis
- Syntax Analysis
- Midterm, Spring 2025 (Sample )
- OOP
- Scripting Languages and Julia
- Functional Programming and Haskell
- Constraint Logic Programming and Picat
- Run-time Systems and Memory Management, JVM
- Project
- Final Exam, 12/20, Wednesday