Syllabus

Recognition

This is a one credit, three week, pass/fail course over winter break. I am fully aware that the other CS option is “Science Fiction in Computer Science.” I am fully aware that not everyone comes in with recent programming experience in a functional language. This will not be a course over which you should stress out. I want to pique your interests, to give you the opportunity to dig in as far as you wish, and (I hope) to spark in you an interest to continue to do more.

This will not be a course that frustrates you or expects prerequisites in order for you to enjoy. I plan to start with DrRacket 101 and go from there.

Purpose

The 2021 edition of CS5963 will introduce you to practical uses of relational, constraint, and logic programming, from the ground up. It will also introduces students to applications in other areas of computer science, education, and medical research.

Objectives

After this course you will be able to

  1. Make rudimentary use of an embedded relational programming language
  2. Compare and contrast definitions of functions and relations.
  3. Understand generally the use of relational programs in applications.

Contact

The best way to get in contact for personal, private (FERPA, etc) messages is via my email address jhemann@northeastern.edu. You should expect a response within 48 hours. You will find that I am faster with Piazza or our public forums. If I deem it even potentially useful to others, I will likely anonymize your letter, re-post it on Piazza, answer it there, and forward you the link.

A great regular way to reach out for help is via our office hours.

Assessment

We will not have attendance or a final exam component. Instead, our course will have a single, solitary project component. I intend this project to be a lay-up. I want to set the bar for “Pass” so low that a student can trip over it. I want plenty of opportunities to surpass this level. I want you to go far beyond the minimum threshold. But three weeks is enough to demonstrate, to acculturate, and to exhibit. I do not believe it is enough time to develop mastery of a full new skill. And we have folk from diverse enough backgrounds that we cannot all narrowly target in on one particular new skill if we want to.

I don’t want to frighten anyone who wasn’t signing up for a programming/implementation course. Nor do I want to bore experienced miniKanren programmers looking to hone their skills. I don’t want anyone feeling in over his or her head a week and a half in.

I highly encourage you to attend every session. I will try match your enthusiasm and interest, to show you things you find exciting, and to give you as much challenge as you want without ever becoming overwhelmed or nervous.

Attendance

We will not be taking attendance except as requested by the registrar.

Recordings

I will not record our class sessions on either audio or video. When appropriate, I will have on this course website some sets of lecture notes and in-class work. You can also take advantage of our TA staff.

Projects

The sole assessment this minimester is a single project. You will complete this individually or in pairs. Each of you will submit this, via Handins, by end of day (11:59pm Boston-time) on Sunday January 17.

Default Project

By default, your task will be to implement your own embedding of a Kanren language. If you have not implemented a programming language before, that could sound scary. You should be less concerned because:

  1. I will implement the same in front of you live, in class.
  2. One can typically write this implementation in <= 40m.
  3. You can implement it in as few as 30 lines of code.
  4. You will find 100+ exemplary implementations on miniKanren.org.
  5. Our course staff are polyglot programming experts.

Alternate/Additional Project Option

I want to give students an opportunity to demonstrate mastery of the material in a way that resonates with you. If you feel like you need or want more, or that your current assessments haven’t sufficiently demonstrated your understanding, you (we) can come up with something else for you to do. Please speak with me. There is plenty more to do.

One way to proceed is to implement or have implemented an implementation of above, and then to extend it from there with some features you find more interesting. Another choice is to start on something more exciting, or application driven, and to keep the other option in your back pocket.

Academic Integrity Policy

Students of course play an integral part in ensuring they receive the full benefit of their coursework. The students of 5963 are certainly beholden to the academic integrity policies of Northeastern University, the Khoury College. There are so many existing implementations though, and the features are so minimal that simply showing how to use your implementation is almost indistinguishable to me from having written it from scratch.

Teamwork and Collaboration

Pair programming is a central part of the undergraduate curriculum here. Pair programming is not intended to divide-and-conquer, but instead for students to collaboratively solve problems together. You are only twice as fast working separately if the typing is by and away the hardest part of programming. Which it is not.

Ultimately, you should be responsible for and have a firm understanding of all work submitted under your name. You should be able to demonstrate this mastery when requested.

Required Texts

There are no required texts for this course. I will post to the Schedule page select chapters from The Reasoned Schemer, and a number of links to workshops and presentations, conference talks, or research papers. You may also find more on the Readings page.

Academic Accommodations

If you have accommodations from the Disability Resource Center (DRC) please submit your Professor Notification Letter to me by email, preferably within the first two weeks of the quarter, so I can do my part to help you achieve equal access in this course. I am eager to discuss ways we can ensure your full participation.

I encourage all students who may benefit from learning more about DRC services to contact the DRC.

Technology and Platforms

As a course and a student body, we are more remote than usual, and preferable. We will leverage a number of Northeastern’s technology platforms to help bridge the chasm. Your first lab assignment will walk you through installing and configuring these.

We will use a variety of tools and platforms to facilitate teaching and learning at a somewhat remote distance and to compensate for this unconventional semester. These include DrRacket, Piazza, Canvas, Zoom, PollEverywhere, and Hypothes.is. Please see the technology page for more details.

Health and Safety

The university has put into place a robust plan to make the campus healthy and safe for all — but you must do your part. On August 22, all students received an email from Senior Vice Chancellor for Student Affairs Madeleine Estabrook on the expectations for behavior both on campus and off campus. Please read it carefully today.

To summarize:

  • Gatherings on or off campus must conform to healthy practices as outlined by university and Massachusetts state guidance. If you host or attend an inappropriate party or gathering, you run the very real risk of immediate removal from the community.

  • Wear a mask indoors and outdoors as you maintain a 6-foot distance from everyone.

  • Get tested every three days using the COVID-19 Test Scheduler (covid19-testing.northeastern.edu.) We may require more frequent testing as the semester progresses. It’s quick, easy and will help us to quickly identify and care for anyone who tests positive. I will not be told the identity of anyone who tests positive, and you do not need to share that information with me or anyone else unless you want to. If you receive a positive test result, you will be contacted by a member of the university’s telehealth team who will provide you with next steps.

  • Do a Daily Wellness Check (wellness-check.northeastern.edu), wash your hands well and regularly, and disinfect high-touch surfaces and spaces.

  • I will be wearing a face covering or mask as I teach and expect that you will do the same in class. If you come to class without a mask, I’ll ask you to go and get one on campus. You can get a mask at the Visitor Center or at the Curry Student Center Help Desk. If you refuse to wear a mask in class, I won’t be able to continue the class. If you are not sitting six feet apart from your classmate, I’ll ask you to do so. We won’t be able to eat or drink in class (except water). If you test positive, you will need to enter isolation as directed by the university’s telehealth team. I expect that you will not come in-person to class and that you will follow the guidance from the university telehealth team to isolate and get appropriate healthcare if needed.

  • Staying safe is a responsibility that we all must take seriously. Keep in mind the “Protect the Pack” theme. Remember that our individual actions will help everyone stay safe this Spring.”

Acknowledgments

Much of this course material comes from Friedman’s C311 at IU. Lindsey Kuper inspires some of this site as well as being all-around inspirational.

In the syllabus