CS345H Fall 2017


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


Instructor:

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

    Grading:

    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/

    Policies:

  • 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:

    Resources:

    Syllabus:

    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
    WA2
    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
    WA3
    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 Continued
    10/23 Review WA3
    10/25 Project Day
    10/30 Type Checking Lecture 10
    Lecture 10 with animations
    PA3
    11/01 Polymorphism Lecture 11
    Lecture 11 with animations
    11/06 Type Inference Lecture 12
    Lecture 12 with animations
    11/08 Type Inference II Lecture 13
    Lecture 13 with animations
    Project Start
    11/13 Midterm Review Project Groups and 1-page project proposal
    11/15 Midterm 2
    11/20 Imperative Languages I Lecture 14
    Lecture 14 with animations
    11/22 Thanksgiving
    11/27 Imperative Languages II Lecture 16
    Lecture 16 with animations
    11/29 Project Day
    12/04 Object-Oriented Programming Lecture 17
    Lecture 17 with animations
    12/06 Real programming languages: JavaScript Lecture 21
    Lecture 21 with animations
    12/11 Final Exam Project Due