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:
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.
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.
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.