Programming Language Concepts

Syllabus

Course Information

Course Number and Section: CS:3820:0001
Semester, Year: Fall 2025
Time: 3:30-4:45pm TTh
Location: LR2 VAN

Instructor: Andrew Marmaduke
Office Location: 1B JH
Office Hours: 1:30-3pm WTh
email: [first]-[last]@uiowa.edu

TA: Tristan MacKinlay
TA Office Location: 1B JH
TA Office Hours: 1-2:30pm M and 3-4:30pm W

TA: Xiangzhe Yuan
TA Grader

DEO: Alberto Segre, 14D MLH

Description

This course will cover concepts of programming languages: syntax, semantics, introductory type theory, functional programming, lambda calculus. The book Functional Programming in Lean by David Thrane Christiansen (https://lean-lang.org/functional_programming_in_lean/) will be used. The course will use the Lean programming language (https://lean-lang.org/). There is extensive community documentation available (https://leanprover-community.github.io/).

Learning Objectives

After taking this course, you should be able to:
  1. create novel languages with syntax and semantics;
  2. analyze languages and their meanings;
  3. evaluate recursive functions and inductive definitions;
  4. create functional programs;
  5. understand standard programming languages like the lambda calculus.

Grading System

Plus/minus grading will be used for this course. The grading is based on 10-14 homeworks (15%), two midterms (20% each), a project (20%), and a final exam (25%). Github Classroom will be used to submit and automatically grade homework. Homework is pass/fail, there is no partial credit.

Collaboration

Students are allowed to collaborate in their project groups. It is expected that every student in the group is capable of explaining and solving the solution to all homework problems. No collaboration is allowed outside of homework assignments and the project.

Late Policy

Late submissions will be accepted up to 48 hours after the deadline. After the stated deadline, the maximum achievable score for a late assignment is 90%. Twenty-four (24) hours after the stated deadline, the maximum achievable score for a late assignment is 80%. Forty-eight (48) hours after the stated deadline, the maximum achievable score for a late assignment is 0%. Starting early is key, and the TA and I will be glad to help with any questions you may have on the assignments. Please visit us often during our office hours.

Resources for Students

Speaking Center: http://clas.uiowa.edu/rhetoric/for-students/speaking-center
Tutor Iowa: http://tutor.uiowa.edu/

The College of Liberal Arts and Sciences: Important Policies and Procedures

Please visit https://provost.uiowa.edu/student-course-policies for important policies and procedures.