CISC 7120X Programming Languages and Compilers


Basic Information

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

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 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 40%.

Syllabus

  1. Introduction
  2. Lexical Analysis
  3. Syntax Analysis
  4. Scripting Languages and Python
  5. Midterm (Sample)
  6. Functional Programming and Haskell
  7. Constraint Logic Programming and Picat
  8. C++ and Java, pthreads in C++, and threads in Java
  9. Run-time Systems and Memory Management, JVM
  10. Project
  11. Final Exam (Sample)