Schedule

Table of Contents

This schedule page will probably be your main landing site for the course. Bookmark it! We’ll try to keep all the key information linked from here.

1 Calendar

See the Piazza All the Things! post for a list of all the key course material with links. (Suggest links we’re missing in comments, please!)

See our course’s PrairieLearn assessment schedule for key assessment dates, except quizzes (which are instead listed on PrairieTest). Use the little “question mark” button to see details like the full set of alternate due dates for assignments.

Also review the sections below and the important dates section of the syllabus.

2 Lecture and In-Class Exercises

Our lectures are Mondays, Wednesdays, and Fridays 15–15:50PM held in DMP 310 except on quiz days. In-class exercises will generally be due no earlier than the end of the day we finish that unit in lecture. See PrairieLearn for schedule and details!

Number Title Notes Code
12 Negation as Failure notes
11 Unification notes
10 Binary Search Trees in Prolog notes
9 Full Prolog, Syntax and Semantics notes
8 Prolog as a Programming Language notes
7 Introduction to Prolog notes
6 I/O, Yay!! pre-class in-class
5 Ad Hoc Polymorphism with Type Classes pre-class in-class
4 Polymorphism and Higher-Order Functions pre-class in-class
3 Algebraic Data Types pre-class in-class
2 Intro to Haskell pre-class in-class
1 Welcome to CPSC 312! pre-class in-class

3 Help Sessions

We expect to have regular open help sessions every week (not on holidays) from Sep 4 through Dec 6. You can find these on Piazza, which we’ll keep up-to-date with the latest changes.

4 Quizzes

Our quizzes will be on Fridays during our regular lecture time on the following dates (confirmed as of 2024/09/04):

Plus a final quiz during our scheduled final exam slot.

If you cannot use your own computer during quizzes, let us know well before the quiz date. A large fraction of students (assigned semi-randomly) will write the quiz in the CBTF. Those assigned to our classroom will work on their own computers. In both cases, you will have access to a Haskell or Prolog IDE (as appropriate), but only via PrairieLearn/PrairieTest. Your computer may only have PrairieLearn/PrairieTest tabs open, and you may not interact with any other systems on your computer during the quiz.

In addition, there will be two opportunities for make-up/retake of a limited number of quizzes:

As these dates approach, we will post details on how to select which quiz(zes) you will retake. (You may not be allowed to retake quizzes unless you follow those posted instructions; so, keep your eyes out for that!)

We plan to allow students to opt to make-up or retake up to two quizzes that were already completed by the time of the session. If the new grade is higher than the old one, it replaces the old one. Otherwise, your effective grade is the average of the old and new grades. We will try to make the new quiz comparable to the original, but that can be hard to ensure! (If you do not wish to make-up/retake any quiz, you do not need to attend the midterm make-up session, and you can leave the final exam session after the quiz time is over.)

5 Assignments

Assignments’ due dates will be listed on PrairieLearn. We plan to offer a little bit of extra credit for submitting assignments early.

Title Due Early "Due Date" Late Due Date
Assignment 3, Animal Crossing Out 2024 Nov 14 2024 Nov 8 2024 Nov 18
Assignment 2, Unify Two Tree-Structured Terms 2024 Oct 28 2024 Oct 17 2024 Nov 1
Assignment 1, Looking Out for Number One? 2024 Sep 26 2024 Sep 19 2024 Sep 30

6 Projects

See the Project Requirements for additional details, including format and rubric.

You will work in a team of 3–5 students on the project. We will ask for your team selection as part of the Haskell project proposal submission on PrairieLearn.

The three key deadlines for your project are:

  1. Haskell project proposal: end-of-day Tuesday Oct 22
  2. Prolog project proposal: end-of-day Friday Nov 8
  3. Final project submission: end-of-day Tuesday Dec 3

Each proposal will be a written document outlining what you plan to do in the project, along with a small prototype. The prototype should be a proof-of-concept that takes a SINGLE SMALL but important element of the project and builds it out into code. It’s fine for portions of this to be “stubbed out” as long as enough is there to learn from and play with a bit.

The final project submission will include a brief written document to describe what you’ve accomplished, the code for your project, and a video demo of what you have done.