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 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 their personal resilience to 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
Academic integrity
Programming is a collaborative social activity, and in their work, programmers rely (and should rely!) on help from external resources and from other people. That includes the work you do in this class. Seeking and offering help is good! Collaboration is good! There are lines, however, that you should be careful not to cross:
-
Learning loss: Some assignments in this class ask you to complete challenges whose answers are quite easy to find online. The point of these assignments is not for you to output the correct answer; it is for you to puzzle it out for yourself. No struggle, no learning. The process is what matters; the output is an afterthought. Bypassing the struggle is cheating: cheating in class, but also cheating yourself.
(If you go to the gym and have somebody else lift weights for you, or have a robot lift them for you, do you expect to get any stronger?)
I will clearly indicate those assignments where the puzzling is the point. In these cases:
- You may discuss problems in general terms with other students and seek answers to general questions in (for example) programming language documentation and web sites.
- You may not copy code wholesale — either from other people or from generative AI (which often ends up being an anonymized way of copying from other people) unless the assignment asks you to collaborate.
-
Misrepresentation of work: If you present something as your own original work when it is not, then you are deceiving others about your own efforts and abilities. This is unethical in most professional contexts, and is certainly unethical in a course where college credit is supposed to depend on you doing certain work.
In many assignments in this class, you are allowed to use external resources. If so, I will clearly indicate this in the assignment. In these cases, you must do the following:
-
If you copy substantive chunks of code or text from some external resource, anything more than a few lines, then include the URL of the resource you used next to the code you copied. This can be as simple as adding the URL in a one-line comment in your code.
-
If you consult a resource, such as a web site, a book, or another person, then cite the resource. This can be as simple as a footnote or endnote or parenthetical remark in written work, or an acknowledgements slide in a presentation.
-
If you use generative AI, then add a brief note explaining what tool you used and how you used it. If you copy its output into your own work, then delineate which portions of your work came from the tool.
-
-
Devaluing others: In addition to robbing yourself of learning and misrepresenting yourself to others, using people’s work without giving them credit for that work also harms those other people. History is full of ugly stories of people miscrediting, ignoring, and erasing the important contributions of others. That history stops when we start lifting up others who have been important to us.
In addition to those moral concerns, you need to be careful not to run afowl of copyright law. If you copy anything, make sure you have the legal right to copy it. Check the license; learn about the legal limits of “fair use.” These legal concerns are related to but not the same as the moral concerns of devaluing other’s work. You need to think about both.
Note that these concerns apply no matter what tool you use. If something would be plagiarism if a human did it, then it is still plagiarism if a generative AI does it. If you use gen AI, is your responsibility to ensure that you are not plagiarizing the work of others. If you are wondering how on earth you’re supposed to check that…well, that is a very good question, and you should take it up with the AI vendors.
Violation of these rules may constitute a violation of Macalester’s academic honesty policy, and thus be 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. Be mindful, and ask me for guidance.
Note that none of the concerns above will vanish after you graduate. Mindfulness about all of these questions must continue to be a part of your professional and personal life.
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.