Massachusetts Institute of Technology
Dept. of Electrical Engineering and Computer Science
Spring Semester, 2008

6.01: Introduction to EECS 1
Required Programming Self-Diagnostic

Students entering 6.01 have varying degrees of prior experience with computer programming, ranging from none at all to very substantial. The subject makes steadily more use of programming over the term, both as a tool and as a way to express and explore important ideas. Students who have never programmed before should expect to work extra hard during the first few weeks of the term to develop the required degree of competence in programming; well help you with this adjustment.

We will start the semester working intensively to have you be able to write simple programs for lab exercises and homework assignments. Those with some prior programming experience will find this easier. We'll be using the Python programming language, but prior experience with any programming language will help ease your entry into 6.01.

Here are some guidelines in thinking about preparing for 6.01:

Whichever of these groups you fall into, we've provided a self-diagnostic programming test for you to do on your own. The purpose of the test is to give you an idea of the kind of comfort with programming that we'd you to get to very quickly in 6.01. If you do fine on this test, you should have no difficulty with the programming aspects of 6.01 on start-up. Your performance on the test will help you assess your level of programming experience, and also guide us in helping you get started in the course.

Anyone planning to enroll in 6.01 for the spring must take this test and hand it in sometime between December 1 and Spring Registration Day. There are questions to answer even if you have no previous programming experience.

Print out your answers hand them in at the EECS Undergraduate Office (38-476) sometime between Dec. 1 and Spring Registration Day. Actually print out your answers and hand them in. Do not email them to us.

If you do not hand in the test by Reg Day (for example, if you decide to enroll in 6.01 only after Reg Day) then please come see us in person after the semester starts.

The test consists of short programming problems that you should do in any language you find convenient. Whichever language you pick, please actually write the programs and run and debug them. Please also work on these problems alone. The purpose of the diagnostic is to gauge your ability, not the ability of a team. For the same reason, even though we aren't keeping these problems secret, it would be pointless to "cheat", and it would be counterproductive for you to enroll in 6.01 without providing accurate information on your level of programming preparation.

 

View test questions

 

Test results and getting background

There's no "passing" or "failing" this test. The purpose of the test is for you to assess your own background, although we'll be happy to discuss your performance with you. It's OK if you find some of these problems challenging, but they do illustrate the kind of programs we'll be asking you to write for homework and in lab.

Python

As mentioned above, we're not expecting previous knowledge of Python for 6.01, but we are hoping for enough programming background so that you can pick things up quickly. If you do want to get some background in Python, have a look at some of the materials from 6.00 listed on the 6.00 Readings and References page.

Also, if you have programming experience but want to get some practice with Python before the semester starts, you might find it useful to work though our online Python tutor at sicp.csail.mit.edu/6.01/progSp08/. It has practice problems designed to get you up to speed in Python.