Syllabus
| Instructor | Paul Cantrell |
| Contact | Email or Slack |
| Class meetings | MWF 1:10–2:10pm, OLRI 256 |
| Office hours | Grab a spot |
Course Description
Technology increasingly feels like something being done to us instead of for us. What if instead it were something done by us?
In this course, we will use code to create images, animations, and sounds through tinkering and experimentation. The goal is always to make something cool. We will explore a variety of different programming languages, tools, and techniques. Coursework will generally start with code that already works; students will modify that code and learn from what happens. Sometimes learning will come through careful reasoning; other times it will come through serendipity. These experiments will gradually evolve into new creative work that is distinctively the students’ own. At the end of the semester, we will share our creative efforts with the campus community in a public event that we organize together as a class.
This course is in part an open doorway into computer science. For students with zero prior programming experience, it offers a fun way to start exploring coding. For students who do have prior experience, it hopefully offers exposure to new technologies and new kinds of programming. For any students who find they enjoy the experience of playing with code and want more of that, this course can be good preparation for further CS studies.
However, this course is not entirely — not even primarily! — about computer science. As a First-Year Foundations course, this course is also an introduction to college itself. It’s here to nurture the kind of self-directed, collaborative, human-centered, open-ended, boundless, lifelong learning that is at the heart of the liberal arts philosophy of education. A major goal of this school where you are now a student is to build an education for yourself that extends far beyond school. We will be using the experience of coding to acquire good general strategies and cognitive tools for such learning.
This course is also an effort to shift students’ relationships with technology. Unimaginable wealth and power are increasingly concentrated behind the screens of our computing devices. That power wants us to be passive, quiescent consumers of technology; that wealth wants us all to count for nothing except the output we produce. To move through this world holding the belief that technology is ours to tinker with — something we can and should shape for ourselves so that we can thrive — is an act of rebellion. Let’s reclaim technology for humans, through the joy of making and doing.
Learning Goals
In this class, my hope is that students will:
- Gain new understanding (be it first understanding or additional understanding) of how code works, how it behaves, what it feels like to work with it, and what strategies are effective for creating and modifying it.
- Learn some basics of how computers work with images and sound, how they represent these things as data, and how computing technology creates sensory experience.
- Build general strategies that extend beyond computer science for puzzling out new things through exploration and experimentation.
- Build resilience in approaching new things that are unfamiliar, confusing, intimidating, and even outright terrifying; build the capacity to say “I have no idea what that is or where to start!” with enthusiasm instead of panic.
- Cultivate the habit of embracing slow process, embracing craft and serendipity, embracing play.
- Move away from the externally directed learning of primary and secondary education, and toward a practice of self-directed learning that can continue outside of school.
- Practice collaboration with other students, learning to share learning and creative work with others in ways that are humane and life-giving.
- Cultivate an internal sense of purpose: move away from a utilitarian box-checking stance toward education, in which the primary goal of learning is to satisfy authority figures, and toward a stance that views the experience itself as what is most valuable.
Course Structure
Coursework will start as in-class activities, in which students tinker with code together, learn from whatever happens, and share their findings with each other.
Some of those activities will become out-of-class creative work. I will provide parameters and guidance for this work, but my hope is that students get wrapped up in pursuits of their own invention that surprise me just as much as them.
We will gather this creative work into a public happening near the end of the semester. The exact date, format, and content of this event are entirely up in the air at the start of the term; we will develop it together. It will likely involve each student selecting and refining some of their favorite work from the course.
Along the way, I will assign occasional readings. These may range from technical documentation to course mechanics to philosophical explorations. There will also be a handful of tasks for you to complete, including attending at least 3 MSCS department events.
We will often set aside in-class time for First-Year Foundations work. That will include visits to other spots on campus (likely including the Idea Lab and the ceramics studio), visits from campus departments (including both career and personal well-being resources), and in-class discussion time about the college experience in general.
As a fun bonus, we will join the first-years in Lauren Milne’s Physical Computing course for a series of Twin Cities outings. We hope to have four such outings, including a bike ride, some restaurant trips, and an arts / cultural event. These trips all happen outside of class time, and are therefore optional. We professors will be covering costs and organizing transportation.
Grading
Of all the things I do as a teacher, none have a lower value-to-cost ratio than assigning grades. Providing feedback to students is one of the most valuable things I do; however, assigning grades — flattening that feedback to a one-dimensional scale — is one of the least useful, and often one of the most damaging. Grades are objectivity theater, coercion, quantification hijacked to give education the appearance of authority. I would happily do away with them entirely.
Unfortunately, grades do matter (if only temporarily) because many actors and institutionalized systems — the college, scholarships, immigration agencies, parents, jobs, grad schools — require them. Since we cannot eliminate grades, I am experimenting in this course with de-emphasizing them using an ungrading approach. The goal is to minimize our waste of time and emotional energy, and maximize our focus on the things that truly matter: learning, growing, exploring, thriving.
How does this work? Near the start of the semester, I will ask you to write a short reflection on your own goals for the class, and what you wish for from the course and from yourself. This will function as instructions to yourself, as well as guidance for me in shaping the course.
Throughout the course, I will provide qualitative feedback, ask you to reflect on your own work, and track what work you completed. I will not, however, assign grades for anything along the way. The experience of doing the work is what matters. So that I have a sense of how many students are reading this syllabus, please email me a picture of some lichen apothecia.
At the end of the semester, I will ask you to think back on the totality of your experience in the course, write a short guided retrospective on your learning over the course of the semester, and propose a course grade for yourself based on a rubric I provide. If I do not think your proposed grade is fair, I will let you know why. I reserve the right to assign the final grade in the course; however, I will treat your reflection and your proposed grade with deference.
Policies
Copying code
Programming is a social activity, and I encourage you to seek out help from your professors, preceptors, fellow students, and the web. Collaboration is good; however, cheating is not. Copying any code you did not write without attribution is cheating, and under many circumstances copying code is also a federal crime. This is true even if you modify what you copied.
In this class, you are welcome to discuss problems and solutions with other students, as long as you do not share code with them when you are each supposed to be writing your own. If someone helped you with a problem or talked through it with you, acknowledge their help on the assignment with a comment in the code. I will never subtract points for acknowledging the help of others.
If you copy code from an outside source (e.g. blog, tutorial, docs, Q&A site such as Stack Overflow), you must:
-
make sure that you have the legal right to copy it and
-
provide attribution the code’s origin by adding a code comment with the URL or other source where you found it.
For language excursions and final projects, this same policy applies to AI-generated code: add attribution for anything you did not write. The homework assignments, however, are puzzles, designed to make you think. Do not use AI to help you write code for the homeworks. You struggling over the code and puzzling it out for yourself is the point. At best, an AI will solve the problem for you and rob you of your learning; more likely, an AI will mislead you and turn a small confusion into a larger one. Don’t.
The act of turning in copied code without attribution is a violation of Macalester’s academic honesty policy, and is subject to disciplinary action according to college rules. This is a big pain for both of us, so please don’t put us through that.
Late work
You will hand in all homework online. If technical troubles are preventing you from handing in your assignment, contact me immediately, even if it is the middle of the night.
Despite this class’s un-grading approach, it is still critical that you honor deadlines so that you do not fall behind on the material, and so that I can manage the workload of the course. If you are going to fall off the course schedule, talk with me so that we can make sure that doesn’t cause havoc for either you or me. Late work requires planning. Think ahead! Communicate!
If meeting a deadline will not be possible, or even if it it could technically be possible to meet it but you are lifting a heavy load in your life and could use some more time to catch your breath, talk to me before the work is due. My goal is for our class to create the best outcomes — both in terms of learning and in terms of well-being — that are possible for us given the constraints we face. We are collaborators in making that happen. Talk to me, and we’ll solve any problems together as they arise.
Support and Well-Being
All of us — you, me, your other professors, your fellow students — are human beings. All of us carry our own experiences, thoughts, emotions, needs, and hopes with us, including in class. All of us have bodies and minds that need care. Please do what you need to do to take good care of yourself, and make our class a good experience for yourself and your fellow students. In the classroom, eat if you are hungry, drink if you are thirsty, and step out if you need a break. Outside of the classroom, take the time to sleep well, eat well, and connect with others — even when life is busy and the pressure is high. If you are feeling sick, stay home. We keep each other safe! And when you need help, reach out.
We live in a time of multiple ongoing crises in the larger world. We urgently need to be present for each other, and present for ourselves. Our physical and mental health depends on all of us taking care of ourselves and each other. I am committed to providing assistance to help you succeed in this course. I love programming, and I hope you will love it too. I am living through these difficult times preserving my spirit as best I can, and I want to help you do the same.
If anything poses a risk of interfering with your ability to thrive in this course or on this campus, please discuss it with me. This includes health issues (both mental and physical), disabilities (both documented and undocumented), schedule conflicts, competing obligations, life changes, financial problems, and personal challenges. We will talk about what you need, and form a strategy for this course together. You don’t need to share any more personal detail than you are comfortable sharing. Just let me know that you need support, and I will do my best to support you.
Official accommodations are available for students with documented disabilities. Contact Disability Resources to make an appointment or learn more about the process. Note that even if you do have an official accommodation, it is still your responsibility to contact me.
Please communicate with me. No matter whether you have a sticky personal situation, a vague concern, or a struggle that is impacting you and your work, no matter whether it is officially recognized by the college or not, please communicate with me. I will try not to ask for details you are not comfortable sharing, but I do want the chance to help you out. The golden rule:
Never suffer in silence!
Never. I am here to support you. I know it can be hard to ask for support when you most need it. When that time comes, remember that I asked you to ask me.