CS345H Fall 2017

    Welcome to the home page for
    Computer Science 345H -
    Programming Languages


Thomas Dillig

E-mail: tdillig@cs.utexas.edu
Lecture: MW 12:30am-2:00pm in BUR 134
Office Hours: Monday 11:30am-12:30pm in GDC 7.716
Final: Last day of class

TA: Pengxiang Cheng, Office Hours MW 2pm-4pm at TA Station GDC 1.302, Desk 4

Please check Piazza for the discussion forum, assignment submissions and your grades.

Course Description:

This course introduces students to the basic concepts in programming languages. We will learn how to give meaning to programs, prevent run-time errors in programs using types and study different programming paradigms.

Work Load and Requirements:

  • This class has two in-class midterms and one final. The midterm dates are marked on the calendar below.
    You must be physically present at a midterm to receive credit. There are no make-up exams.
  • There are 5 programming projects
  • The course also has approximately weekly written homeworks

  • This is a difficult course with a substantial workload -- budget your time accordingly


    Midterm 1: 15%
    Midterm 2: 15%
    Final: 25%
    Written assignments: 20%
    Programming Projects: 25%
    The class will be curved so that the median grade will be B-/C+.

    Students with disabilities may request appropriate academic accommodations from the Division of Diversity and Community Engagement, Services for Students with Disabilities, 512-471-6259, http://www.utexas.edu/diversity/ddce/ssd/


  • Each written assignment is due at the beginning of class on the indicated date.
  • Each program assignment is due electronically at midnight on the indicated date.
  • Written assignments must be done individually.
  • Programming assignments may be done individually or in pairs. You can change your partner between different programming assignments.
  • Every student is given three free "late days" for the semester, but you cannot use more than two late days for a particular assignment. To avoid ambiguity, a late day is a 24-hour period. If you exhaust your late days and turn in an assignment late, you will not receive any credit for that assignment unless you have an emergency and talk to me before the due date.
  • All students are expected to abide by the UT Austin Honor Code
  • Announcements:

  • This class has NO textbook.
  • Handouts:



    The syllabus is subject to change.
    "WA" stands for "Written Assignment"; "PA" stands for "Programming Assignment".

    Date Lecture topics Slides Reading Assigned Due
    8/30 Introduction
    Basic Lambda Calculus I
    Lecture 1
    9/11 Lambda Calculus II
    Introduction to L
    Lecture 2 PA0, WA1
    9/13 Lexical Analysis Lecture 3
    9/18 Lexing and Finite Automata Lecture 4
    Lecture 4 with animations
    PA1, WA2 PA0, WA1
    9/20 Review
    9/25 Introduction to Parsing Lecture 5
    Lecture 5 with animations
    9/27 Parsing Algorithms Lecture 6
    Lecture 6 with animations
    WA3, PA2 PA1
    10/02 Operational Semantics I Lecture 7
    Lecture 7 with animations
    10/04 Operational Semantics II Lecture 8
    Lecture 8 with animations
    10/09 Midterm 1 review PA2
    10/11 Midterm 1
    10/16 Typing rules and proofs Lecture 9
    Lecture 9 with animations
    WA3, PA3
    10/18 Polymorphism
    10/23 Review WA3
    10/25 Project Day
    10/30 Type Inference I PA3
    11/01 Type Inference II
    11/06 Introduction to imperative languages
    11/08 Operational semantics of an imperative language
    11/13 Imperative Languages II
    11/15 Midterm 2
    11/20 Project Work
    11/27 Project Work
    11/29 Real programming languages: Java
    12/04 Real programming languages: LISP
    11/22 Real programming languages: Haskell
    12/06 Real programming languages: JavaScript
    12/11 Final Exam Project Due