Course Info

CS 6110 is a course on the foundations of programming languages. The course is meant primarily for first-year PhD students in Computer Science interested in pursuing research in this area, but graduate students in other areas of CS and other fields and well-prepared undergraduates are welcome.

This course introduces the formal tools needed to describe precisely what a program means. These tools help us answer many useful questions about program analyses and transformations, such as:

Topics include:

A complete listing of topics can be found on the syllabus page.

General Info

Time & Place

MWF 10:10–11am, Hollister 306 Olin 165

Staff

NAME POSITION CONTACT OFFICE HOURS
Dexter Kozen Instructor
255-9209 w
257-4579 h
592-2437 m
436 Gates
MWF 1:15–2:30pm
or by appt
Konstantinos Mamouras Teaching Assistant
441 Gates
Tθ 2–3pm
Molly Trufant Course Administrator
255-9197
424 Gates
M–F 8am–4:30pm

Course Administration

Website

The course website is http://www.cs.cornell.edu/Courses/cs6110/. Announcements will be posted on the home page. Check frequently for new announcements.

Piazza

We will be using Piazza as an online discussion forum. You are encouraged to post any questions you might have about the course material. The course staff monitor Piazza closely and you will usually get a quick response. If you know the answer to a question, you are encouraged to post it (but please avoid giving away any hints on the homework or posting any part of a solution—this is considered a violation of academic integrity).

Everyone who preregistered for the course should already be signed up. If you have never used Piazza before, or if you did not preregister for the course, visit the Piazza CS 6110 page to sign up.

By default, your posts are visible to the course staff and other students, and you should prefer this mode so that others can benefit from your question and the answer. However, there are three other options.

Piazza is the most effective way to communicate with the staff and is the preferred mode of interaction. Please reserve email for urgent or confidential matters. Free-ranging technical discussions are especially encouraged.

CMS

We are using the course management system CMS. Everyone who preregistered for the course should be entered, but if you did not preregister, you are probably missing. Please login to http://cms.csuglab.cornell.edu/ and check whether you exist. There will be a list of courses you are registered for, and CS 6110 should be one of them. If not, please send your full name and Cornell netId to the Course Administrator so that you can be registered.

You can check your grades and submit homework in CMS. Homework and exam solutions and practice exams will also be posted there. There is a help page with instructions.

Please do not post course materials released on CMS publicly. These materials are intellectual property and meant for participants in the course. They are not free to the public. If you post them publicly, they become accessible to search engine bots.

Sources

Lecture Notes and Handouts

Lecture notes will be posted to the syllabus page. Homework and exam solutions will be available in CMS. Other supplementary course material will be posted to the handouts page. Check often for new material.

Texts

There are no required texts for CS 6110 this semester. However, the following texts are recommended:

These books are excellent sources for the course, so purchasing them is a good idea. In a pinch, many students in the CS department will have these books, and they will also be on reserve at the Engineering library.

Some other useful texts that provide a different perspective or more depth in some areas are:

For information about readings relevant to each lecture, see the syllabus page.

OCaml

There will be periodic programming assignments in OCaml. Instructions for installing OCaml and associated software can be found on the resources page.

In addition to the OCaml documentation and various online tutorials, there are some other online OCaml resources that you may find useful:

Assignments

There will be five homework assignments. Each assignment will involve written exercises, programming exercises, or both. Posted due dates are subject to change.

Joint Work

Assignments may be done individually or in groups of two or three. Submit a single joint assignment with all names on it. You must form a group in CMS to do this.

Please note that the preferred interpretation of working in groups is not, "Dick does problem 1 and Jane does problem 2," but rather, "Dick and Jane do problem 1 and Dick and Jane do problem 2."

Submission

You must submit your written assignment solutions online via CMS in .pdf format. We strongly prefer that you typeset your solutions using LaTeX. Follow the online instructions for submitting files.

You may upload as many times as you wish. Only the latest version will be graded.

If you are working in a group, you must register the group in CMS for each assignment. One of the group members must invite the others, and the others must accept the invitation. See the CMS online help for details. Only one group member need submit the files.

Please include the names and netIds (not your Cornell student id!) of all group members in all submitted files.

Late Policy

Please make every effort to submit your assignments in a timely fashion. A grade penalty for lateness may be introduced if it becomes a problem.

Extensions will be granted in case of illness and other exceptional circumstances.

Exams

There will be one prelim and a final exam. Exams will cover material presented in class and assigned readings. The exam dates can be found on the syllabus page.

Both exams are takehome, 72 hours, open book and notes, closed Internet. Check out the exam with the course administrator sometime during the exam period. Submit your solutions to CMS within 72 hours of checking it out.

Grading

Weights

Assignments 50%, prelim 25%, final 25%.

Regrades

Homework regrade requests should be submitted electronically in CMS. Exam regrades should be handwritten and submitted to the course staff. Please include a description of the grading error with your regrade request.

Partial credit is not negotiable.

Academic Integrity

The utmost level of academic integrity is expected of all students. Academic integrity is rarely an issue in graduate courses, but unfortunately it does arise from time to time, so we want to be clear.

Under no circumstances may you hand in work done with or by someone else under your own name or share code or detailed proofs with anyone else except your partner(s). You may discuss general questions regarding the OCaml language, proof techniques, or the requirements of the assignment with others. Broad hints and general ideas about approaches to a solution are permissible, but if you receive any such hints or ideas from a colleague, you must acknowledge them.

You must acknowledge by name anyone with whom you collaborated and any outside sources that you consulted, including Internet sources.

You may not give nor receive assistance from anyone else during an exam.

You may not give any hints or post any material that might be part of a solution publicly on Piazza. If your question necessarily includes such material, post privately.

If you are unsure about what is permissible and what is not, please ask.

Special Needs

We provide appropriate academic accommodations for students with special needs and/or disabilities. Requests for academic accommodations are to be made during the first three weeks of the semester and must be accompanied by official documentation. Please register with Student Disability Services in 420 CCC to document your eligibility.