CS 6963 – Functional Programming Studio

Spring 2019

Tuesday and Thursday, 12:25am-1:45pm, WEB 1460

Instructor:

 

Matthew Flatt

Office Hours:

 

by appointment (send e-mail)

For general information, see the Course Description below.

Schedule

Jan 8

  

Introductions and Sudoku Solver and Generator

Jan 10

  

Language and Sudoku presentations: Simon, Russell, Junior

Jan 15

  

Language and Sudoku presentations: Stone, John, Steve

Jan 17

  

Language and Sudoku presentations: Jen, Shaobo, Akshay

Jan 22

  

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

Jan 24

  

Language and Sudoku presentations: Sirus, Maryam, Mike

Jan 29

  

Santorini Player

Jan 31

  

no meeting

Feb 5

  

Santorini discussion

Feb 7

  

no meeting

Feb 12

  

Santorini presentations: Anthony, Liam, Shen

Feb 14

  

Santorini presentations: Kenway, Yaodong, Xinbo

Feb 19

  

Monads as a DSL framework

 

  

Santorini Checker and Player with Cards

Feb 21

  

Closure compilation; see also Feely87

Feb 26

  

Santorini with cards presentations: Thanhson, Simon, Russell

Feb 28

  

Santorini with cards presentations: Stone, Junior, Kenway

Mar 5

  

Santorini with cards presentations: Jen, Mike, Shen

Mar 7

  

Functional pictures; see also Slideshow, Universe

Mar 12

  

spring break

Mar 14

  

spring break

Mar 19

  

Concurrent ML; see also references

Mar 21

  

Project proposals: everyone

Mar 26

  

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

Mar 28

  

Lenses: William Hatch

Apr 2

  

no meeting

Apr 4

  

no meeting

Apr 9

  

Project reports: Akshay, Mike, Stone, Junior

Apr 11

  

Project reports: Steve, Simon, Shaobo, Sirus

Apr 16

  

Project reports: Liam, Kenway, Russell, Vinod

Apr 18

  

Project reports: Jen, Xinbo, Shen

Apr 23

  

Project reports: Anthony, Thanhson, Yaodong

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 lectures or exams 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.

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.