Instructor: Madeline Blount
Term: Spring 2022
Time: Mondays 6:30pm-9:00pm
Office Hours: Tues/Thurs. by appointment, schedule here
E-mail: mblount@ccny.cuny.edu
In this two semester senior design course, we will explore and interrogate examples of software as intervention - how does software act in the world? How does what we build as software engineers interact with or intervene in systems that already exist? How might software change those systems, and how do these questions factor into software design? We will investigate the ethics of automation, scale, data collection, and data security, examining case studies of technology’s role in various fields, from physical sciences to politics, social justice, and the arts. We will use contemporary tools for rapid prototyping, including serverless architecture and modular development. Student projects will take original ideas through the phases of research, systems design, and prototype.
- how to think critically about technology while we build it
- how technology affects change in the world (hint: sometimes unexpected ways, with unintended consequences)
- how to make rapid prototypes with contemporary tools to test our ideas
- how to design systems with many moving parts, and think about how people fit into these systems
- how to work together: iteration, collaboration
- how to get comfortable reading documentation and using new tools quickly
- how to use the tools that you have learned to build your own creative project
This course will meet online only. It will be both technical (code, design) and conceptual (some reading, writing, discussion). Each week we will have:
- short readings or videos on a theme, to be completed before class (estimated time: 45 min.)
- a lecture in class, with discussion
- a code lab or discussion activity in class (group work)
- written or code assignment for next class
Our main goal is to create proposals for your final projects. We’ll be examining many different case studies and examples in order to generate ideas, solving lots of small problems and building prototypes together - but you’ll need to be thinking about your larger senior project throughout the arc of the first semester.
Your final project could be in any language, using any methodology that you want, and you can either work on your own or as a team (3 students max). You will determine your topic and team by the end of this semester, and next semester we will work on the build. Your project proposal is this first semester's final project. Further description and requirements for the final project proposal will be clarified throughout the course.
key dates
materials & references
tools
expectations & requirements
evaluation
academic honesty & integrity
contact & questions
💥subject to change
Week 1: Jan. 31
Introductions, Interventions
going through syllabus (hello!), intros to each other, & "do no harm"
Assignment: complete class survey; "hello world" post on Glitch blog
DUE: Thursday, Feb. 3rd 5:00pm EST
Week 2: Feb. 7
Prototypes, Hacks, and Distributed Architectures
Readings due today:
- Critical Engineering Manifesto, Oliver, Savičić, Vasiliev
- Disruption, a manifesto, editors of Logic Magazine
- It's not all lightbulbs, W. Patrick McCray
for next class:
Assignment: Write project log post #1 info/instructions here
Week 3: Feb. 14
Software as Public Infrastructure
Readings due today:
- "Hypertext", from Broad Band, Claire Evans, p.153-174 (pdf here)
- Information Management: A Proposal, Tim Berners-Lee
- Web Design: The First 100 Years, Maciej Cegłowski
for next class:
Assignment: Write project log post #2 info/instructions here
Additional References:
- How I Experience Web Today [click around & explore!]
- Spatial Software, John Palmer
- Gossip's Web: directory of handmade web pages
- Wayback Machine, Internet Archive
Week 4: Feb. 21: NO CLASS MONDAY, HOLIDAY
Automated Communications, Political Implications
- Asynchronous Lecture Video here - watch any day this week (1 hr)
- video includes help on API experiment assignment (should also take approx. 1 hr)
Readings for the week:
- "The app that broke the Iowa Caucuses was sent out through beta testing platforms", N. Statt, The Verge
- "Here's the Shadow Inc. App that Failed in Iowa Last Night", Koebler, Maiberg, Motherboard
- WhatsApp’s Influence in the Brazilian Election and How It Helped Jair Bolsonaro Win, Caio C. V. Machado CFR Blog
for next class:
Assignment: communications API experiment info/instructions here
Additional References:
- Computational Power: Automated Use of WhatsApp in the Elections, ITS - Rio de Janeiro
Week 5: Feb. 28
On Surveillance, Resistance, and Social Movements
Readings due today:
- "Of Being Numerous", Natasha Lennard, Real Life
for next class:
Assignment: Write project log #3 info/instructions here
Week 6: Mar. 7
DIY Emergency: Tech & Mutual Aid
Readings due today:
- "Mutual Aid Disaster Relief: Lessons Learned" (text here)
- "What Mutual Aid Can Do During a Pandemic", Tolentino New Yorker
- "Paper Prototyping as A Usability Testing Technique"
for next class:
Assignment: simplest project prototypes, info/instructions here
Additional Resources:
Week 7: Mar. 14
Unblocking the System: Automations and Chatbots
Readings due today:
- "Resource One" from Broad Band, Claire Evans, p. 95-108 pdf here
- "Common Chatbot Mistakes", landbot.io documentation
- "The Invisible Labor of the Web - Artificial Intelligence is Made Possible by an Undervalued Workforce", Sarah Adams, from Theorizing the Web conference (2018) - watch from 18:55 - 28:23, not entire video
Feedback Point 1: I will give feedback on your blog posts so far by this date
for next class:
Assignment: Write project log #4, project validation, info/instructions here
Week 8: Mar. 21
Project Ideas Feedback Workshop
for next class:
Assignment: Write project log #5, info/instructions here
Week 9: Mar. 28
Automation Revisited; Project Work Day
Readings due today:
- "The Education of a Computer," Grace Hopper
- from The Mythical Man-Month, Frederick Brooks Jr., p. 3-26 (on archive.org)
- from Bullshit Jobs, David Graeber, p. 6-9 and p. 188-193, text here
for next class:
Assignment: Finalize project topic and group (if collaborating)
Week 10: Apr. 4
Digital Divide and Accessibility
PROJECT FORMATION (TOPIC/GROUP) DUE!
Readings due today:
- from Design Justice, Sasha Constanza-Chock, p. preface-11 & Chapter 2, p. 70-101, text here
- video garden.local, Distributed Web of Care (Taeyoon Choi et. al) - watch video and read text below
Week 11: Apr. 11
Blueprints, Systems, and Architectures
Readings due today:
- from Envisioning Information, Edward Tufte, p. 1-35 (text here)
- Drawing Good Architecture Diagrams, National Cyber Security Centre UK
- IBM Case Study, Brooks Jr., p. 312-329 (text here)
for next class:
Assignment: diagram assignment info/instructions here
NO CLASS Apr. 18, SPRING RECESS
Week 12: Apr. 25
Open Data, Open Storage?
Readings due today:
- from Signal Blog: the ecosystem is moving
- from Storj whitepaper, "Decentralized Cloud Storage Network", p. 1-26
for next class:
Assignment: Write project log #6 info/instructions here
Week 13: May 2
Data Collection
Readings due today:
- "Data Relations" in Logic Magazine, Salomé Viljoen
- video, Mimi Onuoha !! Con Keynote, on Data
Week 14: May 9
Data Security
Readings due today:
- "Hacking Security", in Logic Magazine, Matt Goerzen, Gabriella Coleman
- "Security of JSON Web Tokens", Cyber Polygon
- Protonmail white paper, 2016
Week 15: May 16
Final Project Workshop
Assignment: working on final project
FINAL PROJECT PROPOSAL DUE: Friday May 20th, 12pm EST
- March 14th, feedback point on project logs (professor to share feedback)
- March 21st, share ideas-in-progress for final, feedback workshop
- April 4th, team (or solo) formation for final and project topic, due by end of class
- May 10th, I will read a draft of your final proposal if I receive it by this date
- May 16th, final project workshop
- May 20th, final project proposal due
All course material will be linked via Blackboard and Github (here). There will be extra links and further references listed every week, beyond the required materials, that might be helpful to you. There will be no textbook for this course other than what's linked here. I will post the readings at least 2 weeks in advance, but if you look far ahead you might see some "TBDs." I will also post any lecture material (slides, links, etc.) in a folder in this repo called /lectures
. Information and instructions for any assigments will be in a folder called /assignments
.
- Github: please get a free account, here
- Glitch: please get a free account, here
- Zoom: we will always start class here
- Blackboard
- Node.js, npm
We will use other software development kits (SDKs), APIs, tools, places to meet and collaborate online, etc. throughout the course. This will be noted in specific weeks.
- class attendence and punctuality: please come prepared and on-time for every class.
- participate actively in lecture with questions, and discussion - "move up, move up"
- if you know you are going to miss class, please e-mail me. Attending and participating in every class counts towards your final grade (see below). Lateness beyond 20 minutes is considered an absence.
- we'll be sharing and critiquing each others' work - try to be honest and friendly, open and respectful when giving/receiving feedback
This class is an inclusive and harassment-free space for everyone, with no tolerations of discimination based on gender, race, sexual orientation, religion, disability, or appearance. Please feel free to let me know privately if you require an academic accommodation.
Grading breakdown:
- Participation/Attendance: 25%
- Weekly Assignments: 35%
- Final Project Proposal: 40%
weekly assignments:
- weekly assignments must be turned in before the next class: this means 5:00pm Monday EST - unless specifically noted otherwise
- weekly assignments are more for participation than in-depth feedback
- your weekly assignments are to help you prepare for your final proposal
- any late assignments = drop 10% per day
- you get to drop your worst assignment grade if you need to
Plagiarism is "the act of presenting another person's ideas, research or writings as your own." (CUNY). [see what I did there ...?] In all seriousness: please be mindful and cite your references, both when you are writing in sentences and writing in code: Stack Overflow is a great resource, but your code cannot be copied and pasted for your assignments. Your work for proposals and written assignments must include citations when you are referencing others' work.
You can find CCNY’s Acedemic Integrity Policy in full here. Do not plagiarize.
Please e-mail me - I am available for your questions! I try to respond within 24 hours. You are also invited to schedule some virtual office hour time to talk, here. If you need a time that's not on this schedule, please e-mail me.