I'm a rising MIT sophomore with no prior programming experience but interested in majoring in course 6. (I had thought I would major in a different subject ever since before high school, which is why I didn't take 6.00/6.01 my freshman year, but now I'm not so sure about said major.)
Is it possible to take 6.00 sophomore fall, 6.01 sophomore spring, lots of other course 6 classes junior/senior year, and graduate in 4 years?
Definitely yes. I did the same thing because I was in the same boat. I thought I was going to be a chemist. *shakes head at freshman self* Anyway, I haven't checked whether it's officially possible, but I'd guess it is. It's definitely unofficially possible. The most important thing to note is that 6.01 isn't really a prerequisite for anything (at least not any of the 6-3 requirements). What you really need to know is basic programming (usually in Python). I had absolutely no programming experience before sophomore year. I took 6.00 and 6.042 sophomore fall and 6.01, 6.02, and 6.006 sophomore spring. I was completely fine. In my opinion, 6.00 also prepared me just as well as 6.01 for 6.004, 6.005, and 6.034 which I took junior fall. Taking 6.00 sophomore fall doesn't need to put you any farther behind than someone who takes 6.01 sophomore fall.
If you're seriously considering course 6 and want to take more than one course 6 class, I would definitely advise taking 6.042 (if you're 6-3 that is). The only other required course you can take now that doesn't require 6.00/6.01 is 6.004, but I think programming experience was helpful there. 6.042 doesn't require any programming and Professor Leighton is teaching it this fall (he only teaches once every two years). He's absolutely incredible. He's easily one of the best professors I've had at MIT and that's saying a lot considering the generally high quality professors in the EECS department.
If you haven't programmed before, I would definitely try to space out the requirements as much as possible. Certain classes will be made a bit more unpleasant because you won't have the exposure some of the other students will have had (looking at you 6.005). Assignments may take longer because you have to look things up that are second nature to some of your classmates. You'll also want the freedom to take whatever upper division electives appeal to you and some of them are extremely time consuming. I just finished 6.170 which I never would have been able to fit in my schedule if I hadn't just ignored official prerequisites. I'd just have too many classes left to fit in a time consuming (at least for me) class like that one. Many of the electives also have foundation and header subjects as prerequisites. You'll want to at least get the foundation subjects out of the way as soon as possible, both to figure out what you're interested in and to have an adequate foundation to explore your area of interest.
If you have other questions, feel free to hit me up, particularly if you're thinking about 6-3. Good luck!
Thanks for the info! That's pretty reassuring. I'm planning on taking 6.00 and one of 6.042/6.041/18.440 in the fall, and I'm glad to hear it's possible to take 6.01 concurrently with other 6-classes in the spring. So my main question now is what the difference between 6-1, 6-2, and 6-3 is, since the official titles themselves don't mean that much to me. I'm better at math than other sciences (and better at music/art than other things) -- does that make a difference in terms of which 6-something (and its corresponding career field) I might be more proficient in?
Sorry I'm so slow. My internship just started. Anyway.......
In general terms, 6-1 is more hardware oriented and 6-3 is more software oriented. 6-1s deal with circuits, signals, E&M, that sort of stuff. 6-3s deal more with coding, artificial intelligence, algorithms, etc. But of course, this isn't necessarily what every person will end up doing, it's just what the majors tend to focus on.
Generally, (and I'm going with what I've observed coupled with overarching stereotypes here, so your mileage may vary) mathy types tend to lean 6-3. A good way to judge whether you'd be interested in checking out 6-1/6-2 is your reaction to 8.02. If you loved it, I'd look into it. If you absolutely detested it, then 6-1 might not be for you. Either way, 6.00 and 6.01 will also help you figure some of that out. 6.01 is a pretty eclectic mix of 6-1 and 6-3 topics, so after you take it, just reflect on what you liked best and that will go a long way toward helping you figure it out. 6.00 on the other hand is almost entirely 6-3 type material, so how much you like that class can also help a great deal.
If I had to guess based on what you've told me, I'd guess between 6-1 and 6-3, you'll lean 6-3, both because you like math over physics and because you've got an artsy side. There's a lot of awesome work you can do with human-computer interaction that requires an artistic eye. (On that note, I highly recommend Professor Miller's class on user interfaces, 6.813.) But I don't really know you, so always be sure to keep an open mind (and it sounds like you are!) Who knows what you'll end up liking?
iceui2: I find your comment a little condescending, though hopefully it wasn't meant that way. There's nothing wrong with taking 6.00. Personally, I found it to be a great foundation for my future programming classes. Each term a number of people try 6.01 without having a good foundation and end up dropping out because the pace is too fast for the unprepared. On the other hand, there's nothing wrong with self-studying and going straight into 6.01, but for various reasons (time consuming summer jobs, different learning styles, etc.) that might not be feasible for everyone.
mcr11 or anyone else wondering the same: If you feel you would be better served by 6.00, take 6.00. Or if you find yourself forced to take 6.00 after trying 6.01, take it. It will in no way be detrimental to your progress in the department.
Tapper7 - thanks for your feedback on the different 6's. Hopefully, in a few months I'll have some idea of what type of course 6 I'm most competent/interested in. I looked into 6.00 a few weeks ago and noticed students spent an average of 11 hours/week on the class, so I'm sure it'll be good practice. I don't have much time this summer to study, although I really should motivate myself to go on OCW and watch at least the first few lectures.
To any MITer reading: If you don't mind sharing, how did you figure out exactly what you wanted to major in and do as a career? I'd appreciate any input or experiences, as I am still very much unsure of what I want to do.
@Tapper7: I'm not trying to be condescending. I'm just trying to say that 6.01 is not as hard as some people make it seem. You don't need to take an intro to an intro to EECS class. If OP is from a state school, this might be okay. But since we're at MIT... I'm hoping that I won't get flamed for encouraging people to take the challenge and go straight into 6.01. I won't deny that you'll have a easier time with 6.01 after taking 6.00, but there's a reason that the EECS department did not require 6.00 as a prerequisite for 6.01. You don't need it to get an A.
Learning programming for a MIT student should be easy. It's very mathematical and logical. So I don't see a problem with going straight to 6.01. Plus it's during the fall and a lot of freshmen take it on pass/no record.
Why go to MIT if you're not going to challenge yourself? OP is already a year behind and if he/she thinks 6.01 is too hard then he/she will no doubt have bigger problems later in the major. But IMO if you put the time into all the labs... you'll be fine in 6.01. Knowing a lot of programming going in does not give you much of an advantage in terms of your final grade. It's pretty correlated to time spent doing the labs and actually learning the material. You will find that very little of the class is devoted to just programming (unlike 6.00).
Characterizing 6.00 as an "intro to an intro class" is just incorrect. 6.00 has a much wider breadth and depth than 6.01 does. In fact, 6.01 doesn't really teach programing at all, expecting you to already know the basics. As such, you'll miss out on lots of useful little things (quick examples, tons more: overloading, file.io, hashing), a rigorous introduction to some complex ideas you'll see later like algorithms, as well as some non-comp sci statistical applications that aren't in the rest of the curriculum. It actually has some very nifty problem sets, like creating a RSS feed, plotting a Roomba path (similar to the 6.01 robot model minus the stochasticity). There's actually very little overlap with 6.01 minus the first two weeks of 6.01, and it's a very worthwhile class to take if you've never had any exposure to programming before.
Back to the OP's question -- Course 6 is definitely doable in 3 years; I even know of people doing it in 2 years (although they're on the crazy side).
Absolutely 6.00 is hardy an intro to an intro class, nor is is fair to say "You are an MIT student, you're smart enough not [to need it]" To the best of my knowledge, the overwhelming majority of students in 6.00 are MIT students. The course has been written with that in mind. The MIT students in that class are not the stupid ones, not that you find many stupid ones on the MIT campus.