CS 6110 is Cornell’s graduate class on programming languages. It represents what we think every PhD student should know about the theory and practice underlying computation. It blends formal foundations with real-world applications and connections to other fields in computer science.
- All course communication will happen on Piazza. Please sign up and turn on email notifications.
- Homework and grading happens on CMS.
- There will be five two-week homework assignments.
- You can work in pairs on homework if you like, in which case you’ll write one submission together.
- Your lowest homework score will be dropped, and you have 3 slip days you can allocate throughout the semester.
- There will be one prelim and one final exam.
- The preliminary exam is a “take-home” exam. You’ll have 24 hours to take the exam anywhere in the week just before spring break.
- The final exam will use the course’s allocated final slot.
- Expect the homework to make you try things we haven’t done in class. Exams will be less expansive.
- Grading for both homework assignments and exams will have a high standard for precision—because this class is about formalism, little details and mistakes matter more than they do in other classes.
Announcements and Q&A: Piazza
We will use a Piazza forum for announcements and communication about the course. Please sign up for the Piazza instance. The course staff will post important updates there that you really want to know about! Check often and enable email notifications.
You can also ask questions—about lectures, homework, or anything else—on Piazza. The course staff will respond as quickly as possible. It’s the most efficient way to get help.
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, you can use the “private” flag to make it visible to the instructors only.
A good Piazza post asks a specific question. Here are some examples of bad Piazza posts:
- “Tell me more about broad topic X.”
- “Does anyone have any hints for problem Y?”
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.
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.
There are no required textbooks. However, if you find yourself wanting extra background, you these textbooks might be helpful:
- The Formal Semantics of Programming Languages by Glynn Winskel.
- Types and Programming Languages by Benjamin C. Pierce.
And here are a couple of good online textbooks that are relevant to the course:
- Programming Languages: Application and Interpretation by Shriram Krishnamurthi.
- Software Foundations by Benjamin C. Pierce and a supporting cast.
Final grades will be assigned with these proportions:
- Problem sets: 30%
- Preliminary exam: 30%
- Final exam: 40%
Problem sets are due on Wednesdays 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.
You have three slip days that you can allocate to problem sets throughout the semester. When you use a slip day, it lets you turn in the assignment 24 hours late without penalty.
Aside from that, late work will not be accepted and will count for zero points.
There will be a take-home prelim a non-take-home final exam. You’ll be able to take the prelim anywhere within a one-week period just before spring break; see the course schedule. The final will take place in the ordinary final slot for the class, which, this semester, is Tuesday, May 23 at 9:00am.
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 instructor immediately to reschedule.
Absolute integrity is expected of all Cornell students in every academic undertaking. The course staff will prosecute violations aggressively using automatic detection tools.
You are responsible for understanding every word of these policies:
- Cornell University Code of Academic Integrity
- Computer Science Department Code of Academic Integrity
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:
- Do not show any partial solution to another student or give any hints.
- Never share code. (Shared code is surprisingly easy to detect.)
- Do not search the Internet for solutions.
- Do ask someone if you’re confused about what the assignment is asking for.
- Definitely ask the course staff if you’re not sure whether or not something is OK.
Here’s the policy for exams: You may not give assistance to anyone or receive assistance of any kind from anyone at all during an exam. You can use notes from the class on the take-home prelim but not on the final.
You may not give any hints or post any code that might be part of a solution on Piazza.
If you are unsure about what is permissible and what is not, please ask!
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
It is university policy to provide reasonable accommodations to students who have a documented disability (e.g., physical, learning, psychiatric, vision, hearing, or systemic) that may affect their ability to participate in course activities or to meet course requirements. Students with disabilities are encouraged to contact Student Disability Services at 607-254-4545, or the instructor for a confidential discussion of their individual needs.
If you are experiencing undue personal or academic stress at any time during the semester or need to talk to someone who can help, contact the instructor or: