As a CS major in a liberal arts college, you have a unique opportunity to "connect the dots" between the product-oriented technology industry, the research community, and the world at large. You also have a responsibility to problematize, reinvent, or rebuild popular computing if need be.

The purpose of 190 is twofold. First, we aim to teach you how to keep learning CS topics forever---by staying up to date on primary research sources, synthesizing information from several sources, explaining these topics to others in straightforward terms, and otherwise staying at the forefront of the field.

Second, 190 needs to give you an authentic capstone experience as a "CS person", whatever that means to you. For some, that means preparing for a senior research project; for others, it means deeply diving into an area of CS research and summarizing and synthesizing what you find; some students may want to stretch themselves in some way to become stronger computational thinkers; and some might want to participate in software as a social process, contributing to an open-source software project. We'll figure out one-on-one what a suitable and doable capstone experience looks like for you, individually, and lead that into a significant technical writing assignment.

One way or another, you will leave this course not only as a CS major, but as an expert in some narrow area of computing. You'll leave with the skills you've developed and a technical writeup detailing what you learned or done and how the pieces fit together.

This section's focus is on programming languages: where they come from, how they are built, how they grow, and why they are the way they are.

Schedule

Week Day Date Topic Paper Milestone
1 Tue Aug 27 Introduction
Pair Presentations
2 Tue Sept 3 Language revision processes for Rust, Python, and C++.
3 Tue Sept 10 Turing Award Lecture, Reflections on Trusting Trust M0 - LaTeX Exercise, due Thursday night Sept 12
4 Tue Sept 17 How ISO C Became Unusable for Operating Systems Development [Yodaiken 2022]
5 Tue Sept 24 Turing Award Lecture, Notation as a Tool of Thought [Iverson 1979] M1 - Topic Proposal
6 Tue Oct 1 Ranking Programming Languages by Energy Efficiency [Pereira et al. 2021]
7 Tue Oct 8 Communicating Sequential Processes [Hoare 1978] M2 - Bibliography
8 Tue Oct 15 Fall Break
Individual Presentations
9 Tue Oct 22 TBD M3 - Annotated Bib
10 Tue Oct 29 TBD
11 Tue Nov 5 TBD M4 - Intro + Outline
12 Tue Nov 12 TBD
13 Tue Nov 19 Peer Reviews M5 - Full Paper Draft
14 Tue Nov 26 TBD
15 Mon Dec 3 TBD M6 - Final Paper
16 Wed Dec 11 Final Paper Presentations

Reading Assignments

Throughout this semester, you will read 12 assigned research papers. To help you engage with these readings and prepare for class discussions, I will ask you to submit a reading reflection each week. The format of the reflection is up to you---it can be written essay, a powerpoint slide dec, a video, or an audio recording---but it must include the following, to be submitted on Gradescope.

  • A one or two sentence summary of the paper.
  • A deeper, more extensive outline of the main points of the paper. This may include assumptions made, methods used, arguments presented, data analyzed, and conclusions drawn.
  • Any limitations or extensions you see for the ideas in the paper.
  • Your opinion of the paper, including the quality of the ideas, its potential impact, and any thoughts or opinions on the subject matter.
  • 1-3 questions you have about this paper.
  • How long you spent on this reflection (including time spent reading the paper).
This reflection shouldn't be super-long. For example, a written reflection should be 1-page (single spaced). A video or audio should be about 5 minutes. You do not need to complete a reading reflection for the weeks you are presenting.

How to read a research paper. When you read a research paper, your goal is to understand the scientific contributions the authors are making. This is not easy, despite the deceptively short appearance of most published computer science papers, and it may require going over the paper several times. Expect to spend multiple hours to read a paper.

Here are some general guidelines for how to read a research paper (adapted from Michael Mitzenmacher's advice on how to read a research paper):

  • Read critically: Do not assume that the authors are always correct. Instead, be suspicious. Are they solving the right problem? Are there simple solutions the authors don't seem to have considered? What are the limitations (including those the authors might not have noticed or admitted)? Are the assumptions the authors make reasonable? Did they gather the right data and did they appear to gather it in the right manner? Did they interpret the data in a reasonable manner? Would other data be more compelling?
  • Read creatively: It is always easier to tear something down than to build it up. Reading creatively involves harder, more positive thinking. What are the good ideas in this paper? Are there other applications or extensions? Are there improvements that might make important practical differences? If you were going to start doing a research project from this paper, what would be the next thing you would do?
  • Take notes: I like to keep a text file open alongside the PDF, and others prefer to print research papers and take notes in the margins. Feel free to try out a few options here and use whatever style you prefer. If you have questions or criticisms, write them down as you are reading so you do not forget them. This will save you a lot of work later!
  • Summarize: After the first read-through, try to summarize the paper in one or two sentences. You'll have to do this for the assigned readings, but I recommend also doing this for the other papers you read for your course paper.
  • Compare: If possible, compare the paper to other papers. You may not have the context to do this for the assigned readings, but when you are reading research for your final paper it will be helpful to compare each paper you read to the other papers you have read.

Presentations

During the first half of the semester, each of you will present a research paper with an assigned partner. This presentation should be approximately 30 minutes and will be followed by a discussion. Your paper, presentation date, and partner will be assigned during the first week of class after you complete the intro survey.

During the second half of the semester, each of you will give a solo presentation on a research paper of your choice selected from the bibliography for your final 190 paper. This presentation should be approximately 15-20 minutes and will be followed by a brief discussion.

For your each presentation you must:

  • Schedule a pre- and post- meeting: You should contact me at least 7 days before your presentation with a list of all times that work for you (and your partner, for the pair presentation). For the solo presentation, you must also select a paper and get it approved by me at least 7 days before your presentation. Otherwise you will not get full credit for this part!
  • Prepare for the pre-meeting: This includes reading the paper (see guidelines above about how to read a research paper) and preparing a draft of your presentation slides.
  • Pre-meeting: Meet with me to discuss your presentation. This meeting should take place no later than the Friday before your presentation.
  • Submit your presentation: Submit the final slide deck for your presentation by 11:59pm the night before your presentation. These slides should include any revisions discussed during our meeting.
  • Give your presentation! Your pair presentation should be approximately 30 minutes long, and your solo presentation should be 15-20 minutes long. Both presentations should include:
    • The motivation for this paper and what research problem they are investigating.
    • The methodology used in this paper.
    • The key results of this paper.
    • 2-3 discussion questions. At least one of these questions must be technical and at least one of these questions should reflect on societal/ethical/cultural issues.
    You should then plan to lead a class discussion about these questions and about the paper (and the topic) in general.
  • Submit your post-presentation reflection: What did you like about your presentation? What would you do differently if you were to present the same topic again? What did you think of the questions and/or discussion? Did anything unexpected come up?
  • Post-meeting: Meet with me to discuss and debrief how your presentation went. This meeting should take place 1-3 days after your presentation

Your presentation will be evaluated on the following concepts:

  • How clear and coherent was your presentation?
  • How easy were the slides to follow?
  • Was the presenter poised and engaging?
  • Was the presentation duration within the expected range?
  • Did the presentation conclude with discussion questions?
  • How well did the presenter facilitate discussion and answer questions?

If it helps, you can consider one of my research papers and corresponding presentatoin as an example.

LaTeX Exercise

For this exercise you will use 𝐿𝐴𝑇𝐸𝑋 to create a β€œshort autobiography.” Your autobiography can focus on whatever you’d like (it can be fiction if you’d like). You do not have any word or page count requirements, but you do need to include each of the features listed below.

𝐿𝐴𝑇𝐸𝑋 Advice

Some general advice before you get started:

Requirements

Your document must at minimum include the following:

This GitHub Repository has quite a few tricks that you should consider if you are writing a larger document.

𝐿𝐴𝑇𝐸𝑋 Packages

Here are some of my favorite (personally required) packages:

Submission Instructions

Submit to gradescope.

Final Paper

See the final paper page for details about the final paper milestones and requirements.