Last year, I volunteered with the mentoring program run by MIT’s office of minority engineering. I was connected with a sophomore studying computer science.
It was actually my second year with the program, but the first go around went nowhere. Last year, I was determined to take the initiative to make it better by sending regular mails on some topic I thought would be useful to him.
This is the first couple of those:
When I do interviews I always ask the same two questions.
1 write a function that reverses a linked list in place. You should use only a constant amount of extra memory
2 write a function that computes x to the y power. Where y is an into.
That’s it. I’ve only had one person breeze through them. The majority probably only do one.
The second one was taught in 6.001. 6.01?
A friend of mine just switched from Intel to Google. He told me this book is great
Googling, it appears to be available in PDF. Not sure if that’s pirated. Haven’t read it myself
Have a good week
Here’s the second:
When we talked before, I mentioned (I think) that in classes like 6.005 (6.170 in my day), source control is mentioned but not stressed. I feel it’s a critical part of practical programming. To that end, I recommend that you try to do some basic GIT operations on some files. The dotfiles in your unix account would be a good start.
git add .emacs
git add .cshrc
and so on.
I also recommend these readings:
the first couple chapters of this book: http://git-scm.com/book/en/Getting-Started
To augment that:
and if all that isn’t enough, I suggest you become comfortable with the diff and patch commands. They have existed since the beginning of unix time (as in when I was a little kid and before) but I only learned to use them maybe 5 years ago. I wish I hadn’t waited that long.
As it happens, many MIT classes expect students to submit problem sets/projects via a GIT push.
And a third: