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” – www.py4inf.com 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
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

Conclusion

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.