CISC 7120X Programming Languages and Compilers
- Instructor: Prof. Neng-Fa Zhou
- Class hours: Wednesday 06:05-08:10PM (room 205 WH)
- Office hours: 5:00-6:00 Wednesday (room Ingersoll 1161)
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).
- Compilers: Principles, Techniques, and Tools (2nd Edition), by Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman.
- Data Structures with C++ Using STL, 2nd ed., by - William H. Ford and William R. Topp, Prentice-Hall.
- Java Online Tutorials
- OOP Wiki
- Introduction to Python, by Guido van Rossum
- 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.
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 cisc7120 (AT) picat-lang.org.
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
- Lexical Analysis
- Syntax Analysis
- Midterm (Sample)
- Constraint Logic Programming and Picat
- Functional Programming and Haskell
- Scripting Languages and Python
- C++ and Java, pthreads in C++, and threads in Java
- Run-time Systems and Memory Management, JVM
- Final Exam (Sample)