CS 6963 – Functional Programming Studio

Spring 2021

Monday and Wednesday, 3:00pm-4:20pm, virtual (link in Canvas)

Instructor:

 

Matthew Flatt

Office Hours:

 

by appointment (send e-mail)

Schedule

Jan 20

  

Introductions and Sudoku Solver and Generator

Jan 25

  

Language and Sudoku presentations: Yo, Gavin, Bradley

Jan 27

  

Language and Sudoku presentations: Jairon, Nathan, Calvin

Feb 1

  

Language and Sudoku presentations: Ryan, Megan, Hayden

Feb 3

  

Language and Sudoku presentations: Emerson, Sona, Carson, Alex

Feb 8

  

Santorini Player

Feb 10

  

Recursion, loops, stacks, tail calls, and space safety

Feb 17

  

Santorini presentations: Matthew, Yian, Mei

Feb 22

  

Santorini presentations: Nathan, Gavin, Yo

Feb 24

  

Santorini presentations: Zach, Abhi, Josh, Saivamshi

 

  

Santorini Player with Cards

Mar 1

  

Monads as a DSL framework

Mar 3

  

Closure compilation; see also Feely87

Mar 8

  

no class

Mar 10

  

Santorini with cards presentations: Carson, Sona, Heydon, Josh

Mar 15

  

Santorini with cards presentations: Ryan, Braeden, Saivamshi

Mar 17

  

Santorini with cards presentations: Emerson, Bradley, Alex

Mar 22

  

Project proposals: everyone

Mar 24

  

Functional pictures; see also Slideshow, Universe

Mar 29

  

Functional data structures: Okasaki96; queues; AVL trees; HAMTs

Mar 31

  

no meeting

Apr 5

  

no meeting (non-instructional day)

Apr 7

  

Concurrent ML; see also references

Apr 12

  

Delimited continuations

Apr 14

  

Project reports: Ryan, Gavin, Sona, Jairon

Apr 19

  

Project reports: Hayden, Megan, Carson, Yian

Apr 21

  

Project reports: Alex, Saivamshi, Josh

Apr 26

  

Project reports: Abhi, Zach, Calvin, Emerson, Braeden

Apr 28

  

Project reports: Mei, Nathan, Bradley, Yo

Course Description

This programming course is intended for students who have taken a programming-languages course and who are interested in gaining more experience with functional-programming languages and techniques.

There are no exams and almost no lectures for the course. Students are graded on the completion of open-ended coding assignments and, equally importantly, class participation. Class participation includes presenting programs and discussing the presented work of other students. Hence the “studio” part of the course name: the intent is for the course to work like an art studio course, but for functional programming.

Students may use any functional programming language for completing assignments, and diversity of language choices will be encouraged. Suitable functional languages include (but are not limited to) Racket, Haskell, Scala, OCaml, F#, SML, Erlang, Clojure, Common Lisp, Agda, Idris, and Elm.

Student Code and Academic Guidelines

For information on withdrawing from courses, appealing grades, and more, see the college’s academic guidelines. For information on repeating a class, co-requirements, academic misconduct, and more, see the department’s policies and guidelines.