COMP311

In Fall 2020, the official course website was at link.

In Fall 2021, we will eventually move over the resources to GitHub Pages. This is a work in progress…


Brief Description

This class provides an introduction to functional programming. Functional programming is a style of programming in which computations are solely expressed in terms of applications of functions to arguments (which themselves can be functions). This style of programming has a long history in computer science, beginning with the formulation of the Lambda Calculus as a foundation for mathematics. It has become increasingly popular in recent years because it offers important advantages in designing, maintaining, and reasoning about programs in modern contexts such as web services, parallel (multicore) programming, and distributed computing. Course work consists of a series of programming assignments in the Racket, Java, and Haskell programming languages plus occasional written homework assignments on underlying theory.

Office Hours

  Time Location
Corky TuTh 1:30-2:30 and by appointment on TuTh DH 3104
Agnishom Monday, 4 - 6 PM Courtyard between Student Center and Rice Memorial Chapel
Chatham Abate Wed 7 - 9 PM McMurtry Commons
Henry Ding Friday, 12 - 2 PM Duncan Hall Floor 3 In Front of Ken Kennedy Conference Room
Lize Chen Fri 1 - 2 PM, Fri 3:30-4:30 PM See piazza -> Resources -> Staff

Lecture Schedule (Canvas -> Announcements -> Lecture Recordings)

Week Day Date Lecture Topic and Resources Work Assigned Work Due
1          
  Th Aug 26 Class Recording, Slides
2 Tu Aug 31 Class Recording
  Th Sep 2 Class Recording GitHub Fundamentals Sep. 8
3 Tu Sep 7 Class Recording Assignment 1 Sep. 10
  Th Sep 9 Class Recording
4 Tu Sep 14 Class Canceled Assignment 2 Sep. 20
  Th Sep 16 Class Recording
5 Tu Sep 21 Class Recording Assignment 3 Sep. 27
  Th Sep 23 Class Recording
6 Tu Sep 28 Class Recording Assignment 4 Oct. 4
  Th Sep 30 Class Recording
7 Tu Oct 5 Class Recording
  Th Oct 7 Class Recording Assignment 5 Oct. 18
8 Tu Oct 12
  Th Oct 14 Class Recording
9 Tu Oct 19 Class Recording
  Th Oct 21
10 Tu Oct 26
  Th Oct 28
11 Tu Nov 2
  Th Nov 4
12 Tu Nov 9
  Th Nov 11
13 Tu Nov 16
  Th Nov 18
14 Tu Nov 23
  Th Nov 25
15 Tu Nov 30
  Th Dec 2
16 Tu Dec 7
  Th Dec 9
16 Tu Dec 14 END OF SEMESTER