Thursday, October 13, 2011

CS & IT Academia: Use Stanford Engineering Everywhere to Teach Programming

Stanford Engineering Everywhere (SEE) seems to be a very interesting experiment in Internet Based CS teaching.

It is currently offering 12 of Stanford's engineering courses free to students, educators (and professionals) anywhere & everywhere. And its site states: "A Creative Commons license allows for free and open use, reuse, adaptation and redistribution of Stanford Engineering Everywhere material.": http://see.stanford.edu/

One of the courses it offers is, "Introduction to Computer Science | Programming Methodology". It provides Lectures (videos & transcripts), Syllabus, Handouts, Assignments, Exams and Software (Downloads)!! The course uses Java as the programming language. That is a pretty complete Free Internet Based Course from one of the top CS educational institutions in the world! What it may lack is a certification that one has passed the course and associated grading. Here's the course home page: http://see.stanford.edu/see/courseInfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111

The above course would be relevant for IT Academia as well. The course home page states, "This course is the largest of the introductory programming courses and is one of the largest courses at Stanford." and "The course is explicitly designed to appeal to humanists and social scientists as well as hard-core techies. In fact, most Programming Methodology graduates end up majoring outside of the School of Engineering." So this seems to be aimed at anybody in any science, arts, commerce or engineering stream, who is interested in programming. The prerequisite mentioned is important to note: "The course requires no previous background in programming, but does require considerable dedication and hard work.". There is no easy way to learn programming (for most mortals); you have to sweat it out.

Another course offered is "Introduction to Computer Science | Programming Abstractions" which has a pre-requisite of "Solid performance in Programming Methodology and readiness to move on to advanced programming topics". This course teaches OOP, stacks, queues, sets, recursion, linked lists, trees, graphs, and introduces time & space complexity analysis. And, it is done in C++. It also has Lectures, Syllabus, Handouts, Assignments & Exams. Here is the course link: http://see.stanford.edu/see/courseinfo.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e

Yet another introductory CS course is, "Introduction to Computer Science | Programming Paradigms" which covers advanced memory management features of C & C++, concurrent programming using C & C++, functional paradigm (using LISP), and also has a brief survey of other modern languages like Python, Objective C & C#. The prerequisite is rather elaborate - to me it seems that a person who has "solidly performed" in the Programming Methodology and Programming Abstractions courses will fit the prerequisites. Here is the course link: http://see.stanford.edu/see/courseinfo.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee

These three are the Introduction to CS courses offered at SEE, currently. Nine other courses in areas of Artificial Intelligence, Linear Systems & Optimization and a misc category (iPhone App. prog., Massively parallel processors programming) are also offered. Here are the courses on offer: http://see.stanford.edu/see/courses.aspx

For teaching CS programming, the Introduction to CS courses mentioned above can be a fantastic boon to AICTE/UGC governed university CS departments. They can base their introductory programming courses on the above and can even advertise that these courses are based on world-famous Stanford University CS dept. courses. As educators are free to adapt and redistribute the material (for non-commercial use) CS department teachers can tweak the material as per their needs. Ideally, of course, they should offer their tweaked material back to the Internet community under an appropriate Creative Commons license.

The challenges may be that the teachers are not well versed in programming to understand these Stanford courses. I mean, the teachers will need to understand it to be able to help students with their doubts. If that is the case, AICTE/UGC CS/IT policy makers should create policies encouraging software industry experts knowledgeable in these areas to step in as teachers for these courses. And AICTE/UGC CS/IT policies should reward teachers who master such programming knowledge as against rewarding only those teachers who publish research papers.

The other challenge may be lack of time for students to finish all the assignments and perform well at the exams. If so, then the cause may be that the CS curriculum is skewed towards theory with little importance being given to practical work. A solution will be to remove some theory courses so that students have enough time to complete the Stanford CS programming courses. If they are not willing to do that then students will continue to suffer with an overload of theory knowledge but weak programming skills.

MIT's Open Courseware has 2000 courses!! Its CS & EE dept. courses available for everybody seems to be in the range of a hundred! See: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/. But its programming courses seem to aimed at elite students. It seems they, like the elite IITs in India, treat programming in a generic way not focusing on any particular programming language. Here are the lecture titles for its "Introduction to Computer Science & Programming" course: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/video-lectures/. As a kind-of special case they have what seems to be short-term programming courses like this one on C++: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-096-introduction-to-c-january-iap-2011/

NPTEL in India has free courses in CSE (Computer Science & Engineering) from IITs mainly, here: http://nptel.iitm.ac.in/courses.php?disciplineId=106. I feel it has the same elitist approach that MIT's Open Courseware has. The "Introduction to Problem Solving & Programming" course(s) do not seem to be based on a particular programming language.

I think IITs & MIT can afford to have the elitist approach. But most CS departments in AICTE/UGC governed universities/colleges in India simply cannot take such an elitist approach. For them the Stanford Engineering Everywhere courses seem to be a fantastic boon. I know I am repeating it, but I think it is worth repeating :).

2 comments: