Schedule
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):
- Sep 20
- Oct 4
- Oct 18
- Nov 1
- Nov 22
- Dec 6
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:
- Wed Oct 23 7–9PM in the CBTF and DMP 110. (Room assignments will be available on PrairieTest shortly before the retake day.)
- Our final exam slot
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:
- Haskell project proposal: end-of-day Tuesday Oct 22
- Prolog project proposal: end-of-day Friday Nov 8
- 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.