Assignments

You can always find the latest Combinator.fs here

Date Posted Date Due Assignment Turn-in Method
Thursday, Sept 8 Sun, Sept 11 Complete Lab 0.
Be sure to fill out the Google Form!
Gitlab
Friday, Sept 9 Wed, Sept 14 Read A Brief Introduction to F# (corrected with 'dotnet fsi' on 9-14-22) and then complete Quiz 1 in GLOW.
Opens on Tuesday at noon; closes on Wednesday at 10pm.
You have 30 minutes to complete it. Open book, open note.
GLOW
Friday, Sept 9 Sun, Sept 18 Read A Slightly Longer Introduction to F# (corrected with 'dotnet fsi' on 9-14-22) and then complete Lab 1.
Gitlab
Saturday, Sept 17 Sun, Sept 25 Read Advanced F# and then complete Lab 2.
Gitlab
Monday, Sept 26 Sun, Oct 2 Read Introduction to the Lambda Calculus, Part 1, Grammars and Parse Trees, and Introduction to LaTeX and then complete Lab 3.
Your starter code comes with a LaTeX template filled with examples, but if you want to see another absolutely minimal version filled with almost nothing, have a look here.
Gitlab
Sun, Oct 2 Wed, Oct 5 Do Quiz 4 on GLOW. This quiz covers last week's readings on the lambda calculus and parsing.
Gitlab
Sat, Oct 1 Sun, Oct 9 Read Introduction to the Lambda Calculus, Part 2 and then complete Lab 4.
Please read the above reading carefully; I tried to keep it short but there's a lot to talk about. Also, I updated it extensively for this year. If you have trouble understanding something, please let me know, either in person or in the lab feedback.
Gitlab
Sun, Oct 9 Sun, Oct 16 Read Proof by Reduction and then complete Lab 5.
Also read Beating the Averages by Paul Graham (hint: the subject of next week's quiz).
Gitlab
Sun, Oct 16 Sun, Oct 23 Read A Brief Overview of C, watch Growing a Language by Guy Steele, and then complete Lab 6.
The purpose of this lab is to get you thinking about how the selection of basic elements in a language (and how they fit together) can have a big effect on how easy or hard it is to write programs. Remember, programming languages are designed by humans for humans!
Note: Guy’s talk starts with an example that may strike the modern viewer as unnecessarily gendered. I hope you appreciate that times have changed, because the rest of the talk is worth your time.
Gitlab
Mon, Oct 24 Sun, Oct 30 Read C: A Language Built Around a Memory Model, Passing Pointers by Value, and then complete Lab 7 (updated 2022-10-26 with hints).
Gitlab
Mon, Oct 31 Sun, Nov 6 Complete a project brainstorm.
Also, read How to Fix a Motorcycle. It's a short essay on the interplay between your mind and your problems. It usually resonates with people who have written a computer programs. We will discuss the reading next week.
Gitlab
Mon, Nov 7 Sun, Nov 13 If you have not yet done so, read How to Fix a Motorcycle.
Also read Parser Combinators and complete Lab 9.
Gitlab
Thu, Nov 17 Sun, Nov 27 Complete Project Checkpoint #1.
Gitlab
Tue, Nov 29 Sun, Dec 4 Complete Project Checkpoint #2. Also read Unit Testing in F# for next week's quiz and a future project checkpoint. The reading is structured as a tutorial, and you are strongly encouraged to follow along on your own computer.
GITHUB
Tue, Dec 6 Sun, Dec 11 Complete Project Checkpoint #3. From here on, it's 100% project work! Use your time wisely and please come see me if you get stuck.
GITHUB
Tue, Dec 6 Sun, Dec 18 Finish your final project. You can ensure that you get a very good grade by completing every item on this checklist. Don't forget that you must produce a short presention video. The easiest way to do this is to make a small slide deck (5-7 slides), start a Zoom recording, and then show me the slides and a short demo of your language in action. That's it! Be sure to upload this someplace I can find it and include the URL in your repository.

Here are some sample final project presentations:
Arpeggify, Jared Berger, Spring 2020.
PixelPunk, Max Kan and Rijul Jain, Spring 2022.
CardX, Ruby Teklemariam and Levi Borevitz, Spring 2022.
GITHUB
  • CSCI 334: Principles of Programming Languages, Fall 2022

CSCI 334 website repository, Fall 2022

Powered by Bootstrap 4 Github Pages