Course Syllabus

Why take this course?

This course teaches you advanced techniques for functional programming, so that you can make your programs easier to read and compose. These techniques include

  • equational reasoning
  • types
  • monads
  • code generation

You might find some of these techniques useful even when using a "non-functional" language. You'll also draw some techniques from cutting-edge research.

Prerequisites

You should have some experience with functional programming and types before starting this course, such as taught in A596/B521/C311/H311. In particular, you should know how to write a continuation-passing interpreter and a type checker for a lambda calculus. In other words, the first few homeworks should be easy for you.

Instructors and meetings

Professor: Chung-chieh Shan ("Ken")

  • Email: ccshan@indiana.edu
  • Lectures (required): Ballantine Hall 246, on Tuesdays and Thursdays from 2:30pm to 3:45pm
  • Office hours: Lindley Hall 230B, on Wednesdays from 1pm to 4pm (but not the first week), or by appointment

Assistant: Carl Factora

  • Email: cfactora@umail.iu.edu
  • Recitations (required): Lindley Hall 008, on Fridays from 1:00pm to 2:15pm
  • Office hours: Lindley Hall 035 (the Mine), on Mondays from noon to 3pm (but not the first week), or by appointment

Do's and don't's

Take advice from students who took this course before you.

Check your official university email (@indiana.edu) and Canvas for announcements.

Bring your laptop if you have one. It'll be useful for group work in class soon.

Start assignments early and submit them on time. To keep the course moving, here's the grading policy for late homework: if you submit it by the next lecture, you get half credit; otherwise, you get no credit.

Ask questions when you don't understand, or offer answers. You help your classmates either way. Do it during class meetings, or participate in our online discussions. In Canvas, go to "Discussions", then "+ Discussion" or reply to an existing topic.

When sending email to course staff or posting to the online discussion, use a descriptive subject. Put "AFP" in the subject of emails to course staff, so that the message stands out and is easy to file.

Please discuss homework with others! But everything you finally submit must be your own writing and list who you worked with. Group work should be submitted just once and list everyone in the group and who else you worked with. When in doubt, ask. Cheating cheapens everyone's degree and will not be tolerated. Please see IU's Code of Student Rights, Responsibilities, and Conduct.

Course Summary:

Course Summary
Date Details Due