CS 4110, “Programming Languages and Logics,” is a thrilling amusement-park ride through the beauty and glory of programming languages, the theory behind them, and their implementation. It will not be easy, but you will achieve a clear and rigorous understanding of computing: a rare enlightenment that will give you great power.



Pandemic Logistics

CS 4110 is being offered as a hybrid course in Fall 2020. Some of the students in the course will attend some of the lectures in person, while others will attend all of the lectures on Zoom. Seating assignments will be posted on CMS before the first lecture. You should only come to lectures on the days indicated on CMS and you must sit in your assigned seat. Please don’t come to lecture if you are feeling sick or have any reason to believe you may have been exposed to the virus. Also, there is a non-zero chance that some lectures may need to be moved online at some point during the semester. If this happens, we’ll post an announcement on Campuswire.

Zoom and Panopto

Zoom links for lectures as well as Panopto recordings can be found on Canvas.

Announcements and Q&A: Campuswire

Speaking of Campuswire…. we will be using Campuswire for all announcements and communication about the course. (We’re using Campuswire instead of Piazza.) Sign up for an account there with your email address. That should give you access—if not, please see Canvas for the secret code. The course staff will post important updates there that you really want to know about! Check often, and be sure to enable notifications for the #announcements channel.

You can also ask questions—about lectures, homework, or anything else—on Campuswire.

If you can answer a question yourself, please do! But be careful not to post answers—if you’re not sure whether something is OK to post, contact the course staff privately. You can do that by creating a note that is visible only to “Instructors and TAs.”

A good post asks a specific question. Here are some examples of bad posts:

If you need help with a homework problem, for example, be sure to include what you’ve tried already, exactly where you’re stuck, and what you’re currently thinking about how to proceed. If you just ask for help without any evidence of effort, we’ll punt the question back to you for more details.

Assignments: CMS

You will download homework assignments, upload solutions, and receive grades through CMS. Please log in there to see whether you’re in the system. If you’re not, please send your NetID to the course staff and we’ll get you set up.

We’re using an anonymous grading system, i.e., we won’t know who we’re grading. So please do not put your name or NetID anywhere in the PDF you upload to CMS. (CMS knows who you are!)


We won’t use a textbook, but if you like books, we have some resources to suggest.


Final grades will be assigned with these proportions:

There is no algorithm for “curving” grades nor any predetermined cutoffs, so we won’t be able to answer questions about letter-grade projections.

Problem Sets

Problem sets are due on Mondays at 11:59 PM. See the course schedule. You can work on problem sets with a partner; you’ll turn in one completed assignment together.

We will drop one score to calculate your final grade: that is, your lowest-scoring problem set won’t count, even if that score is zero.

You’ll turn in assignments via CMS. We strongly encourage you to use TeX, but you can also write up answers by hand. If you do, scan your work and upload it as a PDF. It’s your responsibility to make sure scans are 100% legible—we won’t regrade work that was too hard to read.


Assignments are due at the time specified in CMS, and we ask that you always try to submit before that deadline, even if your solution is incomplete. That at least shows us that you are making progress.

But life happens: you miss the deadline because of other courses, illness, events in your personal life, and so forth. Rather than the burden of you having to ask for an extension in those circumstances, we will configure CMS to accept late submissions, usually up to 48 hours after the deadline. There will be no penalty for these late submissions. They are an automatic extension you may choose to grant yourself. We trust you to do so wisely—often, making use of them will result in you having less time to work on the next assignment. The purpose of automatic extensions is to give you a tool to manage the demands of life, including the following:

Be aware that after CMS decides that the late submission deadline has passed—even 1 second past it—no further submissions will be accepted. CMS does not provide a grace period on late submissions.

Beyond those automatic extensions, we will grant exceptional extensions in, well, truly exceptional circumstances. Those require accompanying documentation: a letter from a Cornell professor, advisor, or coach requesting the extension on your behalf; an obituary or wedding announcement published in a newspaper; a letter on official letterhead from a medical provider explaining a major illness or injury; or official SDS letters. Contact the professor to request such an exceptional.


There will be two take-home preliminary exams.

Makeup exams must be scheduled within the first three weeks of class. Check the schedule now to see if you have a conflict with another class and contact the staff immediately to reschedule.


There will be a course project, done individually or with a partner. See the project page for further details. The final deliverable will be due on Wednesday, December 16.


To get full credit on the 5% of your grade allocated to participation, you just have to do three things:

Free points!

The Difficulty You Can Expect

This is an advanced course, so some things will be different from other classes you have taken:

Grading on both homework and exams will intentionally focus on details. Compared to other courses, we will give more weight to “small” mistakes and less weight to getting the general idea right. That’s the nature of this course, which is about formalism. Often, the intuitive idea behind a problem is totally obvious! Then, the topic we’re working on is 100% about getting the nitty-gritty formal details right so we can prove something beyond a shadow of a doubt.


Academic Integrity

Absolute integrity is expected of all Cornell students in every academic undertaking. The course staff will prosecute violations aggressively.

You are responsible for understanding these policies:

You can also read about the protocol for prosecution of violations.

On problem sets, everything you turn in must be 100% completely your own work (with your partner, if you have one). You may discuss with other students about requirements for the assignment, programming in OCaml, etc. But when it comes to developing specific answers or coding, you may not talk to other students except for your partner or anyone else. Specifically:

Here’s the policy for exams: you may not give assistance to anyone or receive assistance of any kind from anyone at all (outside of the course staff) during an exam. All exams are open-book.

You may not give any hints or post any code that might be part of a solution on Campuswire (except in a private thread with course staff). On both assignments and exams, the web is always off limits: you may not Google anything or look anything up on Wikipedia to get help, for example.

Respect in Class

Everyone—the instructor, TAs, and students—must be respectful of everyone else in this class. All communication, in class and online, will be held to a high standard for inclusiveness: it may never target individuals or groups for harassment, and it may not exclude specific groups. That includes everything from outright animosity to the subtle ways we phrase things and even our timing.

For example: do not talk over other people; don’t use male pronouns when you mean to refer to people of all genders; avoid explicit language that has a chance of seeming inappropriate to other people; and don’t let strong emotions get in the way of calm, scientific communication.

If any of the communication in this class doesn’t meet these standards, please don’t escalate it by responding in kind. Instead, contact the instructor as early as possible. If you don’t feel comfortable discussing something directly with the instructor—for example, if the instructor is the problem—please contact the advising office or the department chair.

Special Needs and Wellness

We provide accommodations for disabilities. Students with disabilities can contact Student Disability Services at 607-254-4545 or the instructor for a confidential discussion of their individual needs.

If you experience personal or academic stress or need to talk to someone who can help, contact the instructor or: