How To Teach Computer Science - The MIT Way!

Published on: 2007-1-13

Home | Archive

How To Teach Computer Science - The MIT Way!


If you want to build a ship, don't drum up people to collect wood and don't assign them tasks and work, but rather teach them to long for the endless immensity of the sea. If you are a student at MIT, your first step into the world of CS/Electrical engineering would be via this amazing course which integrates programming (using Python), basic electrical engineering, robotics and control system theory - all in one paper! This course replaces (not completely) perhaps the most famous introductory course in CS ever designed, the legendary SICP. Read more about this syllabus change here. Compare this with the way students are introduced to CS and programming in our country - I had to read an `introductory' CS book for +2 students in order to `teach' a cousin of mine - it's perhaps one of the dumbest books I have ever read - if you still like CS and programming after `studying' that book, then you really have a bright future! Page after page, the book simply tries to cram in some horrible C++ syntax without ever telling you how the stuff is going to be useful. Same is the case with our engineering syllabus where students are `taught' C programming as their introduction to CS. The point I wish to convey is this - we try our best to make our students hate programming and CS - and then lament the fact that we do not have enough people to contribute code to the free software world. We do have tens of thousands of people writing code for our Wipro's and Infy's - these people code only because they get paid to do it. But if we really want good free software written in our country, we have to build a generation of programmers who are excited by what they do - who, to quote Antoine de Saint-Exupery once again, long for the endless immensity of the sea. Can we do something to change the situation? As a beginning, what we need is a really, really exciting introductory CS course where students are made to view programming as not just manipulating bits and bytes but as something which reaches out to the real, physical world and controls the way it works. Imagine the excitement a student feels when the first line of code he writes lights up an LED or moves a simple robotic vehicle .... It's difficult for us to reach out to the same heights as a MIT or a Stanford - but we do have the resources to do something similar. We have a programming language which is easy to teach - Python. We have an amazing project which tries to integrate computers with Science and Engineering, the Phoenix project. It's not too difficult to create a simple robotic vehicle which responds to commands from the PC delivered as RF signals. I already have a few students working on Phoenix, and I have got a few involved in building the robot. The major hurdle is in writing some course material which integrates all these - I will try my hand at this. The goal is to have something ready for school students by April so that we can conduct some classes during the summer vacation.

Jain Basil Aliyas

Tue Jun 17 18:44:54 2008

I am a CS student of govt. Engineering college, thrissur. I am very much interested in developing and contributing some projects to the FOSS community. From your above article, i feel that sir, you can guide me to achieve my aim. Also, me, with my two other friends, is planning to help those who wish to switch to GNU/Linux..

Pramode C.E

Wed Jun 18 05:51:48 2008

Jain, great to see that you are interested in GNU/Linux and Free Software! Do come and visit me some time and we can discuss things ....


Fri Jun 27 12:39:55 2008

Sir, sorry that i am late to give a message to you.Thank you for your great help me... I had applied for the summer of code this year and i am sorry that i was not selected... That was in the guidence of mobin chaettan....he is the one who told me about you...will meet you soon... Now i am in the midst of my university exams...


Mon Aug 11 12:48:26 2008

You said it right - Our B Tech CS syllabus is totally out-dated and useless. They will not change it. Useless University!


Sat Aug 30 01:07:42 2008

sir, I think you mean this course and I'm glad to see this blog actually coz I was searching for courses taught in MIT for computer science students to study it by my self but I really get confused ... what after this course to study ( by my self) and how could a student not from the US find a good plan to study with what if I wanted to study the MIT material by my self ? where can I get the list of courses and related books and the order in which I have to study it with ? may be I can buy those books and start doing so .


Sun Jun 28 22:04:28 2009

Hello... nice post over here! I started a program known as V-codes and in it I teach hacking (which to me is not "cracking"/thievery). I hope you guys can gain something from what I post over there... where there's password access required, it is: pythonhack or pythonhacks; either of the two will do. The site is Feel free to get in touch with me if you want further explanations ( I model most of my writings on two famous courses that have origins in Scheme/DrScheme: MIT's SICP and Rice's HTDP... They are done in the pythonite way :) Happy hacking!


Thu Dec 11 09:34:59 2008

i want to know how to teach kids in the lower and upper grade computer science


Wed Jun 17 20:33:58 2009

Sir,I m a student of IIT Delhi doing my B.Tech in Computer Science and Engineering(just finished first year).I want to study course material from MIT opencourseware bt i dont actually how to start and from which topic I should start?Can u please guide my how to utilize my vacations in s ffruitful way so that I generate a lot of interests in Computers.Please reply immediately


Wed Oct 22 14:20:45 2008

Great Blog!!! GNU/Linux is the best way to learn and begin lo love programming. Go ahead and long for the endless immensity of the sea.


Tue Sep 30 13:26:18 2008

Believe it or not this was the exact topic i was lamenting about a few weeks back . The line about "students taught to hate code" is highly apt. When i returned back to my UV, being a open source hacker myself i cud tell people what they really lack and how well they cud enjoy wht they hate. Nice blog. Great work..!!!!