CSCI 190 Sections 3-4
- Instructor: Joseph C. Osborn
- Section 3: Tuesdays 11:00–12:15 PST
- Section 4: Thursdays 11:00–12:15 PST
- Zulip: Course announcements, chat, Q&A. Join up! There are also desktop and mobile apps for Zulip.
- Office Hours: By appointment (schedule me through Outlook!)
- Important: For childcare/work-life-balance reasons I will make no particular effort to answer emails or Slack questions over the weekend or at night, so be sure to get started early and don't wait until the last minute to ask questions!
Course Goals
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—and 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.
Capstone
In this iteration of 190, we'll be exploring an alternative to the traditional survey paper. If you want to deeply explore an area of CS research, you can certainly still do that and write a paper in the 8-12 page range that describes a problem, a family of approaches to solving that problem, and some synthesis that relates these approaches together or finds some deeper truth in the connections between them. This time around, you also have the option of writing a sort of proposal for future work—perhaps in the spring senior project, or perhaps a draft of an RFC ("Request for Comment") submitted to a major open-source project, or perhaps a grant proposal. The main shift here is to consider this "related work" section and the preparation for it (the annotated bibliography, the introduction, the drafting) to be for some concrete project of interest to you specifically.
For example, one student might plan to do a senior thesis, and will then use the writing assignments of 190 to prepare the related work section of their thesis. Another student might want to explore a senior project to propose an improvement to the Python programming language or standard library, with the in-class assignments building up towards a Python PEP (or, for crab fans, a Rust RFC). A student might want to explore how regular expression engines are implemented efficiently, and combine general-audience sources like Andrew Gallant's blog with academic literature, design some benchmarks to compare different implementations, and describe the state of the art. Yet another may decide to research how compiler optimization passes are implemented, investigating the internals of LLVM and finding relevant academic literature, with the technical writeup a plan for pursuing a hypothetical senior project.
The takeaway is that the purpose of 190 is to prepare you for doing this kind of work, even if a half-credit course isn't quite enough time to actually complete it. By the end of the course, everyone will either have written a research survey in an area of their deep interest, or will have a well-researched, extensive proposal for a specific, substantial senior project (but of course, there's no commitment to actually doing that project).
Senior Project/Thesis
As a quick note, there is always some confusion about the difference between a senior thesis and a senior project. This table may be helpful:
Credit | Effort | Area | Writing Requirement | |
---|---|---|---|---|
Senior Project | 0.5 | ~5 hours a week | Mainly personal interest | Moderate, technical |
Senior Thesis | 1.0 | ~10 hours a week | Connection to faculty interest | Extensive, research & technical |
Presentations
Each student will present on two papers during the semester, each time in a group of 2-3. The first batch of six papers will be ones I recommend, but the second paper on which you present will be generated by your team (possibly sourced from your annotated bibliographies).
I'm not super committed to any presentation format (prerecorded slides, live slides, live coding, whatever), but presentations must cover the following points:
- What is this paper about?
- What are some key limitations, shortcomings, unintended consequences, or other problems with or identified by the paper?
- What should a curious person read next? Provide two specific followup papers or important background papers.
- Have three discussion prompts ready (these don't need to be in the slides but should be ready to hand for discussion).
Students not presenting have the following obligations, to be turned in on Zulip before class.
- Read the paper! Really read it.
- Write down three facts, two questions, and one opinion about the paper, and share it on Zulip.
- Identify one follow-up paper to read which is related (a paper citing this one, or another one you've found which feels relevant). Share this on Zulip too!
Selecting Papers
For the first batch of presentations, the papers will be selected from this list:
- Producing Wrong Data Without Doing Anything Obviously Wrong!
- Expressive AI
- Algorithm = Logic + Control
- Quantifying Over Play
- Towards a Critical Technical Practice
- The Moral Character of Cryptographic Work
- Human-Computer Insurrection: Notes on an Anarchist HCI
- Imagination, Computation, and Self-Expression
- Evaluating Large Language Models on Code
- Your Buddy, the Grandmaster
- Human-Level Reinforcement Learning through Theory-Based Modeling, Exploration, and Planning (up to page 20)
In our first few weeks, we'll talk about how to find research papers covering an area of CS about which you're curious. We'll use that platform to each write an annotated bibliography—a rough map of a research area—and proceed in the course from there.
Meetings
Week | Theme | Tuesday | Thursday | Notes |
---|---|---|---|---|
1: 8/29, 8/31 | How to read papers, presenting research | Paper selection | Paper selection | |
2: 9/5, 9/7 | About the senior project | Sam, Andy, Xin Yi: Imagination, Computation, and Self-Expression | Chuck, Jack: Producing Wrong Data Without Doing Anything Obviously Wrong! | |
3: 9/12, 9/14 | Software as a human process | Max, Rachel: Your Buddy, the Grandmaster | Justin, Maya: Your Buddy, the Grandmaster | 9/15: (Senior Project) Ranked list of topic/advisor pairs, 9/17: Latex Exercise |
4: 9/19, 9/21 | Sophia, Erin: Human-Level Reinforcement Learning through Theory-Based Modeling, Exploration, and Planning (up to page 20) | Abby, Kovit: Quantifying Over Play | ||
5: 9/26, 9/28 | Research as a human process | Selim, Kenny: Algorithm = Logic + Control | Gisele, Michael, Collins: Imagination, Computation, and Self-Expression | 10/1: Topic and 10 references |
6: 10/3, 10/5 | Katiana, John: Quantifying Over Play | Austin, Ethan: Human-Level Reinforcement Learning through Theory-Based Modeling, Exploration, and Planning (up to page 20) | ||
7: 10/10, 10/12 | Kambeh: Human-Computer Insurrection: Notes on an Anarchist HCI | Josh, Meelod: Expressive AI | 10/15: Annotated bibliography | |
8: 10/17, 10/19 | Fall break | Kovit, Justin: AI-Based Human Audio Processing for COVID-19 | ||
9: 10/24, 10/26 | Katiana, Xin Yi: EEG-Based Artistic Visualization of Dreams | Jack, Michael: Automated Detection of Spectre and Meltdown | 10/29: Technical writeup outline and introduction | |
10: 10/31, 11/2 | Rachel, Sophia: Medical Prescription Classification | Chuck, Austin: Transformers | ||
11: 11/7, 11/9 | Eryn, Andy: | Abby, Maya, Gisele: | ||
12: 11/14, 11/16 | Max, John: | Collins, Ethan: | 11/19: First draft of technical writeup | |
13: 11/21, 11/23 | Sam, Keneth: | Thanksgiving recess | ||
14: 11/28, 11/30 | How to keep learning forever | Selim, Kambeh: | Josh, Meelod: | 11/29: Peer review of draft |
15: 12/5, 12/7 | No class (: | Reading days | 12/6: Final draft of technical writeup |