Computing has had a significant global impact. To study and critique that impact, students need to understand the fundamentals of computing, framed in this course as manipulation of text, creation of algorithms, and generation and analysis of Web pages. Students learn computational concepts, write programs with a focus on purpose (not memorizing syntax), and develop the skills to understand and communicate with software developers. Students will explore the justice implications of computing concepts, algorithms, participants, programs, and skills.
Students program in this course. Some of the programming is in special-purpose languages (called teaspoon languages) designed to be easy to learn and conceptually focused. Most student programming is in Snap, a programming language in which many common programming errors are impossible. No prior computing background is expected, and no additional mathematics knowledge besides basic high school algebra is necessary. Lecture/lab sessions will be structured around active learning, including peer instruction (which will be used to determine participation), live coding, and group-based practice in programming activities. There are bi-weekly on-line, open-book/note/Web quizzes, with no exams. Most weeks will include a reading (or video) with a written reflection. Most weeks will have a homework activity that will involve some kind of programming activity in a scaffolded programming environment, like generating computational poetry, building a chatbot, training a gesture recognizer, and downloading a log file and detecting trends in it. There are three projects, such as: Building a game in Twine, generating a website from a database using a template, and visualizing data. There are several ebook-based homeworks where students transfer knowledge from in-class scaffolded programming to professional text programming (e.g., in Python).
Course Requirements:
No prior computing background is expected, and no additional mathematics knowledge besides basic algebra is necessary. Students are expected to have a laptop (Chromebook is sufficient, iPad or Tablet is not) which they can bring to class. If you do not have a laptop, consider the U-M Laptop Loaner program: https://its.umich.edu/computing/computers-software/sites-at-home
Intended Audience:
Aimed at students with an interest in how the computation that influences our daily lives works. Particularly aimed at students interested in humanities and social sciences.
Class Format:
The course follows an active learning format with frequent peer instruction and collaborative learning activities. Collaboration is strongly encouraged on all aspects of the course except the quizzes. At several points in the semester, students work through an online ebook in which they map from Snap into traditional textual programming languages (Python), to promote transfer and the applicability of the course in new contexts. There are no exams, but there is a final project.