As a course and a student body, we are more remote than usual, and preferable. To help bridge the chasm, I will leverage some of the technology platforms Northeastern makes available to us.

Duo 2FA

Most if not all students will already have enrolled themselves for the Duo 2FA system. It is essential that you do so to access Northeastern’s digital resources. Northeastern has at least two tutorials for installing and using the Duo 2FA system:

Piazza hosts our main Q&A forum. We are everyone learning; no one knows all the answers, and remember that everyone wears their best and most knowledgeable face. For questions related to the course material, assignments, policies, or what have you, please utilize Piazza. I generally prefer anonymous Piazza posts over email—this way others get the benefit of your thoughtful question and answers and corrections scale to the size of our class. Please do anonymize them if you wish; we can see even if you cannot. Frequently someone will have the same concern or be feeling the same way.

If it doesn’t “give away the punchline” of some homework question or assignment, necessitate PII in the question or the answer, and isn’t contrary to FERPA or your rights under the Northeastern University Handbook, please do consider if this can be a Piazza message.


I will be utilizing the school’s Enterprise git at []. You should have access to that with your KCCS account. I will expect you to know how to access this, for your own benefits and for coursework. If you are not familiar, please consult the Khoury Systems group’s documentation and walk-through.

Course Homepage

I constructed our course homepage as a Jekyll site built with Github Pages. Student corrections and improvements are incredibly welcome! You can submit a pull request (PR) for a quick correction and improvement. Every page on this website has a direct links to its .md file in this repository.

Handin Server

We will use the Handin server (bottlenose) to submit homework. You will likely have experience with this platform from Fundies I; if you do not, please read the Handin Server Guide.


As a part of a participation grade, I will be asking poll questions in class (often several per class). These will constitute a part of your grade. I will expect you to login to answer, during the class period itself. You should ensure that you have added your northeastern university email address account, and have this active and enabled.

You can use the web browser, the desktop app, or the mobile app (Apple) (Android). Regardless of however you configure this, have it with you and available at all times.

There is a KB Article on logging in via Northeastern.


I intend to broadcast our course meetings via Northeastern Zoom. I prefer it over MS Teams for a variety of reasons. Not the least of which is the instantaneous and anonymous feedback that it provides, via Dial testing. You will find it helpful to have two internet-enabled devices with at hand when you are attending class remotely, once for viewing the class and a second for answering poll questions.

Via direct installation.

If you have difficulty installing or using the platform please see ITS’ associated KB article or contact Zoom support.

Via the browser

You also have the option to join without downloading or installing any software, via the Zoom web client. The web client does not have all the functionality of the desktop or mobile apps; please see the comparison here.


Go to, and follow the instructions to install the GlobalProctect VPN client on your machine. You will need this to use the VDI linux machines. If you have difficulty please consult the relevant ITS KB articles, and if necessary reach out to ITS support.

VDI Linux Machines

Khoury VDI Virtual Desktops, and the relevant ITS KB articles.


Download and install Racket and the DrRacket integrated development environment. To begin with, I will use DrRacket in front of the classroom to demonstrate Racket and miniKanren programming, and I want you all to follow along and to practice during designated practice periods.


We will also use the Rackunit unit testing framework. This is another Racket package. We will use this as a substitute for the check-expect you might have come to appreciate if you have already taken Fundamentals I at NEU. We make this substitution because check-expect doesn’t exist in the full racket language.


I will base our discussion, usage, and implementation around the miniKanren language. You can install this in DrRacket via the faster-minikanren package in the package manager. You can also (likely) find this implemented for the language of your choice at []. We will at first use the Racket implementation

Other packages as they come up

Prepare yourself to download and install other packages as necessary to make our test suites run. You will not need any additional packages to complete your homework, nor should you use them.


One of the things I miss most about real, in-person classrooms is being able to applaud someone for a job well done, and for giving it a shot. Here’s our best alternative. If each of us goes here and enters his or her name then, when one of us presses the applause button, we can all see and hear it.