CS 6525 – Functional Programming Studio🔗

Spring 2024

Monday and Wednesday, 3:00pm-4:20pm, GC 5680

Instructor:

 

Matthew Flatt

Office Hours:

 

by appointment (send e-mail)

Schedule🔗

Jan 8

  

Introductions and Sudoku Solver and Generator

Jan 10

  

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

Jan 17

  

Language and Sudoku presentations: Kincaid, Bhargav, Sameer

Jan 22

  

Language and Sudoku presentations: Chloe, Marcus, Stefan, Ashton

Jan 24

  

Language and Sudoku presentations: Yash

Jan 29

  

Economancy Player

Jan 31

  

Language and Sudoku presentations: Adwait, Ethan, Atreya

Feb 5

  

Monads (notes): Ashton

Feb 7

  

Functional data structures: HAMTs; RRB-Trees; Okasaki96; queues; AVL trees

Feb 12

  

Game presentations: Marcus, Sameer

Feb 14

  

Game presentations: Lanhai, Atreya, Ethan, Adwait

Feb 21

  

Game presentations: Khagan, Yash, Kincaid

Feb 26

  

Game presentations: Bhargav, Ashton, Atreya

Feb 28

  

Game presentations: Stefan, Matthew

Mar 11

  

Dependent types: Chloe

Mar 13

  

Initial plans for final projects

Mar 18

  

Closure compilation; see also Feely87

Mar 20

  

Delimited continuations

Mar 25

  

Project WIP presentations: Kincaid, Stefan, Sameer

Mar 27

  

Project WIP presentations: Khagan, Ethan, Ashton

Apr 1

  

Project WIP presentations: Adwait, Yash, Atreya

Apr 3

  

Project WIP presentations: Marcus, Bhargav, Lanhai

Apr 8

  

no class meeting

Apr 10

  

no class meeting

Apr 15

  

Project presentations: Kincaid

Apr 17

  

Project presentations: Marcus, Ethan, Stefan

Apr 22

  

Project presentations: Yash, Adwait, Ashton, Bhargav, Sameer, Lanhai, Atreya, Khagan

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. The course is not intended as an introduction to functional programming.

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 (unofficial) 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.