- Instructor: Caleb Stanford
- CRN: 57017
- Units: 4 (please change this in schedule builder!)
- Listed Title: Special Topics in Programming Languages and Compilers
- Schedule: Monday, Wednesday, Friday 2:10-3pm
- Location: Giedt 1006
Welcome! This course is a graduate seminar. We will cover topics in programming languages and related areas at a research level. Topics include: programming language design, type systems, program testing and bug-finding, program verification, side effects, system-building, and applications. The primary focus of the course will be on reading papers and in-class discussions. There will also be a final project to synthesize 3 papers in an area of your choosing into either a research report or an implementation.
This seminar will be discussion-based; as such, a part of your grade is based on attendance. I also encourage you to engage with the material through Piazza and Perusall. Most course announcements will be through Piazza. The paper readings can be found on Perusall.
To help you get the most of the readings, there will be a Piazza thread where everyone should post their overall thoughts on the reading for each week. For example, what did you like about the paper? What did you not like about the paper? What questions do you have? In addition, you may use Piazza and Perusall to help with reading and understanding the material.
One student will be assigned to lead each discussion. That means that each student will lead about one discussion every 2 weeks (4 discussions total), depending on the final number of students enrolled. For discussion leads, I recommend that you start with a short presentation about the main ideas in the paper (about ~20 minutes, max. 20 slides), including things you liked and didnt' like, followed by 10 slides with questions for discussion (1 question per slide). (This structure is subject to change; if needed we may adapt as the class progresses to ensure the format is working!)
Lastly, there will be a final project which consists of one of two options:
- A software project of your choice to explore an idea covered in 2-3 papers in an active research area;
- A written report to compare 2-3 papers in an active research area.
This course is intended for graduate students in computer science or ECE. No prior background or research experience in programming languages will be required.
By the end of the course, students should be able to:
- Understand the foundational ideas and major papers in programming languages.
- Understand the main active areas of research in programming languages.
- Read a research paper and think critically about its findings.
- Lead and participate in research-level discussions.
See schedule.md
.
In-class participation (25%):
- Attendance and participation (15%) -- attending the class and pariticipating in group activities.
- Discussion leads (10%) -- based on the discussions that you individually lead.
Outside-of-class participation (25%):
- Perusall (5%) -- participation on Perusall
- Reading summaries (20%) -- posted on Piazza for each paper.
Final project (50%):
- Final Project or Final Report (50%) -- this includes a final presentation.
Perusall does a good job of automatically grading your participation. I do look through to see if the score is consistent with the 1 comment and 1 question I requested, but I don't change the grade manually unless I notice a discrepancy.
New change: I'm only requiring one reading summary per week (pick the one of the three papers you are most interested in), see Piazza.
See Piazza.
Note: This section has been clarified based on feedback from the mid-quarter survey. These clarifications are effective going forward as of May 15.
You are allowed a buffer of 3 free absences. I am assuming that you will use these absences in case you are sick or have to miss class for any other reason. No need to email me about the first 3 absences! They will automatically be counted towards your 3 free absences at the end of the quarter. If you need to be absent 4 or more times, please email me.
If you are late to class, it counts as 80% for the purposes of attendance (1/5th of an absence), which means that you can use one of your 3 free absences to cover 5 late arrivals. Note: While this policy has not changed, the precise grade deduction was not clear in the syllabus before. Therefore, if late arrivals prior to week 7 are going to affect your grade, I will email you individually to discuss the situation and the end of the quarter. I expect that this will not affect most of you, but please keep in mind the policy for the remaining weeks.
Note: This section has been clarified. These clarifications are effective as of May 15.
I will accept late reading summaries for 50% credit. While I can't guarantee that I will accept other late work (especially the final project), you may email me if you need to request an extension.
I encourage the use of AI if it helps your workflow (for example, to help you understand the readings). You should be prepared to discuss the material in class, including any comments you write.
You may collaborate on the final project, in groups of 2-3 people. Please submit only one report for the group.
Please use the Piazza for questions related to course material.
If you have a question that is more sensitive or unrelated to the course, please email me at (cdstanford
ucdavis
edu
).
I will also be available during office hours if you need any additional support.
Communication from the instructor will only be sent through official UC Davis email addresses and channels. Please be vigilant of job scams impersonating faculty members. For more information, visit UC Davis Job Scams Prevention.
Please be nice to each other. UC Davis has policies against harassment and discrimination. Be inclusive of everyone in group discussions, especially those who may not initially speak up (for example, go around and ask what each person thinks). If you need to, you may reach me by email to report an issue or a dispute with a classmate.