Monthly Archives: December 2011

Technology Courses at the University of Michigan School of Information

I wrote a summary report for the SI curriculum committee describing of how I saw the various technology courses in SI fitting together. I figured I would share the report more broadly to help students decide which courses to take.

In the future SI572 is likely to be renumbered SI672 – but for this post, I use the old numbering scheme.

Nothing here is official – it is just my own opinions.

Course Summaries

These are the courses we have that are technical:

SI502 – Networked Computing: Storage, Communication, and Processing

SI502 is a very introductory course that is required for all students unless they pass the SI502 place out test. It is very much a survey course covering Python, Networks, HTML, CSS, Database, Search, and Security. The place out test insures that students with even a moderate amount of prior technical expertise bypass SI502. At this point about 1/5 of our incoming MSI’s bypass SI502. SI502 is taught at a very moderate pace and students have small discussion sections to insure everyone gets the attention they need to master the course material. SI502 is taught to about 140 students each Fall. There is a book “Python for Informatics” – written specifically for SI502.

SI539 – Design of Complex Websites

SI539 uses Python, HTML, CSS, Javascript, and JQuery to build a simple web application and deploy it on Google App Engine. There are no discussion sections. There are typically about 80 students in SI539 each semester. There are no discussion sections, but a GSI provides extensive office hours and assistance to allow struggling students to get help with the technical assignments in the course. About 60% of the students work pretty much on their own throughout SI539. There is a book written specifically for SI539 published by O’Reilly titled, “Using Google App Engine”.

SI543 – Programming I

SI543 is a traditional “first programming class” in the Java language. While it starts “at the beginning”, it moves quickly through quite a bit of material with the students building desktop-style applications including simple graphics and real-time (i.e. game-like) interactions with their applications.

SI572 – Database Application Design

SI572 covers PHP and SQL and prepares students to write real-world web applications in one of the more popular and widespread programming environments. The course features a significant group project where a real, significant web application is developed starting from the requirements and going through building and deploying a working application with a polished user interface. SI572 expects students can program independently, but does not specifically demand prior PHP experience. SI572 uses a book titled, “Learning PHP, MySql, and JavaScript”. We teach SI572 to about 50 students each semester.

How these Four Courses Fit Together

SI502 and SI539 are designed as courses for people with little or no programming background. SI502 in particular is designed for students who are “nervous” about computing and technology. The pace of both courses is sufficiently slow to insure that we don’t lose students. After SI502, students should have a good understanding of programming and technology but not be independent programmers. By the end of SI539 they should be well on the way toward being an independent programmer. Both SI543 and SI572 expect that incoming students function at about the level that students at the end of SI539. It would not hurt to add a very suggestive loose pre-requisite to SI543 and SI572 that says “Suggest an introductory programming course like SI539 or equivalent”.

Sample Sequences

In this section, I show several paths taken through these courses by different types of students.

Just Starting out In Technology

These students come in dreading SI502 and we work very hard in SI502 to get them excited about technology enough to want to take SI539 at least. These students are the target audience of SI502 and we make that very clear. Their sequence is either:

SI502 -> SI539 (if they get a little confidence)

Solid Programing But No Web Experience

Some of our incoming students have a very narrow Computer Science background where they were not exposed to the web at all but are solid “pure-programmers”. They tend to place out of the SI502 course and start in SI539

SI539 -> SI572

Self-Taught Web Programmers on the Web

Some of our incoming students have little formal training in programming or their formal training was a long time ago, but they have been playing with web technologies all along but their knowledge is spotty and they want better coverage in terms of their skills. They also need to see how programming is done on desktops. There is usually no point in them taking SI539 – it is too easy and too slow to keep their interest.

SI572 -> SI543 (EIther order works actually)

Interest In Data Analysis

Sometimes students are uninterested in building web applications and just want to do data analysis.

SI502 -> SI601 -> SI618

Traditionally SI601 (Data Manipulation) and SI618 (Exploratory Data Analysis) have been perl courses because that is how the teachers in those courses had developed their assignments. But there is a possibility with someone new teaching these courses they might switch to Python. That would make them articulate nicely with SI502 – particularly given SI502 is very data-oriented and includes a module on regular expressions.

Skilled Web Master

These students start with SI572 and move through this set of courses:

SI520 – Graphic Design
SI572 – Database Applications
SI634 – Application Platform Configuration (Drupal)
SI635 – Application Platform Customization (Drupal)
SI658 – Information Architecture

This is a great set of courses that exposes the students to a wide range of applicable technologies and techniques.

Gaps and Opportunities

Given the demands and interests that I am hearing from the students in these classes, I get a sense there is a demand for these topics – we may only need 7 weeks on each topic:

– A course in mobile computing (Java/Android and/or Objective-C/Apple) is taught.

– A course where advanced JavaScript (i.e. JQuery is taught)

– A course where we cover advanced data manipulation – would help SI508, SI601, SI618 and similar courses get started in their topics with less remedial instruction in each course

– A course that combines Graphics and CSS to make sophisticated, gorgeous and functional web sites


Over the past four years, we have gotten to a pretty good understanding of our four core programming courses and where they fit in our curriculum to serve our entire range of MSI students that range from nervous beginners to students with computer science undergraduate degrees and work experience in web programming. Probably the biggest key fact is to understand the SI502 and SI539 are very different courses than SI572 and SI543. SI502 and SI539 are broad courses designed to gently build confidence and competency whereas SI572 and SI543 are real, solid programming courses that produce graduates with real programming skills relevant to the marketplace.

Mexican Food of Note in Southeast Michigan

At the University of Michigan School of Information we have this mailing list we call “” that is prone to interesting long threads about everything from traffic tickets to lost laptop power supplies to where the GIF has moved to since the first bar got too full.

Recently there was a thread titled ” [Ann Arbor Mexican Food] Amazing Discovery” where it started out with one person talking about a restaurant they particularly liked. This triggered many follow on comments that made me very hungry.

I decided to turn the thread into a personal gastronomic TODO list. It may take a while before I get to all these places – but now I have a plan. Just Google these strings – you will find them quickly enough.

Taqueria La Fiesta, in Ypsilanti, MI

Taqueria La Fiesta at 4060 Packard, Ann Arbor, MI

Evie’s Tamales, Detroit, MI

Taqueria Lupita’s, Detroit, MI

Nuevo Leon, Detroit, MI

El Zocalo, Detroit, MI

TMAZ Taqueria, 3182 Packard Rd, Ann Arbor, MI 48108

Xochimilco, Detroit MI

Book Review: Luke Fernandez

Luke Fernandez of Weber State posted a cool review of my Sakai book:

Here is a quote:

As the Soviet’s used to say (and as historians often still profess), “the future may be certain but the past is always contested territory.” Which is another way of saying that if Chuck has offered up an intriguing story, I hope it doesn’t end up being the authoritative history of Sakai. The sub-title, after all, is a “retrospective diary” rather than a history, which would suggest that many other stories are worth telling.

Here is my reaction:

Luke thanks for such an insightful review of my book. You hit so many of the themes of the book perfectly. I would amplify that I absolutely do not intend for this to be the definitive history of the Sakai project from 2003-2007. Others have completely valid perspectives and I wish others would write their own (perhaps contradictory) views of the events and I would love to be able to let folks assemble he “real” history from all those perspectives. You are also right in that my primary motivation is not simply to “stick it to the man” – the thing I fight for is for the creative types and management types to function as peers rather than the typical structure where management is “above” the creative types. I am fighting for the freedom of the creative types to take part in the decision making.

IMS Basic LTI @ Blackboard DevCon 2011

During my talk at the Blackboard DevCon, I was explaining why the development of standards seems quite dull – but is essential. I likened it to building a sewer system in a new subdivision long before any homes are built and long before any people live in the subdivision. And once the people live there, all the fine workmanship in building the sewer is deeply underground and never seen again (hopefully).

Here was my quote:

“If the toilet does not flush, no one will live in that house. That is why I am so excited about plumbing.”

Here are the slides for the talk:

Here is a video of the Demo/HACK of Blackboard as a Basic LTI Provider:

John Fontaine did most of the work of the demo by hacking up a Basic LTI Provider Building block roughly modeled on the ProviderServlet in Sakai that makes Sakai a Provider. I contributed by checking code into his building block that broke it and triggering John to fix it.

Here is that code on :

I must repeat that this is *not* a product direction – it was just a fun five-hour hackathon result.

Learning Tools Interoperability v1.1 Public Draft Released

It is like my Christmas present came early this year!

After a successful IMS quarterly meeting in Commerce, Texas in the second week of November where we demonstrated prototype interoperable implementations of LTI v1.1 with Moodle 2.2, Sakai 2.9 and SPV Software’s Building Block and PowerLink, the spec passed the threshold test for going to Public Draft.

The primary new feature for LTI v1.1 is the ability to send grades back from an external tool to an LMS.

In the IMS process, when a specification reaches Public Draft it is very mature and nearly complete and folks should review it quickly to see if there are any issues because it is very likely to be final in the next 30-60 days.

Documentation: You may download the public draft at:

Public Discussion Forum:

Open Source Implementation Code:

IMS Members–Only Benefits

Testing: Only Members may review and begin to practice for the LTI v1.1 Conformance Certification at:

Feedback and Support: Only Members receive personalized support. Please post any comments/questions in the CC/LTI Alliance at:

Note: I am compensated for my work in IMS as a consultant and work extensively on IMS LTI.