Mails to my mentee #1-3

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.joelonsoftware.com I agree with everything he’s written. 
this entry is relevant to the stuff I’ve been saying about how I interview: http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
http://paulgraham.com/articles.html In particular, he has good thoughts on starting your own thing (not that I’d know. I’ve always worked for Intel)
http://www.eevblog.com I like the way he expects and appreciates excellence. you can learn a lot about designing stuff.
http://www.theamphour.com/ The guy from eevblog does a podcast with someone else interviewing people doing cool stuff.
https://www.youtube.com/user/w2aew It’s EE stuff but he teaches really well, I think. Can help with 6.002 an 6.003
https://www.youtube.com/user/jeriellsworth I believe she never went to college.
SimonK and timecop are just hackers doing quadcopter type stuff. They were asked to design some stuff:

Leave a Reply

Your email address will not be published. Required fields are marked *