CS 583: Advanced Functional Programming (Spring 2020)
|Instructor:||Eric Walkingshaw ()|
|Lectures:||TTh, 10:30–11:50am, Zoom (link on Canvas)|
|Office Hours:||Th, 2:00–3:00pm, Zoom (link on Canvas)|
Course Description – A brief overview of the content, goals, and philosophy of the course.
Grading and Collaboration Policy – How grades will be computed and policy for collaboration in various aspects of the class.
Community Statement – Every student should feel safe and welcome to contribute in this course. Please read this statement and let’s work together to make this a great environment for everyone.
Haskell Links and Resources – How to install GHC and Haskell packages. Also includes several tutorials, freely available books, and other resources that you should use to supplement the content of this class.
This webpage is a “living syllabus”. All information you need for the class is provided or linked here, and every effort will be made to keep that information up-to-date.
All of the main content of the course will be posted below. This will included required and optional readings, and slides and examples from lectures. I will often post an initial version of an example before lecture so that you can follow along more easily, then post the updated version after class.
Course Introduction (Mar 31)
How to FP (Apr 2–9)
Refactoring (Apr 9–14)
Higher-Order Data (Apr 14–21)
Type Classes (Apr 23–28)
Type Constructor Classes and Functors (Apr 28–30)
Monads (Apr 30–May 12)
Monad Transformers (May 14–19)
Generalized Algebraic Data Types (May 19–21)
Free Monads (May 21–26)
Purely Functional Data Structures (May 26–Jun 4)
Graph Reduction (Jun 4)
Hasklets, project milestones, and other assignments will be submitted through Canvas. You will also be submitting feedback for your classmates’ Hasklets and project milestones. These will be posted as assignments in Canvas.
All deadlines are at 5pm unless otherwise noted.
- Introduce Yourself! — due: Apr 3
- Hasklet #1 — due: Apr 6
- Hasklet #2 — due: Apr 17
- Project Proposal Draft — due: Apr 27
- Project Proposal Revision — due: May 1
- Hasklet #3 — due: May 4
- Project Milestone #1 — due: May 11
- Hasklet #4 — due: May 18
- Project Milestone #2 — due: May 25
- Final Project Submission — due: Jun 10, 10am
There are also overview pages describing two of the main kinds of deliverables in the course:
Accommodations for Students with Disabilities
Accommodations for students with disabilities are determined and approved by Disability Access Services (DAS). If you, as a student, believe you are eligible for accommodations but have not obtained approval please contact DAS immediately at 541-737-4098 or at http://ds.oregonstate.edu. DAS notifies students and faculty members of approved academic accommodations and coordinates implementation of those accommodations. While not required, students and faculty members are encouraged to discuss details of the implementation of individual accommodations.
Reach Out for Success
University students encounter setbacks from time to time. If you encounter difficulties and need assistance, it’s important to reach out. Consider discussing the situation with an instructor or academic advisor. Learn about resources that assist with wellness and academic success at http://oregonstate.edu/ReachOut. If you are in immediate crisis, please contact the Crisis Text Line by texting OREGON to 741-741 or call the National Suicide Prevention Lifeline at 1-800-273-TALK (8255).