UC 109 - Programs, Information and People
Section: 001
Term: FA 2017
Subject: University Courses (UC)
Department: LSA UG: Curriculum Support
May not be repeated for credit.
Primary Instructor:

Introduction to programming with a focus on applications in informatics. Covers the fundamental elements of a modern programming language and how to access data on the Internet. Explores how humans and technology complement one another, including techniques used to coordinate groups of people working together on software development.

This course is the first in a two-course sequence introducing students to programming and the culture of programming, with a focus on applications for people, by people, and about people. For people means applications for end-users or analysts, as opposed to back-end or infrastructure software. By and about people refers to processing data traces of people’s actions and interactions.

Detailed Learning Objectives. At the end of this course, students should be able to:

  • Discuss the ways that people and computers are the same and ways that they are different as information processors
  • Describe how open source software projects are typically organized and some of the advantages and disadvantages of that organizational form
  • Describe the relationship between redundancy and compression
  • Understand the following programming concepts:
    • Data types
    • Variables
    • Functions
    • Conditional statements
    • Iteration
    • List and dictionary data structures
    • List comprehensions
    • Regular expressions
    • APIs
  • Write programs in python that demonstrate understanding of all of the above concepts and that use the following features:
    • File operations
    • String processing operations
    • External modules and APIs
  • Manipulate data to:
    • Extract and summarize desired elements
    • Output the processed data in .csv formats
  • Create a test suite for a simple program

Textbooks and Notes. We will be using a custom version of the interactive, online textbook below. I will be editing and reorganizing it to fit our curriculum. But you can get a sense for it now.

How to Think like a Computer Scientist: Interactive Edition
Brad Miller and David Ranum

The content for that book has a long history. Another “fork” of it, closer to the version we’ll be using, can be found online at www.pythonlearn.com/book.php
You can also download a PDF of it from there.

Other Required Readings

  • Christian, B., The Most Human Human, 2011, London, England: Viking.
  • Weber, S. The Success of Open Source, 2005, Cambridge, MA: Harvard University Press

Course Requirements:

There will be assignments throughout the course (pretty much every week and sometimes mini exercises during a lecture). Regular assignments allow you to learn the material in small "chunks" and to keep a close eye on how well you understand the material. In some cases, we will do part or all of the assignments during a lecture, though you will submit it later.

There will be a midterm and a final exam. The midterm exam is administered during the regular lecture session and the final during the final exam period. The exam dates are announced well in advance (see the dates at the end of this document). If you have a conflict, please let me know at least 2 weeks in advance so that I can arrange a different time for you.

Class Participation (Bonus Points)
Class participation, helping others, interacting on the Q&A site and answering questions, asking good questions that lead to interesting discussions, and pointing out corrections to my lectures or code will contribute to bonus points, which you can use to help boost your grade.

Python Challenge
There are optional challenge problems at www.pythonchallenge.com. I encourage you to try to solve the problems there when you have time and discuss approaches or even code on the email list — that all contributes to class participation points. If you are not able to solve them initially, don’t worry. Treat them as optional and a fun part of the course. The good thing about the Python challenges is that once you submit a solution to a challenge, you can see several solutions to the previous challenge. It is a learning experience to see how other people approached the same problem.

The graded work in the course will be weighted roughly as follows to determine a final percentage grade. (Note that bonus points could allow you to get above 100%):

  • Weekly Assignments 30%
  • Class prep (online exercises) 10%
  • Discussion section prep and participation 5%
  • Exams: 40% (Midterm: 15% and Final: 25%)
  • Capstone project: 15%
  • Helping other students: (helpful questions or answers in lecture or on Facebook group) Up to 2% bonus points

Intended Audience:

The course is designed for students with no programming experience. If you stick with the course and invest the necessary time, you will be amazed at how much you will learn in 14 weeks. Don’t be intimidated by the few students who already know how to program. They’re welcome in the course, but the course is not designed for them.

If you do not have any programming experience, some concepts will take some time to sink in.

Class Format:

We will be using a partially “flipped” classroom. It is expected that you will read and attempt exercises before class. To do this well, you will generally need to allocate about 2 hours of prep time before each lecture session.

During the official lecture time, we will review tricky points and difficult exercises, solve some more additional problems together, have supervised time working individually on the graded homework, and get a preview of the next session’s material.

During the section meetings, you will discuss the non-programming readings (Most Human Human; Success of Open Source) and occasionally have more supervised time working individually on the graded homework. You will need to allocate about 1 hour of reading time each week.

If you are doing the 4 hours of prep time weekly, you will often be able to complete the graded homeworks in class, or with 1-2 additional hours outside of class. If you don’t do the prep before class, you will lose much of the benefit of the class time, and will end up spending more total time trying to catch up in order to do the homework. You will also lose the points for prep, so it will hurt your grade directly.

UC 109 - Programs, Information and People
Schedule Listing
001 (LEC)
MW 2:30PM - 4:00PM
002 (DIS)
W 4:00PM - 5:30PM
003 (DIS)
W 5:30PM - 7:00PM
004 (DIS)
Th 8:30AM - 10:00AM
005 (DIS)
Th 10:00AM - 11:30AM
006 (DIS)
Th 1:00PM - 2:30PM
007 (DIS)
Th 2:30PM - 4:00PM
008 (DIS)
Th 4:00PM - 5:30PM
009 (DIS)
F 10:00AM - 11:30AM
010 (DIS)
W 4:00PM - 5:30PM
011 (DIS)
F 9:00AM - 10:30AM
NOTE: Data maintained by department in Wolverine Access. If no textbooks are listed below, check with the department.
Syllabi are available to current LSA students. IMPORTANT: These syllabi are provided to give students a general idea about the courses, as offered by LSA departments and programs in prior academic terms. The syllabi do not necessarily reflect the assignments, sequence of course materials, and/or course expectations that the faculty and departments/programs have for these same courses in the current and/or future terms.

No Syllabi are on file for UC 109. Click the button below to search for a different syllabus (UM login required)

Search for Syllabus
The CourseProfile (ART) system, supported by the U-M Provost’s 3rd Century Initiative through a grant to the Digital Innovation Greenhouse, provides additional information about: course enrollments; academic terms and instructors; student academic profiles (school/college, majors), and previous, concurrent, and subsequent course enrollments.

CourseProfile (ART)