what is web programming?
If a computer is a tool for thinking with, then the web is a place to share your thoughts with others. In this class we’ll think about web programming as a means of representation, speculation, and communication. We’ll also think about our computers, and use them to have new kinds of thoughts.
This class seeks to give a broad, nuanced and critical understanding of what it means to make work for the web today. It is structured around a series of open-ended projects that inform different approaches towards web programming, and programming more generally, and together will stretch and challenge your existing skills. These projects are contextualised by readings and lectures that give a theoretical and technical basis to the material covered, and discussed in class during structured critiques.
- understand how the web is structured, and use this to inform more complex projects
- become familiar with the command line and the console
- understand how and where to include libraries and modules in your code
- through readings and exercises, develop and realise your own ideas about what the web should look like
- learn about simulation techniques, and how they can be used to model complex systems
- be aware of the history and politics of the web, and how this is changing
This class is about getting to know each other, the syllabus, and to give you some tools that will help you get set up for the rest of the semester. come with thoughts about what you’re interested in, what you’d like to get out of your time in the class, and some websites you think are special.
|Use the console editing tools we explored to re-imagine some websites that you use regularly.
|Laurel Schwulst, my website is a shifting house next to a river of knowledge, what could yours be?
Olia Lialina, Prof. Dr. Style
|02/03||the vanilla web
you’ve been there! you’ve seen it! you’ve done that! (or have you?). here we’ll revisit the basic tools that we use to make work for the web, and talk about some higher level concepts and tools to improve the quality of code. We’ll discuss web standards, net art, and the power of pure html.
|make a website that shuffles a deck of cards using (at least) 2 different approaches
|Alex Galloway, Jodi’s Infrastructure
Ted Nelson (in Software p16), The Crafting of Media
this week we’ll talk about requests and APIs, and some moments in internet history. We’ll learn to use some command line tools, and talk about some interesting uses of data.
|make a website that interfaces to a remote API, and displays the information in a novel form.
|Everest Pipkin, It was raining in the data center
Julian Oliver, Stealth Infrastructure
|02/17||no class! (but you still have homework)
be sure to update your site with progress this week
|Louise Drulhe, Critical Atlas of Internet
Kate Crawford and Vladan Joler, Anatomy of an AI System
bonus – Ingrid Burrington, Networks of New York
|02/24||what’s the internet??
So i sent you a http request… but where did it go?? welcome to the weird and wonderful world of the internet protocol. in this class we’ll unpeel some layers of abstraction that keep the internet looking like it’s working great all the time (it’s actually a big big mess), learn about media archaeology and network forensics.
|Using some of the tools and techniques we’ve discussed in class, discover something about your own local internet system.
|Ethan Zuckerman, The Cute Cat Theory of Digital Activism
Paul Ford, i had a couple of drinks and woke up with 1000 nerds
This week we’ll learn about servers. What are they? How do you make one? Is everything really just a file?
|Develop the server you made in class to handle both a GET request and a POST request.
|Karly Wildenhaus Towards a Library Without Walls
Daniel Romein (Bellingcat) Europol’s Asian City Child Abuse Photographs Geolocated
A class about structuring knowledge. We’ll talk about objects, data, libraries and scraping.
|Curate a data-set, .
|Emily Scott Climate Change and Representational Breakdown
Christine Schranz Commons for the Cartography – how Social Computing Changes the Design of Interfaces
This class is about the use and misuse of maps, charts, and graphs as tools of arranging, ordering and representing ideas. We will use JQuery and other libraries to arrange the data we gathered last week, thinking about different approaches to representation.
|using jQuery (and anything else you choose), display the data set you collected last week in a few different ways.
|Brandur Learning from Terminals to Design the Future of User Interfaces
Alexis Madrigal, The Lost Ancestors of Ascii Art
This week we’re going to get really into programming for the command line! A chance to get up close and personal with your filesystem! Abandon the need for UI!
|write a command line tool for yourself, using either NodeJS or bash. This tool should address some need you have from your computer which it does not currently address. (challenge – if anyone successfully makes a pizza/other food ordering tool, I will fund a live demo when we review these on 04/06.)
|Jonah Weiner Where do dwarf-eating carp come from
Elvia Wilk with Jenna Sutela Slime Intelligence
|04/06||what’s the matter? automata!
this class introduces some of the themes we’ll be exploring in the final project, looking at self-organising systems, agent-based modelling and cellular automata as ways of exploring complex systems and dynamics.
|Ian Bogost The Rhetoric of Video Games
FiveThirtyEight Why It’s So Freaking Hard to Make A Good COVID-19 Model
|04/13||simulation and games
We will think about interface metaphors and feedback systems, and talk about some of the history of cybernetics.
|Write a proposal for your final project.
welcome to scope!
|start developing your final project in earnest, and document your progress as you go along. start by thinking about the basic infrastructure. What requests will you make? Can you build a minimal prototype that performs most of these tasks? come to next class with at least one aspect of the system prototyped.
|bret victor, Nicky Case how to simulate the universe in 134 easy steps|
|04/27||requests, loops, and regex
||continue work on final project – by now you will have a functioning prototype, and be thinking about the interface in greater depth. What is the user experience of your simulation? Have a think on any topics you’d like to explore more, or revisit.
this class is an opportunity to revisit and expand upon parts of the syllabus. What would you like to know more about? Is there anything you’d like to hear again?
|prepare a penultimate draft of your final project. We’ll critique these next class, so they should be fully-functional.
We’ll look at everyone’s final projects in class, and critique one anothers’ work. The rest of the class will be working time. Come with bugs, questions, problems, and thoughts. Leave with new ideas and inspiration to improve your project over the final week.
|using feedback from the class discussion, put the final touches to your project
|05/18||crit /// party!
We’ll have guests in to critique the projects, and finish the semester with a celebration.
structure of the course
This course is entirely project-based. this means no exams – but also this does mean that almost all of your grade is dependent on consistent, imaginative and thoughtful work on the weekly assignments. Considered together, these will give you a broad portfolio that demonstrates a range of skills and techniques. The assignments for this course consist of six 1-week assignments, two 2-week assignments, and a final project. Each of these will address a different form and set of ideas, though there are links between all of them, and you are welcome to use these to explore one continual theme.
This class is not about having perfect code each week, and I would not expect you to. Publish and document whatever you have as you go along, so I can see your thoughts evolving as you go. That said, consistently incomplete, poor-quality or overly-simple solutions will definitely affect your grade. If you’re struggling, email me before saturday night at the latest, and turn up to office hours on Monday / make alternative arrangements, and we can work on getting you back on track. Don’t leave everything till the night before!
Each week, I expect you to write a short paragraph or two (100-250 words) on what you struggled with, what you enjoyed, your thoughts on the readings and notes for yourself, as part of an ongoing ‘blog’ on your site. This will be valuable to you as you revisit your work, and try and remember what you did and how you did it.
I want you to make this class useful to you, so feel free to adapt assignments to suit your interests (though talk to me about it first). These tasks are deliberately open ended, but if you’re struggling for inspiration you are more than welcome to use one of the example problems that I’ve set. If you’d like to look further afield, the are.na channel an idea for a website is a great start.
All classwork is presented through personal websites, that you will use to document your progress. come to each class with the assignment finished, on your website, and prepared to talk about it. I will randomise you each week, and if picked you’ll have a 5 min slot to talk about your week and what you found out, and people can ask you questions (we’ll talk to ~4 people a week, more for larger projects).
There is no point in taking this class if you don’t do the homework: this is how you develop the skills you need to work on the web! Missing one of these unannounced will bring your grade down by a half point each time. (you can make it back up (once) if you publish within the week).
You may choose to work on any of the weekly projects in a group of not more than two students – and it’s encouraged you try this at least once in the semester. Do bear in mind that group projects will not just be marked on the quality of the work (which should exceed the scope of a solo attempt), but on how well you have worked together (to be recorded in the git commit history).
on the readings
Readings for this class come in two types: preparational, and inspirational. The preparational ones will set the tone for the start of the next class, and you should come having read and thought about them, as we’ll use them as the basis for the initial discussion. The inspirational readings are there to provide different perspectives on the previous class, or the assignment you’re doing. They might be particularly helpful if you find yourself getting bogged down in something, or lacking ideas. Sometimes, readings will be websites to click through and think about, that will introduce new ideas.
In both cases, notes on the readings should feature in your blog posts as you think about each week’s assignment. As we go along you might want to swap the ‘inspirational’ readings with something else you find inspiring – that’s fine, but do also write about what you read. Readings are always ‘due’ the next scheduled class.
Grades for this class are assigned accordingly:
40% homework assignments
10% documentation (on your blog, inc readings, homework, final project)
20% contributions in class (readings, critiques, questions, in class assignments etc.)
30% final project
If you’d like to use one such framework for any or all of your projects, I am happy to talk through it with you, though I would expect you to be reasonably self sufficient and confident with the material already being covered. I would encourage you to try it for a homework or two before deciding to use for final project. I am most familiar with React, but more than happy to help you with other frameworks if you give me fair warning.
You can use any computer to do this class! However: you will benefit from using the same device consistently (to maintain installed software). If you can bring your own laptop to class, it’s a good idea. If using Hunter’s computers, it’ll make your life easier if you can keep to the same operating system.
structure of each class
This will vary, but roughly:
1 hour class discussion. show+critique due or in-progress assignments, talk about the readings, reflect on learnings/challenges from the past week.
10min break (get a snack?)
45min in-class exercise/activity
10min wrap up and discussion
10min homework for this week.
on asking questions
We’ll talk in class about how to ask good questions about your code.
At some point during the semester you might use a platform like Stack Overflow to ask a question about some code you’re struggling with. Take a screenshot of the question and replies, and write a short discussion of how you think it went: whether the interaction was helpful, whether you had to follow up etc etc.
Hunter College regards acts of academic dishonesty (e.g., plagiarism, cheating on examinations, obtaining unfair advantage, and falsification of records and official documents) as serious offenses against the values of intellectual honesty. Over this class, we will learn when it is appropriate to include technologies by others (for example, in the form of libraries), vs when that technology needs to be credited.
From ‘writing code’, in academic integrity at MIT:
“Writing code is similar to academic writing in that when you use or adapt code developed by someone else as part of your project, you must cite your source. However, instead of quoting or paraphrasing a source, you include an inline comment in the code. These comments not only ensure you are giving proper credit, but help with code understanding and debugging.”
“You should not simply re-use code as the solution to an assignment. Like academic writing, your code can incorporate the ideas of others but should reflect your original approach to the problem.”
In compliance with the American Disability Act of 1990 (ADA) and with Section 504 of the Rehabilitation Act of 1973, Hunter College is committed to ensuring educational parity and accommodations for all students with documented disabilities and/or medical conditions. It is recommended that all students with documented disabilities (Emotional, Medical, Physical, and/or Learning) consult the Office of Accessibility located in Room E1124 to secure necessary academic accommodations. For further information and assistance, please call (212) 772-4857/TTY (212) 650-3230. If you have registered with the Office of Accessibility, please let me know at the start of the term.
hunter college policy on sexual misconduct:
In compliance with the CUNY Policy on Sexual Misconduct, Hunter College reaffirms the prohibition of any sexual misconduct, which includes sexual violence, sexual harassment, and gender-based harassment, retaliation against students, employees, or visitors, as well as certain intimate relationships. Students who have experienced any form of sexual violence on or off campus (including CUNY-sponsored trips and events) are entitled to the rights outlined in the Bill of Rights for Hunter College. Sexual Violence: Students are strongly encouraged to immediately report the incident by calling 911, contacting NYPD Special Victims Division Hotline (646-610-7272) or their local police precinct or contacting the College’s Public Safety Office (212-772-4444). All Other Forms of Sexual Misconduct: Students are also encouraged to contact the College’s Title IX Campus Coordinator, Dean John Rose (email@example.com or 212-650-3262) or Colleen Barry (firstname.lastname@example.org or 212-772-4534) and seek complimentary services through the Counseling and Wellness Services Office, Hunter East 1123. CUNY Policy on Sexual Misconduct. Link: http://www.hunter.cuny.edu/diversityandcompliance/repository/files/cuny-policy-on-sexual-misconduct.pdf
The success of this class involves your presence and participation. As such, it is important that you are here, and on time. You will not be penalised for one absence, so long as you notify me in advance. Two absences will reduce your grade one step (A -> A-), three absences reduce two steps. More than that will have a serious impact on your grade.