Time: Tuesday and Thursday, 1:30pm-2:50pm
Room: Zoom
Instructor: Jan Hoffmann
Office Hours: Tuesday 3:00pm - 4:00pm (Zoom and Slack)
Discussion Board: Slack
Assignments: Gradescope

Prerequisites

There are no official prerequisites. However, you should be familiar with the foundations of programming languages as covered by courses such as 15-312 or 15-814.

Please contact me if you are not sure if you are prepared for the course.

Covid 19 Pandemic

We will be using Zoom for the lectures. The link will be posted on Slack.

This semester is unlike any other. We are all under a lot of stress and uncertainty at this time. Attending Zoom classes all day can take its toll on our mental health. Make sure to move regularly, eat well, and reach out to your support system or me if you need to.

Sharing video: In this course, being able to see one another helps to facilitate a better learning environment and promote more engaging discussions. Therefore, our default will be to expect students to have their cameras on during lectures and discussions. However, I also completely understand there may be reasons students would not want to have their cameras on. If you have any concerns about sharing your video, please email me as soon as possible and we can discuss possible adjustments.

All lectures will be recorded so that students in this course (and only students in this course) can watch or re-watch past class sessions. I will make the recordings available (the link will be posted on Slack) as soon as possible after each lecture. Please note that you are not allowed to share these recordings. This is to protect your FERPA rights and those of your fellow students.

How to Succeed in This Class

We will likely be a small group and I hope that the course will be very interactive. To promote interaction, your grade (or pass/fail) will also depend on your participation during the lectures and on Slack. In particular, I expect that you attend the live lectures, ask and answer questions, and participate in discussions. This is important to understand and memorize the material.

Please let me know if you cannot attend the live lectures (time difference, overlap with other courses, etc.).

This course is supposed to take, on average, 12 hours per week. If on average you are spending significantly more than this, I would like to know. Sometimes it is hard for me to judge the difficulty of an assignment and your message lets me know when there is a problem.

If you need help with the homework or class material then email me or message me on Slack. Please don’t feel intimidated about going to office hours. I am there to help you.

Homework and Grading

Grading is based on biweekly homework assignments, a final project, and participation in class (see previous section). Both letter grades and pass/fail grades are possible.

Assignments are usually due on Fridays and have to be submitted on Gradescope.

For letter grades, homework assignments count 60 percent, the final project counts 20 percent, and participation in class counts 20 percent. For the homework assignments, you have 4 late days that you can use during the semester. When you are out of your late day allowance, each late day will reduce the points of the submitted solution by 25 percent. Submissions of homework solutions that are more than 2 days late will not accepted.

CS PhD students are assigned a pass/fail grade in the University grading system, but are given an internal letter grade for Black Friday purposes. A final letter grade of B is required to pass this course. To achieve this, you must have (1) completed all homework assignments on-time with a grade of B; and (2) earned a grade of B or better on the course project. During the semester, two homework assignments can be resubmitted if your grade is below B. Each homework can be resubmitted only once. Moreover, you need to regularly attend lectures and particpate in discussions.

The same rules apply for other students who elect to receive a pass/fail grade.

Academic Integrity

Unless explicitly instructed otherwise, all homework and exam work is to be solely your own, and may not be shared with or borrowed from any other person in the course. You are not permitted to draw upon assignments or solutions from previous instances of the course, nor to use course materials (such as assignments or programs) obtained from any web site or other external source in preparing your work.

You may discuss homework assignments with other students in the class, but you must adhere to the whiteboard policy. At the end of discussion the whiteboard must be erased, and you must not transcribe or take with you anything that has been written on the board during your discussion. You must be able to reproduce the results solely on your own after any such discussion.

See also Academic Integrity at Carnegie Mellon.

Text

There will be no text, but course notes and papers will be distributed. We will use the programming language Resource Aware ML (RAML) and the static analysis tool Absynth.

References

  • Robert Harper. Practical Foundations for Programming Languages (Second Edition). Cambridge University Press. 2015. Website

  • Benjamin Pierce. Types and Programming Languages. MIT Press. 2005. Website

  • Benjamin Pierce (Editor). Advanced Topics in Types and Programming Languages. MIT Press. 2004. Website

  • Jan Hoffmann. Types with Potential: Polynomial Resource Bounds via Automatic Amortized Analysis. PhD Disseration, LMU Munich. 2011. PDF

Well-Being

Don’t forget that this is just a course. You can contact the instructor or your undergrad adviser with any concerns or issues.

Take care of yourself. Do your best to maintain a healthy lifestyle this semester by eating well, exercising, avoiding drugs and alcohol, getting enough sleep and taking some time to relax. This will help you achieve your goals and cope with stress.

All of us benefit from support during times of struggle. You are not alone. There are many helpful resources available on campus and an important part of the college experience is learning how to ask for help. Asking for support sooner rather than later is often helpful.

If you or anyone you know experiences any academic stress, difficult life events, or feelings like anxiety or depression, we strongly encourage you to seek support. Counseling and Psychological Services (CaPS) is here to help: call 412-268-2922 and visit their website at http://www.cmu.edu/counseling/. Consider reaching out to a friend, faculty or family member you trust for help getting connected to the support that can help.

If you or someone you know is feeling suicidal or in danger of self-harm, call someone immediately, day or night:

CaPS: 412-268-2922

Re:solve Crisis Network: 888-796-8226

If the situation is life threatening, call the police:

On campus: CMU Police: 412-268-2323

Off campus: 911

Diversity

We must treat every individual with respect. We are diverse in many ways, and this diversity is fundamental to building and maintaining an equitable and inclusive campus community. Diversity can refer to multiple ways that we identify ourselves, including but not limited to race, color, national origin, language, sex, disability, age, sexual orientation, gender identity, religion, creed, ancestry, belief, veteran status, or genetic information. Each of these diverse identities, along with many others not mentioned here, shape the perspectives our students, faculty, and staff bring to our campus. We, at CMU, will work to promote diversity, equity and inclusion not only because diversity fuels excellence and innovation, but because we want to pursue justice. We acknowledge our imperfections while we also fully commit to the work, inside and outside of our classrooms, of building and sustaining a campus community that increasingly embraces these core values.