CSE3302/CSE5307 Programming Languages (Programming Language Concepts)

Course Summary

Welcome to the world of programming languages!
A small number of concepts underline the hundreds of programming languages that have been designed and implemented. This course introduces the concepts that serve as a basis for programming languages. It aims to provide the students with a basic understanding and appreciation of the various essential programming language constructs, programming paradigms, evaluation criteria and language implementation issues. The course covers concepts from functional, imperative, object-oriented, logic programming and optionally scripting languages. These concepts are demonstrated by incrementally adding more features to a simple functional language called Lambda Calculus to eventually arrive at a full-fledged, user-friendly general purpose programming language. At the end of the course, a number of modern programming languages from various paradigms are presented as case studies.

Latest News and Announcements


Administrative Information

Lectures: Mon/Wed 2:30-3:50 PM, ERB-131.

Instructor: Kenny Zhu - ERB-535 Phone: 817-272-3721 Email: kenny[dot]zhu@uta[dot]edu
Office hours: Wed 4-5PM

Teaching Assistant: Essam Abdelghany
Email: exa0039@mavs.uta.edu
Office hours: Mon 8-10AM @ ERB-316

Reference Textbooks:

  1. Types and Programming Languages by Benjamin C. Pierce, The MIT Press.
  2. Practical Foundations for Programming Languages by Robert Harper, Cambridge University Press.
  3. Programming Languages Principles and Paradigms by Allen Tucker and Robert Noonan, McGraw Hill / 2009-5-1.
  4. Programming Languages: Application and Interpretation by Shriram Krishnamurthi, Brown, Online.

Assessment:

  1. In-class quizzes: 10%
  2. Tutorial participation: 5% (bonus)
  3. Assignments: 30%
  4. Project: 30% (Project description doc (PDF) (TeX), Code Base) Deadline: Dec 3, 2024, 12 Midnight.
  5. Final Exam: 30%

Schedule

WeekDateTopic SlidesResourcesHomework
108/19/2024 Introduction[lecture] [tutorial] Tucker Ch.1 hw1 (pdf) hw1 (tex)
208/28/2024 Inductive Definition and Proofs [lecture] [tutorial] Harper Ch. 1-4 hw2 (pdf) hw2 (tex)
2.509/04/2024 Inductive Definition and Proofs (II) [tutorial] Harper Ch. 1-4 Make-up assignment (pdf)
39/11/2024 Untyped Lambda Calculus [lecture] [tutorial] Pierce Ch 5, 8, 9 hw3 (pdf) hw3 (tex)
409/18/2024 Untyped Lambda Calculus (II), Simply-typed Lambda Calculus [lecture] [tutorial] Pierce Ch 8, 9 hw4 (pdf) hw4 (tex)
509/25/2024 Extension to Simply-typed Lambda Calculus (I) [lecture] [tutorial] Pierce Ch. 11 hw5 (pdf) hw5 (tex)
610/02/2024 Extension to Simply-typed Lambda Calculus (II) [lecture] [tutorial] Pierce Ch. 11 hw6 (pdf) hw6 (tex)
710/09/2024 Going Imperative [lecture] [tutorial] Pierce Ch. 12 hw7 (pdf) hw7 (tex)
810/16/2024 Memory Management [lecture] [tutorial] Tucker Ch. 11 hw8 (pdf) hw8 (tex)
910/18/2024 Type Inference (I)[lecture] [tutorial] Pierce Ch. 22, 23 hw9 (pdf) hw9 (tex)
1010/30/2024 Type Inference (II) [lecture] [tutorial] Pierce Ch. 22, 23 hw10 (pdf) hw10 (tex)
1111/03/2024 Subtyping [lecture] [tutorial] Pierce Ch. 15 hw11 (pdf) hw11 (tex)
1311/15/2024 Logic Programming [lecture] [tutorial] Tucker Ch. 15 hw12 (pdf) hw12 (tex)
1411/20/2024 OCaml [lecture] [tutorial] hw13 (pdf) hw13 (tex)
Copyright (c) Kenny Q. Zhu, 2012-2024.