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 http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X
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 init
git add .emacs
git add .cshrc
git commit
and so on.
I also recommend these readings:
http://longair.net/blog/2009/04/16/git-fetch-and-merge/
http://stackoverflow.com/questions/21437260/what-does-it-mean-to-fetch-from-a-clone-that-is-not-a-remote
the first couple chapters of this book: http://git-scm.com/book/en/Getting-Started
To augment that:
http://www.joelonsoftware.com/articles/fog0000000043.html
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:
As you make your way through MIT towards a career, I think it’s important to think about how you want to impact the world.
here are some of the people that I admire. Most of them are not programmers, but they have carved out a niche with an approach that can be learned from.
http://www.eevblog.com I like the way he expects and appreciates excellence. you can learn a lot about designing stuff. SimonK and timecop are just hackers doing quadcopter type stuff. They were asked to design some stuff: