SI 182 - Building Applications for Information Environments
Section: 001
Term: FA 2008
Subject: Information (SI)
Department: School of Information
Requirements & Distribution:
Other Course Info:
F, W.
This course counts toward the 60 credits of math/science required for a Bachelor of Science degree.
May not be repeated for credit.
Primary Instructor:

Fundamental programming skills in the context of end-user software applications using a high-level language, such as Ruby or Python. Rapid design of a variety of information-oriented applications to gather, analyze, transform, manipulate, and publish data. Applications drawn from statistics, pattern matching, social computing and computer games.

Welcome to EECS 182, an exciting new course that is specially designed to teach introductory programming skills in a novel way to students with interests in a variety of fields. The course is jointly designed by faculty in Computer science and School of Information to appeal to students considering the new inter-disciplinary concentration in LS&A, called Informatics. It should also be a very attractive course for students who have interests in other concentrations and need an exposure to programming that they can make use of in day-to-day work. You can sign up for the course as either EECS 182 or SI 182.

Specifically, we designed the course keeping in mind the technology skills students will need throughout their careers. The one thing that you will likely encounter over and over during your undergraduate degree, when you pursue advanced degrees, and once you are working is complex data that needs to be analyzed, understood, and visualized.

While you can do a lot with a spreadsheet, most of the interesting data is never quite in the right format. Sometimes, before you can work with data, you have to "clean it up", transform it, or even check it for errors. Often, this manipulation of data requires a series of tedious manual steps - and sometimes you have to repeat the steps over and over again for each new data set with which you are working.

This is where programming comes in - programming is a simple way for you to describe a series of steps to the computer and then sit back and watch as the computer happily does your task over and over without making a mistake. As a result, you can turn your focus to exploring and interpreting the data instead of laboring over manual editing.

Automation of these mundane tasks requires some programming skills. It isn't necessary to be a "super programmer" — just to have an ability to learn and apply the basics. These basics are useful for writing a macro in a spreadsheet, data vizualization script, interactive web page, or game to run on your cell phone.

If you want to take more advanced software development courses, 182 is a solid introduction to programming and will prepare you for the more advanced courses in EECS. And, if this is the only programming course you ever take,you will be pretty handy with data and vizualization for the rest of your career.

Two other introductory programming courses, besides 182, are EECS 183 and Engin 101. All the three courses should prepare a student for subsequent courses in most fields. The primary difference is in the style of teaching, target audience, and in the choice of programming languages. Engin 101 is oriented toward engineering students. It teaches C++ and MATLAB and focuses on engineering-oriented problem solving. EECS 183 is a course for non-engineering students, that uses C++; many students in 183 intend to go for a Computer Science degree and the application-domain for problem solving is often oriented towards computer scientists.

The new course, EECS 182, is designed to appeal to a broader audience. Its design was motivated by the need for an introductory programming course for a new interdisciplinary LS&A concentration, Informatics. Informatics concentration is designed by faculty in Computer Science, School of Information, Mathematics, and Statistics. The new concentration deals with design and analysis of information systems in various fields, including life sciences, social networks, statistics, computer science, etc. It will have four tracks, Computational Life Sciences, Social Computing, Information Analysis, and Computational Informatics. EECS 182 will usually draw on applications with broad applicability from these domains. 182 uses a higher-level langauge, Python, which is a wonderful language for writing quick mashups or prototyping solutions quickly. Python is a very popular language and is used at many companies, including Yahoo and Google! See for more information about the language.

182 has been designed for students with no prior programming experience. We will learn the basics of programming taking our time to understand the basic concepts of programming and revisiting topics as necessary. Weekly assignments will be key, as they will provide a venue for applying programming concepts. We will look at a number of data applications and use our programming skills to manipulate, transform, and visualize the data from multiple sources and application domains.

There are no pre-requisites for the course so anyone should be able to register until the course fills up. The course is capped at 50 students for Fall 2008. If you find the course is filled, be sure to put yourself on the wait list. Often, we are able to accommodate students from the wait list during the first two weeks of the class. Sign up for the class as either EECS 182 or SI 182. It is the same class, cross-listed in two academic units, since it is taught by faculty in both units in different semesters.

The following textbook is required for the course:

  • John M. Zelle. Python Programming: An Introduction to Computer Science, Franklin, Beedle & Associates, Inc. 2003, ISBN: 1887902996.

In addition, there are several online resources, including complete books, that you will find useful and we will refer to from time to time:

  • How to Think Like a Commter Scientist: Learning with Python, by Allen Downey, Jeffrey Ekner, Chris Meyers. This is a good introductory text that uses Python to present basic ideas of computer science and programming. It's especially recommended if you don't have a lot of programming experience and a good thing to skim even if you do. Freely available online.
  • Python for Newbies, by David Borowitz. A short tutorial that goes through the basics of Python that only assumes a bit of programming experience.
  • Learn Python in 10 Minutes, by Poromenos. An even shorter tutorial that covers Python's syntax quickly for those with a fair amount of programming experience.
  • Python Tutorial, by Guido Van Rwum. This is the standard tutorial reference by the inventor of Python. It's aimed at people who have previous programming experience.
  • The NumPy package for scientific computing
  • Python 2D plotting library: Matplotlib/pylab library for generating various types of 2D plots.

Part of your grade requires you to find an interesting python module and talk about it in the class. You can find one list of modules at and at You are not restricted to talking about modules in these sets however. If you find an interesting module, share it with the class.


  • Homeworks [including mini-projects and projects): 50%
  • Exams: 40%
  • Class participation and python module presentation: 10%

SI 182 - Building Applications for Information Environments
Schedule Listing
001 (LEC)
MW 2:30PM - 4:00PM
011 (LAB)
F 2:30PM - 4:30PM
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 SI 182. 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 Office of Academic Innovation, 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)