Skip to content
This repository has been archived by the owner on Apr 9, 2024. It is now read-only.
/ CS316-2020 Public archive

The 2020-21 Edition of CS316 "Functional Programming" @ the University of Strathclyde

License

Notifications You must be signed in to change notification settings

bobatkey/CS316-2020

Repository files navigation

CS316 “Functional Programming”

Welcome to the source code repository for the University of Strathclyde CS316 “Functional Programming” course.

This is a course designed to teach Haskell to undergraduate students. The written course materials are available from this repository. Video lectures and access to the Mattermost forum for this course are available to Strathclyde students via the course's MyPlace page.

Getting started

The code in this repository is structured as a Stack project. You can install Stack by following the instructions on the linked page. Note that for Windows, the link to the installer appears to be broken, please try this link instead.

Once you have Slack installed, running the following commands on a Unix-like system will get the Haskell compiler installed, and the lecture notes and other programs compiled:

$ cd some/nice/directory      # replace 'some/nice/directory' with a real one
$ git clone https://github.com/bobatkey/CS316-2020.git
$ cd CS316-2020
$ stack build
    ... lots of output, might download some things ...
$ stack exec hello-cs316
hello CS316!
$ stack ghci lecture-notes/Week01.hs
    ... will start the interactive Haskell compiler with Week 1's lecture notes loaded ...

Lecture Notes

The lecture notes for this course are intended to accompany the video lectures, and provide mostly the same information in a searchable and less linear format that is less bandwidth hungry.

The notes are Haskell files with interleaved code and commentary. You are encouraged to experiment by loading these files into ghci and editing them. Each section in the files has a few tutorial questions that we will go through in the tutorial sessions.

  • Week 1 : Data and Functions
  • Week 2 : Solving Problems by Recursion
  • Week 3 : Higher Order Functions
  • Week 4 : Patterns of Recursion
  • Week 5 : Classes of Types
  • Week 6 : Simulating Side Effects
  • Week 7 : Monads
  • Week 8 : Real Input/Output and Parser Combinators
  • Week 9 : Data Dependencies and Applicative Functors
  • Week 10 : Lazy Evaluation and Infinite Data

Coursework Assignments

The coursework assignments will be distributed via this repository when they are released. Check MyPlace for dates.

  • Exercise 1 : First-order Programming : Was released Thursday 24th September. The deadline is Thursday 15th October. Fill your answers in and submit by uploading the Ex1.hs file to MyPlace.
  • Exercise 2 : Higher-order Programming : Was released Wednesday 14th October. The deadline is Thursday 29th October. Fill your answers in and submit by uploading the Ex2.hs file to MyPlace.
  • Exercise 3 : Programming Project : Was released Thursday 5th November. The deadline is Thursday 3rd December. Fill your answers in and submit by uploading the files to MyPlace.

About

The 2020-21 Edition of CS316 "Functional Programming" @ the University of Strathclyde

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •