Description: This course takes a technical approach to understanding ethical issues in the design and implementation of computer systems. Tensions often arise between a computer system's utility and its privacy-invasiveness, between its robustness and its flexibility, and between its ability to leverage existing data and existing data's tendency to encode biases. The course will demonstrate how computer systems can violate individuals' privacy and agency, impact sub-populations in disparate ways, and harm both society and the environment. It will also introduce algorithmic approaches to fairness, privacy, transparency, and explainability in machine learning systems. Through hands-on programming assignments and projects, students will design and implement computer systems that reflect both ethics and privacy by design. They will also wrestle with fundamental questions about who bears responsibility for a system's shortcomings, how to balance different stakeholders' goals, and what societal values computer systems should embed.
CMSC 25910 vs. CMSC 25900 vs. DATA 25900 |
Spring 2020 saw the first offering of a new UChicago class --- "Ethics, Fairness, Responsibility, and Privacy in Data Science" --- offered under the course number CMSC 25900. The course was co-created and co-taught by Raul Castro Fernandez and Blase Ur, and it was open to students in both the Data Science and Computer Science programs at UChicago. Both in the current quarter and moving forward, we are instead offering two distinct, yet related, classes with different target audiences. DATA 25900, taught by Raul Castro Fernandez, focuses on ethical issues in data science. Students pursuing UChicago's Data Science Minor, or who are intending on a career in data science, should take DATA 25900. Programming assignments will be in Python using Jupyter Notebooks, similar to DATA 11800 and 11900. There will also be assigned readings and a final project. CMSC 25910, taught by Blase Ur, instead focuses on ethical issues in the design of computer systems. Students pursuing UChicago's Computer Science Major or Minor, or who are intending on a career as a software engineer, should take CMSC 25910. Programming assignments will be more substantial and will necessitate using a variety of different programming languages. There will also be assigned readings and a final project. Note that CMSC 25910 was offered in Spring 2021 under the old course number (CMSC 25900). To formally change the course title, from Spring 2022 the class is offered in modified form as CMSC 25910. If you are uncertain whether DATA 25900 or CMSC 25910 is right for you, please write to both Blase and Raul as soon as possible, explaining your background and academic trajectory. We'll be happy to direct you towards the more appropriate course! If you are realizing that you are signed up for the wrong one, again please write to Blase and Raul as soon as possible. Because both classes are currently full, do not drop the class; we will arrange your registration to be transferred to the appropriate section. Note that students may not take more than one of DATA 25900, CMSC 25900, and CMSC 25910 for credit, even in different quarters. Further note that CMSC 25900/25910 counts for both the Data Science (DS) and Computer Science (CS) programs. In the CS program, CMSC 25900/25910 counts as a CS elective. However, DATA 25900 only counts for the Data Science program; it does not count for the CS program. If you happen to be majoring in CS and minoring in DS, note that a single course cannot count for both your major and your minor. |
Prerequisites | CMSC 20300 or 20600 or 21800 or 22000 or 22001 or 23000 or 23200 or 23300 or 23320 or 23400 or 23500 or 23900 or 25025 or similar with permission of the instructors. The intent is for you to have taken at least one "systems-focused" CS class following the intro sequence before taking this course. |
Lectures | There will be 18 lectures during the course. Lectures will be held 3:30p - 4:50p on Tuesdays and Thursdays in Kersten Physics Teaching Center Room 103. Lectures will rely heavily on engaged participation and discussion among students to explore issues of ethics, fairness, privacy, and responsibility. To protect the privacy of students voicing their opinions and to encourage robust discussion, we will not record lectures. If you are required to quarantine due to Covid-19 or a similar situation, let Blase know in advance so that he can livestream that day's lecture on the same Zoom link used for office hours (see Canvas for the link). If we offer you a livestream, you may not record it. |
Coursework |
The coursework for CMSC 259 consists of eight programming assignments, eight reading responses, and a course project. There are no exams. Most assignments will contain two types of activities. The first type, synthesis, usually involves substantial programming tasks that synthesize ethical lessons from the prior week's lectures in the context of implementing real systems. Synthesis tasks will be graded both on the quality of the implementation and the integration of the ethical issues presented in the course. The second type, exploration, generally involves somewhat underspecified tasks that will illuminate how easy it is to inadvertently implement computer systems in ways that are problematic. Exploration tasks will be graded primarily on completeness, and they specifically will not be graded on their adherence to ethical principles. In fact, the goal of exploration tasks is for ethical issues to arise organically in your own code. Across these two styles of tasks, you will write code in a variety of languages, including Python, JavaScript, MySQL, and HTML. We expect that students will be proficient programmers in general, though they won't necessarily have experience with all of these languages. Assignments are typically due on Thursday evenings. In addition, there will be weekly reading responses, which will ask you to respond in prose to readings germane to the topics we will be covering that week. Reading responses are typically due on Monday evenings. There will be a course project involving an amount of work roughly equal to two assignments. While the project will be completed individually, all students will be clustered into affinity groups working on related projects. In Week 3, we will provide a list of possible project topics, and in Week 5, students will submit a written project proposal. The project will be due in Week 9. |
Textbook |
We will not be using a textbook, but rather reading news articles and papers published in recent computer science conferences. A handful of assigned readings will come from Kush Varshney's Trustworthy Machine Learning book and Solon Barocas, Moritz Hardt, and Arvind Narayanan's Fairness and Machine Learning book. We recommend skimming through the remaining parts of those books if you are interested in the ML-related topics. If you are interested in the privacy-related topics of the course, the /r/privacy subreddit maintains a reasonable list of recommended readings. If you want an overview of privacy concepts focused on technology professionals, the IAPP has a number of useful textbooks, including an intro to privacy for tech professionals. |
Communication |
We will use Zoom for all office hours; see Canvas for the link. We will update the course schedule throughout the course and will post PDF slides there following the relevant class. All assignments will be distributed on Canvas.Assignments will be collected in two different places. All assignments will require you to write both computer code and prose. You will upload all code you write for an assignment to Canvas. If you have multiple files, you may upload them individually or as an archive (zip, tar, etc.). You will upload your prose write-up as a PDF to Gradescope. Note that part of the process of submitting work on Gradescope involves specifying where in your uploaded PDF the answers to each question are, so please allow time for doing so as you submit. We will use Gradescope to grade the assignments, so you'll receive feedback both about your prose write-up and your code on Gradescope. We will sync the numerical grade back to Canvas, though the feedback/rubric will only be available on Gradescope. If you believe there was a grading error for an assignment, please use the "regrade request" functionality on Gradescope, which will help us track these requests. We'll use Campuswire for general discussions, questions about the course material, and questions about assignments. Please keep all course-related communication to Campuswire; please don't email any members of the course staff unless you can't access Campuswire. If you need to reach out to the instructors (e.g., pertaining to an illness or other events that might be impacting your performance in class), please make a post on Campuswire visible only to the instructors. Please be sure to use the "Extensions request" tag on Campuswire for any requests for extensions (see "Late Policy" below for further details). In addition, please use the "P/F request" tag on Campuswire to request to take the class pass/fail (see "P/F Grading" below for further details). Obviously, post both types of requests as private, visible only to the course staff. |
Campuswire Guidelines |
If you are posting general questions about an assignment (e.g., clarification questions, broad questions about an error you encountered), please post publicly (visible to everyone in the class) on Campuswire. If you are asking a question about your specific approach to an assignment (especially if you are including any code) or if you are reaching out to the instructors about a personal or logistical matter (e.g., pertaining to an illness or other events that might be impacting your performance in class), please make a post on Campuswire visible only to the instructors. Campuswire is typically used heavily in this class; the 2021 class had 1,267 threads on Campuswire. Our whole staff is always very happy to help. Following these guidelines greatly helps us answer your questions most productively. Before You Post:
|
Late Policy |
We will accept assignments up to 24 hours late with a 15 point grade penalty. Assignments more than 24 hours late will not be accepted without a previously approved extension. Of course, in exceptional circumstances related to personal emergencies, serious illness, wellness concerns, family emergencies, and similar, please make the course staff aware of your situation and we will do our best to find a mutually agreeable solution, such as an extension. We do not consider job interviews, midterm weeks in other classes, or non-emergency travel to be exceptional circumstances. |
Total | |
---|---|
Assignments (8) | 68% (8.5% each) |
Reading Responses (8) | 10% (1.25% each) |
Project | 17% |
Participation in Lectures/Discussions | 5% |