CS6371: Advanced Programming Languages

Mon,Wed 11:30-12:45 PM

Classroom: ECSS 2.201

http://www.utdallas.edu/~gupta/courses/apl


Instructor and TA

Instructor: Gopal Gupta, ECSS 4.907, 972-883-4107, gupta@utdallas.edu

                        Office hours: MW 10:00AM-11:00AM

Teaching Assistant: TBA

                       


Homework Link: click here


Goal

This course will deal with Advanced Concepts in Programming Languages. The following are the course learning objectives:
  1. Learn Lambda Calculus and functional programming
  2. Learn Logic Programming and Prolog
  3. Learn Denotational Definition of Programming Languages
  4. Learn Fixpoints; Program Verification
  5. Learn Operational Semantics & Axiomatic Semantics
  6. Learn Partial Evaluation; Interpretation & Automatic Compilation of Languages
We will first cover functional programming, followed by logic programming. Then we will switch to studying semantics of programming languages (Operational, Denotational and Axiomatic). We will also study basics of program verification. Good understanding of set theory, discrete mathematics, and data structures is required for this course. In the semantics part, significant amount of time will be devoted to denotational semantics.


Outcomes

This course will help in considerably improving your understanding of the process of programming and the structure of computation. You will also learn how to rapidly implement interpreters and compilers for imperative programming languages. You will also see the close relationship between language semantics and correctness of programs. Your understanding of declarative programming will also improve.


Prerequisites

  1. Discrete Structures (CS5333 or CS3305 or equivalent). You must have taken this course or possess knowledge equivalent to this course (i.e., you should not have a deficiency for Discrete Math on your record).
  2. Algorithm Analysis and Data Structures (CS 3345 or CS5343 or equivalent). You must have taken this course or possess knowledge equivalent to this course (i.e., you should not have a deficiency for Data Structures/Algorithms on your record).
  3. Automata Theory (CS 4384 or CS5349). You must have taken this course or possess knowledge equivalent to this course (i.e., you should not have a deficiency for Automata Theory on your record).
If you have not taken one of these classes, you should drop this course. No exceptions.

Text and References

Denotational Semantics by D.A. Schmidt (out of print, but available here electronically).

(Reference) Elements of ML Programming, Jeffrey D. Ullman, ML97 Edition. You can find a free tutorial on ML here

(Reference) The Art of Prolog, L. Sterling and E. Shapiro. Free books on Prolog are available online: