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. 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): Sycamore 002, on Tuesdays and Thursdays from 11:15am to 12:30pm
  • Office hours: Lindley Hall 230B, on Wednesdays from 2pm to 4pm, or by appointment

Assistant instructor: Kyle Carter

  • Email: kylcarte@umail.iu.edu
  • Recitations (required): Swain East 045, on Fridays from 9:30am to 10:45am
  • Office hours: Lindley Hall 328, on Mondays from 1pm to 4pm, or by appointment

Do's and don't's

Check your official university email (@indiana.edu) Links to an external site. 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 Links to an external site..

Course Summary:

Date Details Due