School of Information
University of Michigan
this page maintained by: Professor Mark W. Newman (programming requirement coordinator)
I haven't taken any courses, but I taught myself Perl/Python/Ruby/PHP/Java/C++/Fortran/Haskell/etc. and wrote code as part of my job for 2/8/20 years. Can I get a waiver?
No. You need to pass the programming exam. In fact, the programming exam exists because of you.
Are there other programming classes I can take around campus to satisfy the programming requirement?
Yes and no. Most other basic programming courses around campus are undergraduate courses. They can be used to satisfy the programming requirement but the credits won't count towards your MSI degree. It's also possible to take programming classes elsewhere (e.g., Washtenaw Community College) to satisfy the requirements. If you decide to take a non-SI programming course during your time here you may want to check with Prof. Newman to make sure the course will count before putting in the effort.
Of course, programming-oriented graduate courses in other departments could count towards your SI programming requirement, but since most of those have undergraduate prerequisites you would need to have already taken some programming courses to get into them, in which case you could use your transcripts to obtain an SI waiver. Many students take technical courses in other departments as cognates, but they typically do not need these to satisfy the programming requirement.
I have a transcript showing I've taken 2 semesters of programming (or 1 semester for SoCo and IAR students), what do I do?
Prof. Newman needs to review your transcript and, if appropriate, course description or syllabus. Transcript-based waivers are only given during the first week of each semester and during advising weeks. Please do not request a waiver during other time periods. Transcript review can happen by email (preferred) or in person.
By email (preferred): scan transcript(s) and supporting materials to PDF and email to Prof. Newman during the designated time periods along with a message indicating your specialization and the fact that you are requesting a waiver. The email subject must include the words "programming waiver" and must be received during one of the designated time window. The email body must contain the following: your name as it appears in U-M records, your U-M ID, the course number(s), name(s), and grade(s) received (translated into A-F if at all possible). This will make it easier for me to find the relevant courses in your transcript. If these guidelines aren't followed I can't promise the request won't be lost or somehow garbled.
In person: first ask yourself "Why can't I do this by email?" If there's a good reason, set up a time with Prof. Newman and bring printouts of transcript(s), supporting materials, and the appropriate TAP sheet(s). If your transcript is official, the TAP sheet can be signed on the spot. If it's unofficial, Prof. Newman will retain a copy of your transcript and ask Student Services to verify the information on the official transcript before the waiver will become official. Please DO NOT show up at Prof. Newman's office unannounced. He's quite friendly, actually, but he does try to maintain some control over his schedule.
In either case, Prof. Newman will ask Student Services to double check that the information on which the waiver is based corresponds to the information on your official transcript before the waiver approval will be final.
I have a transcript showing 1 semester of programming but I'm an HCI student who needs two. What do I do?
You can get 3 credits waived based on 1 semester of prior coursework. You'll still have to take the other 3 credits.
Is there a minimum grade I need to have gotten in my previous coursework in order to satisfy the programming requirement?
Yes. You need to have gotten a B- or better.
My previous institution was on quarters rather than semesters. Does this matter?
No. We'll accept a quarter-long course as if it were a semester-long course.
How does it work?
You will be given a set of programming problems by email. You will have one week to complete the problems and submit your solutions, though we expect it will only take 5-10 hours of work for someone who actually does know how to program. You can use reference materials (e.g., books, websites, etc.) to figure out how to solve the problems but you MAY NOT receive help directly from another person.
After you have submitted your solutions, you must set up a meeting with a professor who will be designated based on your programming language of choice. The meeting must be held within a week after completing the exam and will last 30 minutes. During this meeting, the professor will ask you a number of questions about your code to make sure you understand your own code and have mastered basic programming concepts.
What programming language(s) can I use?
You can submit your answers to the programming problems in any of the following languages: Java, C#, Visual Basic, C, C++, PHP, or Perl. Requests for other languages will be handled on a case-by-case basis.
What "basic programming concepts" will I need to know in order to pass the exam?
Appropriate use of functions/subroutines, appropriate use of variable scope (local/global), appropriate use of simple data structures (arrays, lists, hashtables, etc.), file I/O, basic assessment of runtime efficiency (e.g., how many times will this code access each element of this array?). In addition, in order to pass the oral part of the exam, you will be asked how you would change the code to solve a slightly different version of the problem(s) and be expected to describe (not necessarily implement) the changes on the spot.
How do I register for the exam?
Send an email to Prof. Newman by the end of Fall semester indicating your intent to sit for the exam and what programming language you plan to use. The subject line of the email must contain the phrase "programming exam."
When will the exam be given?
Roughly during the second week of Winter semester. Exact times and dates TBD.