COMP 3007 Fall 2023

Staff

Role Name Email
Instructor Douglas Howe douglashowe@cunet.carleton.ca
TA Alexander Breeze alexbreeze@cmail.carleton.ca
TA Chengjie Mao chengjiemao@cmail.carleton.ca
TA Jared Tarnocai jaredtarnocai@cmail.carleton.ca
TA Nazeeha Harun nazeehaharun@cmail.carleton.ca
TA Nuha Sheikh nuhasheikh@cmail.carleton.ca

Prerequisites

COMP 1805 and COMP 2402. Prerequisites are enforced for this course. Those without the prerequisites will be deregistered.

Laptop Requirement

All students in the course are required to have a laptop that they can bring to class. The lectures will not require them, but the in-class quizzes will.

Course learning outcomes

Course structure

This is a synchonous in-person course. The instructor intends to record lectures and post them on the course website to assist students who are sick etc, but there is no guarantee. If for some reason a lecture does not get recorded, it will not be redone later. Lectures will not be streamed live.

Lectures will be a mix of slides and "live coding". The slides and code will be posted on the course website along with a recording of the lecture. Lecture attendance is optional (but see above about videos).

Extensive use will be made of "Ed Discussion", a Q&A tool being used by most of the top US universities. This will be the main place where you can ask questions and have them answered. Answers can be from course staff (instructor and TAs), or from other students. Answers by students can be endorsed/annotated/highlighted by staff. It is expected that most interaction outside of class will be done this way. Conventional 1-1 office hours will only only be for students who are struggling with the material enough that they are unable to formulate specific questions.

Almost all of the term work of the course will involve the Haskell programming languages (see below on course software). See the "Help" section of the course website for instructions on how install Haskell.

Textbook and references

There is no textbook for the course, but the online book Learn you a Haskell for Great Good is an excellent tutorial-style book for learning basic Haskell. Relevant sections will be pointed out at the course proceeds. Other web resources may be provided or pointed out during the course.

Discord vs Ed

There is no official Discord channel for the course. Students, as always, are free to use one, as long as they adhere to University rules about harassment etc, but the course staff will not be answering course-related questions there, and will not be responsible for any misinformation appearing there. The Ed discussion tool is the place to get help with course material, and to discuss it with other students.

Assessment scheme

Weight Course component
10% 12 assignments @1%, lowest two dropped
45% 4 quizzes @15%, lowest dropped
45% Final exam

Late assignments

Late assignments might be graded, but will have a zero recorded for them no matter what the reason for lateness.

Missed assignments and quizzes

The dropping of low scores in the assessment scheme is intended to account for work that's missed for reasons beyond a student's control. There will be no other accommodations granted for missed quizzes or assignments no matter what the reason, so be careful save your "free passes" for illnesses or other events out of your control.

E-proctoring

Quizzes will be done in-class using your laptop. Typically you will be writing programs using whatever programming environment you like, and submitting the answers to Gradescope.

Unfortunately, for this to work in a classroom setting it's essential to use e-proctoring to make sure students aren't getting outside help.

The quizzes and, possibly, the final exam, will use CoMaS, an e-proctoring tool developed in the Carletonn's School of Computer Science and now officially supported by our Exam Services.

CoMaS is a small tool you install on your laptop for the exam period. It does not look at anything that was on your laptop before the exam starts. During the exam, it takes occasional screen shots and webcam pictures, and monitors file changes. After the exam the tool can be deleted.

CoMaS has been thoroughly vetted by the university. If you're concerned about privacy, maybe the following will help.

  1. You almost certainly have already installed apps from sources far less trustworthy than a large public university, including sources whose business model relies on harvesting personal information.

  2. A breach of student privacy using CoMaS, if it became public, would be an existential crisis for the university. One thing I've learned about senior academic management is that if anything gives them nightmares it's the possibility of negative national press.

If you have questions about CoMaS and privacy, please see the CoMaS Privacy FAQ.

If for some reason you can't tolerate temporarily installing CoMaS, the only alternative is to write the test on paper. You wouldn't get the help of a programming environment, or autograding in Gradescope to help with debugging, but it would still be a reasonably fair test. The programs you will be asked to write will be tiny.

Course schedule

Date Topic (tentative) Event
Thu Sep 07 Procedural v functional
Tue Sep 12 Integer recursion
Thu Sep 14 Equational reasoning A1 due
Tue Sep 19 Data types and case
Thu Sep 21 Data types and recursion A2 due
Tue Sep 26 Quiz 1
Thu Sep 28 Guards, let, where, lambda A3 due
Tue Oct 03 List hacking, map, filter
Thu Oct 05 The Maybe data type A4 due
Tue Oct 10 Induction and recursion
Thu Oct 12 Interpreters: expressions A5 due
Tue Oct 17 Quiz 2
Thu Oct 19 Interpreters: environments A6 due
Tue Oct 24 fall break
Thu Oct 26 fall break
Tue Oct 31 Interpreters: mini-Haskell
Thu Nov 02 Currying A7 due
Tue Nov 07 Higher-order programming
Thu Nov 09 Fold/reduce A8 due
Tue Nov 14 Quiz 3
Thu Nov 16 Type classes A9 due
Tue Nov 21 Maybe monad and do
Thu Nov 23 IO in Haskell: a naive approach A10 due
Tue Nov 28 The IO monad
Thu Nov 30 Lenses A11 due
Tue Dec 05 Quiz 4
Thu Dec 07 TBD A12 due

Academic integrity

Current information on academic misconduct (definitions, consequences etc) can be found here.

Accommodations

The course follows Carleton's policies. For a description of the kinds of accommodations available, and how to request them, see Carleton's Academic Accommodations page.