Douglas Howe.
The calendar prerequisites are COMP 2402 and COMP 1805. We won't be apply much of the specific content of those courses, but it's important to have proficiency in an imperative language (like Java) and an understanding of some basic mathematical foundations.Students would have gotten this from 2402 (and its prerequisites) and 1805.
basic competence in applying a modern functional programming language
basic competence in using recursive techniques for problem solving and in reasoning about the resulting recursive programs with reference to the inductively-defined data-types they operate over
an understanding of the different kinds of evaluation that can be used in functional languages, and basic competence applying programming techniques exploiting lazy evaluation
a basic understanding of the relationship between and relative merits of functional vs imperative programming languages
a basic understanding of the theoretical underpinnings of functional languages (the lambda-calculus)
ability to provide and explain compelling examples of the applicability of selected advanced abstraction mechanisms from type theory
familiarity with techniques for handling imperative operations, such as variable assignment, pointer manipulation, concurrency and exceptions, in a purely functional language
a basic understanding of the principles of the logic programming language Prolog and why practical compromises transmogrify it into a hideous abomination that is swirling the drain into the ash heap of history but is still, for some reason, in the calendar description for this course
The course will have synchronous lectures in the published time slot. The lectures will be done via Zoom. They will be recorded and uploaded to Brightspace.
The lectures will not usually use prepared slides. The instructor will produce handwritten slides in real time and upload a pdf of them after the lecture.
Extensive use will be made of "Ed Discussion", a new Q&A tool being used by most of the top US universities. This will be the place where you can ask questions and have them answered. Answers can be from other students or from course staff (instructor and TAs), and answers by students can be annotated/approved/highlighted by staff. It is expected that most interaction outside of class will be done this way, and that conventional 1-1 office hours will only only be for unusual issues. More information on this tool will be given early in the term.
Much of the work of the course will be using the Haskell programming languages (see below on course software). There will be five assignments and they will mostly be based on Haskell. All assignments are to be submitted using the course Brightspace site.
Three of the lecture slots will be used for proctored quizzes. We will probably be using CoMas, a Carleton proctoring tool that enables students to use their own programming environment.
There will be a final exam during the scheduled exam period. It is currently undecided whether the exam will be using CoMas or will be conventional test with textual answers.
Date | Event |
---|---|
Mon Oct 04 | A1 due |
Wed Oct 06 | Quiz 1 |
Mon Oct 11 | Thanksgiving |
Wed Oct 20 | A2 due |
Mon Oct 25 | Break starts |
Mon Nov 08 | A3 due |
Wed Nov 10 | Quiz 2 |
Wed Nov 24 | A4 due |
Wed Dec 08 | A5 Due |
Fri Dec 10 | Quiz 3 |
Notes:
We will be using the language Haskell for this course. To run Haskell, you'll need the Haskell compiler ghc and the package manager cabal. You can download both from haskell.org. There are numerous IDES that support Haskell, but you don't really need one. The programs you will write for the course will be small. Syntax highlighting is pleasant but certainly not necessary.
For most students it will be enough to edit programs as regular text files (though with a ".hs" extension), and run/test them inside ghci, which is a read-eval-print loop accepting Haskell expressions and a limited command set (e.g. to load a file). Typing :help in ghci will give you a list of all available commands.
If you do want a full-featured programming environment, I strongly recommend VSCode. The VSCode Haskell extension requires the) Haskell Language Server, which can be downloaded from the same page as the compiler. VSCode runs on basically everything (Mac, Windows, Linux).
Note: the Windows Haskell install looks a bit off-putting (but I'm a Mac person). Try it if you like, it's probably fine, but if you don't have access to Linux or Mac OS machine, and the Windows install is too clunky, you can use a Linux virtual machine. To do this, follow these instruction to install VirtualBox, and then get a recent Ubuntu vm from the School's Course Virtual Machines page. The COMP 2401 vm is fine.
Weight | Component |
---|---|
40% | Best four of five equally weighted assignments |
35% | Best two of three equally weighted quizzes |
25% | Final exam |
In addition, getting below 40% on the final exam will automatically make the final grade F regardless of term work.
Dropping the assignment with the lowest grade is intended, in part, to soften the policy that late assignments will not be accepted. Brightspace submissions will automatically close at the time stated for the assignment. There are some possible extenuating circumstances that might justify an exception, such as documented illness, but technical problems, such as loss of internet connectivity, will not be considered. If you're getting close to the deadline, you should probably submit something preliminary, and resubmit if you get more done. If you gamble on everything working at the last minute, the risk is entirely yours.
Missed quizzes will be graded zero except in the case of documented illness or pre-arranged accommodations.
This 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.