Sunday, July 22, 2012

Prof. Sebastain Thrun's experience of teaching 160,000 students AI for free!

[Extracted from June 2012 mails, so a little dated.]

In Jan. this year, Prof. Sebastain Thrun, Stanford professor (may have left Stanford by now, I think) gave a talk on his "profound" experiences with a wildly popular internet medium teaching course on AI that he taught late last year, and how he feels that it will revolutionize education. There seems to be some amount of marketing hype in the talk. Free Internet medium teaching for higher education in the form of video lectures has been around for long now (MIT OCW, Indian IITs NPTEL etc.). But perhaps the way the internet was used for this course was far more effective. It somehow managed to engage stupendous amount of students worldwide by bringing in some amount of interactivity (online quiz), forcing the students to think, and having a regular assignment/exam pattern that made students work hard if they wanted to continue with the course.

I am a great fan of on-demand learning as that is what I have followed quite successfully in my software industry career. However my knowledge is not certified. It did not matter for me while I was in the software industry as the industry has the means of assessing knowledge and capability of persons. But for Indian academia and Indian government type of organizations my international industry experience is almost non-existent! For aspiring students of today, no matter what age or what country, certified free higher education from top notch Professors like Prof. Thrun would be like manna from heaven, especially given the debt trap that many students fall into while pursuing higher education not only in developed countries but even in developing countries like India.

Prof. Thrun and other initiatives like MITx seem to be making on-demand higher education with certification of some kind a reality TODAY or in the very near future (MITx perhaps is behind Prof. Thrun's Udacity as of now). Here's the youtube video link of Prof. Thrun's Jan. 2012 DLD talk. While all of us may not agree with all of Prof. Thrun's views I feel we may benefit by knowing about his experience of moving from a Stanford classroom of 200 students to the Internet medium classroom of 160,000 students. I am awaiting permission before I put the partial transcript of the talk on this blog post. Meanwhile I am putting down some comments from me below. The comments will make sense only on reading it after viewing the video/along with viewing of the video.

-----start comments ----

Prof. Thrun got inspired by listening to a TED talk by Mr. Salman Khan of Khan Academy. At that time Prof. Thrun was a tenured Professor at Stanford University.
...
Prof. Thrun mentions that students would get a certificate at the end.
[Ravi: I think what separates Prof. Thrun's AI class from MIT OCW and IIT&IISc NPTEL is the exams and certification. Further the exams were the same that the Stanford classroom students would take! That would have made it as close to a Stanford course as possible. Perhaps that's what drew the 160,000 students. I mean, which student interested in learning software would want to miss up on attending a Stanford course for free from the convenience of an Internet connection anywhere in the world and the chance of receiving a certificate on successful completion.]
...
Thrun shares his amazement when 160,000 students sign up!
[Ravi: The POWER of the Internet is mind-boggling! I think it can be such a fantastic force for good if wielded properly.]
...
They use just a camera, a pen and a napkin for course recording!
[Ravi: As simple as that, huh! I think one just needs the will and the knowledge for Internet based offerings. The budget is not really an issue.]
...
He talks of far more engagement with students in this medium.
[Ravi: From my industry and academic teaching experience I know that interactive sessions for teaching software technology go a long way in better learning of students. So I agree with Prof. Thrun's technique here to be more effective in teaching a wide group of students. Perhaps if one is having an elite (knowledge-elite) group of listeners the one-way lecture style is better.]
...
Paying, in-class students prefer to watch him on video!
[Ravi: That is a very telling experience. Students who have paid money prefer to use his free internet teaching ways than his classroom!]
...
He shares the Afghanistan student experience.
[Ravi: Higher education for all no matter which country you come from, which economic class you come from, which religion you profess - and for free. Wow!!! I think that's the way it should be. Education should ideally be "universally" accessible. And the vastly accessible and cheap medium of the Internet world wide is a fantastic carrier. It can even penetrate a war zone!]
....
He shares the experience of a student who is a lady with a teething infant and facing significant life-problems.
[Ravi: This melts one's heart. I mean, the lady has all the odds stacked against her. But she wants to fight her way to get out of her problems. And free higher education is giving her a chance to come out of it. Even if the AI course did not land her a secure job, if it gave her a sense of accomplishment I think Prof. Thrun and team would have done a fantastic good Samaritan job here.]
...
He talks of Stanford having weeder classes but that this medium can do it differently.
[Ravi: I think we have an elite vs. commoner education system issue here. The elite education setup weeds out the guys who can't come up to the expected elite levels. Perhaps that's necessary in an elitist setup like a Stanford, an MIT or India's IITs and IISc. But "universal" education has to cater to both the elite and the commoner. A "universal" education model cannot have weeder classes as then it will fail to be "universal" and become an "elite" education model.]
...
He mentioned that students felt more connected with him even though it was an internet video medium course!
[Ravi: This feedback was quite a surprise to me initially. But as I think about it, having seen a lot of youtube and other videos over the past few years, I find that I too develop quite some intimacy with the characters in the video. I have replayed some videos which really impressed me (like this one) and so have noted so many aspects of the main speaker/characters in the video like their facial gestures, their voice inflections, their accents, their 'mistakes' etc. In a regular classroom I am a back-bencher by choice and so would never have observed the lecturer/instructor that carefully.

Of course, the human contact aspect especially the vital eye contact aspect between the instructor and the student is not available in this Internet classroom. Further, the student cannot raise his/her hand and ask a question directly to the instructor during the course of a class, at least. Asking the question in some forum may result in a 'wrong' response - the forum is not as 'authoritative' a knowledge source as Prof. Thrun.]
...
He states that Profs teach the same way as it was done a 1000 years ago.
[Ravi: I think that's quite unfair. I have used PowerPoint slides and demonstrations of programs projected on screen in my over 9 years of teaching in a deemed university in a rural area of India.]
...
He says universities are rather slow in innovation and that people should reconsider this new medium.
[Ravi: Perhaps there is some truth in this part. Having taught both in the Indian software industry and in Indian academia I must say that I feel Indian software industry teaching techniques and practices (pedagogy) for software technology topics are far superior to Indian academia. But then Indian software industry did not have to worry about funds for teaching equipment. Indian academia has to deal with massive funding issues and all streams like Literature, Commerce, Pure sciences etc. have to be treated largely on par with sunrise fields like Computer Science or Information Technology. Indian software industry teaching/training departments don't have to worry about such problems.]
...
He talks about launching Udacity on that day.
[Ravi: He was charged in this talk, no doubt. I guess it is such guys who start off revolutionary movements. But will it stand the test of time? I wonder how Udacity's other courses fared in the first half of this year. They did not seem to make the waves that Prof. Thrun's AI course did. I think then he had the Stanford brand name. Now the name is Udacity. That's very, very different for students worldwide, I guess.]
...
He talks of a course which will teach a student with zero programming background to build a Google in seven weeks!
[Ravi: Building a search engine in seven weeks with zero programming background - That itself is a real tall claim. But, Okay, I am willing to take that. Maybe they are fantastic teachers and are going to teach just the bare minimum needed to know in programming to do a small search engine.
But building a Google in seven weeks with zero programming background - this will convey a completely wrong impression to many naive students that in seven weeks they can have their own search engine which can kind-of compete with Google. I feel, this statement is way, way over the top.]
...
[Ravi: I agree with Prof. Thrun that "programming is really important around the world right now in this time and age."]
...
He ends the talk asking support for Udacity.
[Ravi: Overall, I think this is a wonderful development. I hope Udacity is able to succeed in its endeavour to provide free higher education in the software field. Its success, even if partial, may result in big guns like MIT and India's IITs to try to modify their free higher education offerings to this perhaps more effective and popular model.]

--- end comments ---

Some remarks I made in June to an academic
[slightly edited as it is not appropriate for me to share that academic's private views - I have stated and modified only my response to be readable standalone].

Students need to put in sustained effort. Perhaps by giving the "same" exams that were given to the Stanford classroom students, Prof. Thrun ensured that students put in sustained effort. One of my past students, who now works in the computer department of a super speciality hospital, took the course. He was pretty squeezed for time and found doing the assignments/exams to be quite demanding. Like the 'daughter' who dropped out of the course due to the level of Statistics (Probability, I guess) knowledge needed, my ex student had to struggle a bit on it. But as he has a Maths background he could refresh his knowledge and pick up whatever additional knowledge that was required to be able to handle the Statistics part of the AI course.

So the impression I have is that students did have to put in sustained effort even in this Internet classroom AI course.
...
I agree that there seems to be a lot of hype ("star turn") to this AI class - especially the 160,000 number and world wide spread of students. So maybe there are quite a few drawbacks with their first such effort. But I believe for this particular course, perhaps due to the marketing hype, the support forums played the role that TAs perhaps play in regular classroom courses.

Were the internet forum support groups as good as TAs? Did they even misguide which would be a terrible thing for a student? Don't know for sure. But it seems it was not as if the students did not get any support at all besides the instructors' lectures.
...
I would say face-to-face teaching is preferable instead of essential. For those guys who are not in a position to avail of such a facility, these kind of courses will be very attractive.

I think it is a fairly simple issue of supply and demand, and ever rising costs of brick-and-mortar education. Perhaps we will have both models, brick-and-mortar and Internet-based co-existing, with students making a choice based on how much money they have, the quality of education they are willing to settle with, geographical and linguistic issues etc.

Maybe it will be like Proprietary and priced software, and free and open source software. Both models co-exist today.

Some input (edited) from a friend whose kin took Prof. Thrun's AI (Free on internet) course


Agree -- from personal experience (that students had to put in sustained effort for the course). Also, there was a fair amount of gap between the lecture & the assignments/test; much akin to the class room mode. So, yes. The class was definitely not spoon-feeding. I can vouch for the fact that the class needed a fair amount of thinking & hard work -- IMO, the class is worth the effort.
...
The support fora (for student queries) were not really general fora. They are like discussion boards for the class (need to be registered for the course), much akin to the current day scenario in the US universities. Lot of times, every live class has an online discussion board where students ask questions regarding the class, lectures, assignments & tests. TAs/professors handle some questions on the fora, and some others that need more involved discussion in the class.

While the online classes from Udacity did not really address the latter part completely, the professors held virtual 'office hours' where they fielded some of the harder questions from the forums. Not exactly like in the universities, but they did make a fair attempt to bridge most gaps.
...
As I had predicted in an earlier email, Udacity now offers accreditation for a fee.

Even at a public school like --- where I work, the annual fee for foreign students is about 56,000 USD. This model of free online courses with (hopefully) a small fee is perfect for us. Who knows, in these tough economic times, perhaps some tech savvy parents might encourage their (hopefully dedicated) kids to take a stab at online education & accreditation for a much, much, much smaller fee that 56,000 USD! (even for citizens from within the state, the fee is about 30,000 USD). Perhaps the cost of community college at the quality of Stanford/Harvard/MIT. Thats a bold dream -- one that seems perfectly poised to come true very soon.
...
An aside: I suppose you are aware that not all the 160,000 students completed the (AI) course; just about 23,000 did, IIRC. But still, even that is overwhelming -- when compared to the largest classes I have heard of -- about 200 students tops.
...
I suppose you are aware that MITx is now called edX -- a joint venture with Harvard!! [Ravi: I did not know it then as I had switched off these topics for a few months. Thanks to the friend I visited the site and saw the edX announcement video.]

NYT article on Massively Open Online Courses

Read a very interesting article from the New York Times News Service, printed, a few days back, in The Hindu on Massively Open Online Courses. Some points from it, including some quoted phrase(s), are given below.
  1. It gives a current-state picture of Coursera as growing in university partners as well as courses offered with over 100 MOOC courses to be offered this fall.
  2. It states that MOOCs were unknown till last year, but now are "likely to be a game-changer, opening higher education to hundreds of millions of people."
  3. Revenue stream does not seem to be an immediate concern.
  4. A Prof. was thrilled with thousands of downloads of his videos.
  5. Online cheating and quality of peer-to-peer grading are concerns. Paid examinations conducted by global education companies may help.
  6. Concern that MOOCs may be a danger to universities - however, one Prof. thinks that MOOCs will provide diplomas (informal type of certifications) with in-class universities provide degrees.
Some additional thoughts of mine

Profs. happiness with large downloads of their teaching videos is a fascinating human aspect of online learning. I mean, the Profs. are the main guys. They need to be interested. The thrill of teaching orders of magnitude more students seems to be almost an irresistible draw. The 'altruistic' teacher sharing his knowledge with the world-community - fascinating human aspect of online learning for me.

There are some serious concerns. A high-dropout rate has been reported by some sources - but even if 10% of 160,000 passed out, it is still a great number!

Rampant cheating is reported by one source. I am not surprised by that. However I feel that once exam services like what Udacity is reported to have tied up with Pearson Education comes into play, then it may work out. Those students who cheat with assignments during the course will know that their ignorance will make them trip up on the paid exam - so they will make the effort to learn.

Eventually they will have to find a revenue stream. But I think the Internet has lots of time-proven business models where the customer gets his service for free but his usage of the service is converted to some gain. E.g. gmail usage resulting in advertising money for Google. The impression that I am getting is that venture capital is pushing this model first into respectable delivery. Once that is done, they will find a way to make money from it. Due to the scale, like for iPhone/iPod Touch apps, the price can be really affordable. I mean, I have bought iPod Touch apps. for 1$, 2$, 10$ equivalent - unthinkable for PC business model. Once the online education guys want to monetize they may make huge money from millions of Indians, Chinese etc. besides Western market students who may be very willing to shell out, say, 20$ equivalent per course/subject. 

I think there is tremendous potential for new education providers who provide a college experience but use mainly MOOC teaching and combine it with good examination services like what Pearson is supposed to have got into. Such education providers will save costs of most faculty - they may need some administrative kind of faculty - and pass on the saved cost to students. These education providers may get accredited by international academic accreditation agencies and also tie-up with professional certification organizations like the IEEE CSDP. That would make for a pretty strong software development professional education provider.

Of course, elite education may still mainly be done in residential education environments. Face to face interaction with inspired & knowledgeable faculty along with shoulder to shoulder interaction with sharp peers is usually vital for excellent learning. But for those who are not that elite or have money problems or geographical location problems, I feel MOOCs based education providers may be a very attractive education solution which could also become quite scalable.

It is less than a year since I read about Stanford's AI class offering. In such a short period of time so much change in higher education circles in the US is amazing. I would not have believed it if somebody had told me that all this is going to happen in so short a time, a year ago.

Of course, it is still a 'Wild West' area. But, IMHO, surely something substantial will emerge once things settle down - the exact "settled down" form or forms it will take are not clear now but that is not so big an issue. The main thing is the movement. I remember the free email wave when I came to know of it - hotmail was the first IFIRC - but I got onto the yahoo bandwagon. It was unbelievable then. After gmail it has become almost a part of modern life, a given.

Is MOOC going to become a given like free email?

Wall Street Journal article on "Higher Education's Online Revolution"

A few weeks ago, I read this Wall Street Journal article, "Higher Education's Online Revolution"  by Mr. John E. Chubb, Distinguished Visiting Fellow at Stanford University's Hoover institution and member of its K-12 education task force, and Mr. Terry M. Moe, Professor of political science at Stanford and a senior Fellow at Hoover. BTW both Mr. Chubb and Mr. Moe have a PhD in Political Science (wonder why Wall Street Journal does not prefix Dr. against their name?).

I feel this is a vital article on online education (dated May 30th 2012) as it appears in a leading and very respected media outlet and is written by people with very strong education/academic credentials and associated with one of the well known technology and education innovation universities in the world, Stanford University. I have given some comments of mine as points below. They may make better sense when read in conjunction with the Wall Street Journal article. A few phrases and sentences from the article are quoted below.

  1. Initially when I viewed the edX announcement video my feeling was are they overdoing it? Yes, it was Presidents of MIT and Harvard, and top-notch Profs from MIT and Harvard on the panel with, IFIRC, Anant Agarwal referring to the printing-press (and others not rebutting it). But still, "biggest change in education since the printing press"? That's saying one heck of a lot. I mean I recall OCW made quite a splash a decade ago in the newspapers (I was in industry then but still came to know of it as it got so much publicity). But it did not really 'revolutionize' higher education. But as I thought about it and factored in what I have read (and shared some over email) about Stanford's AI class I felt that new factors like high-cost of higher education, student-debt-trap, powerful collaboration tools (students among themselves, students with Prof./teacher and/or Teaching Assistants etc.), *massive* affordable Internet penetration worldwide now as against a decade ago (in Puttaparthi, AP, India - a remote/rural town - where I live, a decade ago we did not not even have broadband access to Internet!), video medium teaching techniques having evolved (Sal Khan Style Videos - ksv's are what edX's Anant Agarwal said edX was using as a model for some aspects of these teaching techniques as Khan Academy of Sal Khan has become the poster-child of this new avatar of online education), grading and assessment (OCW may not have had that) and, last but certainly not the least, certification. MIT & Harvard are talking of great educational research possibilities from the data they will be collecting on the courses they run. So, maybe this time around, this new avatar of online education may really be a 'revolutionary' game-changer of education. I learned a new term, 'flipped classroom' from the edX site - I had read about this approach but did not know the jargon of 'flipped classroom'. I think education seems to be in for quite some 'flipping' in the coming years.

  2. How will they make money to sustain themselves if they give everything away for free? That's the big question on everybody's minds, I think.

  3. "One Nobel laureate can literally teach a million students, and for a very reasonable tuition price." That's some line.

  4. I guess that's what IT did to lot of industries (substitution of technology for labor). I have seen it happen in India and the world, while in industry for nearly two decades, from a pretty 'insider' kind of view, and, later in India, while out of industry but as a user of services in a rural Indian town (banking, railway reservation, post etc.) for nearly a decade.

  5. Having been involved in academic classroom/lab. teaching for nearly a decade and fair amount of software industry classroom/lab. teaching/training before that, I find these points (about advantages of online education technology) to be very impressive advantages over traditional classroom teaching model.

  6. I think this ("elite-caliber education to the masses") is the real winner point due to which institutions like MIT, Harvard, Stanford with backing from grant-giving foundations and perhaps political support from the US government may be pushing online education even if this is going to bring lot of disruption in the education system. Orders of magnitude more students benefit - so the pain of disruption/change is worth going through, perhaps. Another point is that in the competitive, meritocratic, capitalistic USA if MIT, Harvard, Stanford, Princeton etc. don't then Udacity (for-profit company providing only online education and funded by venture capital) will. And Udacity may then get so ahead of the race that it may become the Google of higher education! Perhaps therefore MIT, Harvard, Stanford etc. don't have a choice if they want to retain their leadership in higher education. This is one of the fantastic benefits of the competitive market-driven model as against a bureaucratic government-regulated model like Indian academia which may choose or even be forced (due to community/political pressure) to just kill any disruptive change as it will be treated as a 'disturbance to existing system'.

  7. Interesting about skeptics worrying about "college experience" being destroyed by online learning and how the authors disagree with the skeptics. 'Flipped classroom' seems to be what they are talking about.

  8. "College X" mixing online courses with local Professor taught courses is a cool idea!

  9. That's a significant business number (doubling their share)! Hmmm. Seems to be making a strong case for for-profit education models "embracing technology" aggressively and profiting from it. I plan to read about the University of Phoenix foray into this area.

  10. Apple or Microsoft can do 'wonders' with such content if made available to them!!! The world has seen and experienced what they can do! Of course, the big concern will be whether they will lock away this content into some 'walled garden' that only they can profit from and, worse, only they can deliver.

  11. So humbly and clearly said ("The MITs and Harvards still don't really know what they are doing"). That's what even the edX announcement video conveys. One of the news reports talks of Anant Agarwal mentioning this area as a 'Wild West' area. I really appreciate this candour.

  12. I think the last paragraph of the article, quoted below, is worthy of real hard consideration by education policy makers, education administrators and educators. Perhaps they tell us of what is in store in this area in the coming years, worldwide - that's what the Internet is - a global phenomenon, and coming years not coming decades. "But like countless industries before it, higher education will be transformed by technology—and for the better. Elite players and upstarts, not-for-profits and for-profits, will compete for students, government funds and investment in pursuit of the future blend of service that works for their respective institutions and for the students each aims to serve."

Google's Hybrid Research + Development Model

Last Updated on July 23rd 2012

Here is a very interesting recent paper from ACM flagship, CACM, July 2012 on "Google’s Hybrid Approach to Research". The page also has an embedded video of around 5 minutes where the authors give their views - worth watching, IMHO.

Some important points of the paper from my perspective:
  1. "Research results come not only from universities, but also from companies, both large and small. The way research results are disseminated is also evolving and the peer-reviewed paper is under threat as the dominant dissemination method. Open source releases, standards specifications, data releases, and novel commercial systems that set new standards upon which others then build are increasingly important."

  2. Google does research + development together with R&D (or R&E) teams usually writing production or near-production code from day one! [Ravi: That's awesome!]

  3. "Typically, a single team iteratively explores fundamental research ideas, develops and maintains the software, and helps operate the resulting Google services— all driven by real-world experience and concrete data."

  4. Google's CS Research follows "Hybrid Research Model" where research teams are encouraged to have the right balance between research and engineering activities. The right balance can vary greatly. [Ravi: That's quite fuzzy. But the message that they give importance to engineering/software development as a vital part of its research model comes through clearly.]

  5. The paper has some information about Google's research efforts e.g. Google Translate, Google File System.

  6. Google publishes research work in academic publications "at increasing rates (from 13 papers published in 2003, to 130 in 2006, to 279 in 2011)."

  7. Google feels that academic publications are "by no means the only mechanism for knowledge dissemination: Googlers have led the creation of over 1,000 open source projects, contributed to various standards (for example, as editor of HTML5), and produced hundreds of public APIs for accessing our services."

  8. Google has "chosen to organize computer science research differently at Google by maximally connecting research and development. This yields not only innovative research results and new technologies, but also valuable new capabilities for the company."
--- end Google Hybrid Research + Development Model Paper - my perspective points ---

Some additional points regarding Google from a friend

Please note that some of the points mentioned below may have been covered in the above paper itself.
  1. Google seems to care about applied research, not pure — a Googler needs to be able to articulate why his/her research will substantially benefit millions of users.
  2. Google research is short-to-medium term: a few years at most.
  3. Google tries to break research down into a number of intermediate deliverables that each have commercial value.
  4. A research project may impact users, or it may advance theoretical knowledge, or ideally both.
  5. They don't build elaborate research prototypes. Focus is on real systems with real data and production-quality code. So research is often a component of a production-oriented larger project rather than being a separate research project in itself.
Necessary components of the Google model:
  1. Smart engineers
  2. Ability for individuals, or entire teams, to transition to or from the research organization
  3. Distributed computing infrastructure that lets a small team use tens of thousands of servers, which enables large-scale experiments
  4. A billion users
  5. Lots of money
The friend reiterated that publishing (academic) papers is only one way to distribute knowledge.

Indian CS Academic Research vs. Google Hybrid CS Research

I (Ravi) find Google's hybrid approach to be very interesting as it is in very great contrast to what I have seen in Indian academic CS research. Very often, the craze is to produce a 'paper' and the 'research' stops there - I have not come across many instances of research efforts from Indian CS or IT academia which went beyond 'paper' to get translated into semi-real-life stuff which can then be handed over to interested software companies for real-life implementation. Maybe I am not that well informed. If Indian CS academia does have a hybrid research + development model then perhaps such models should be given publicity. Anyway I got put off Indian academic CS research due to this 'paper' publication limited goal mind-set - I took a decision to steer away from such 'paper' production oriented research.

The big problem with this kind of 'paper' production research is that, most times, it is out of touch with real-world-software. So many academic conferences are around that getting such an out-of-touch-with-real-world-software paper published is no big deal. Now I am not saying that such  papers have false information in it - No, not at all. They are certainly valid within a very-small-prototype world. The question is whether the approach used in the very-small-prototype world makes sense to be considered in real-world-software. Most readers of such papers would have such questions and may just note the approach used in the paper. Instead, if academic CS research is able to combine research with development in some small way then academic CS papers would have a lot more value. Just imagine such academic papers having a reference to its open source software code + data download link. A reader who is interested in the approach can just download the software + data, and if he likes it, can even consider to do further research on top of this software + data.

I think Indian CS academia should carefully study Google's Hybrid Research + Engineering model and see if it can pick up certain practices of Google and adapt it for use in Indian CS academia.

Saturday, March 31, 2012

Comments on Stroustrup's paper, "Software Development for Infrastructure" in IEEE Computer, Jan. 2012

Last Updated on April 16th 2012

This post has my comments on an academic paper (article), "Software Development for Infrastructure" in IEEE Computer, Jan. 2012, by Prof. Bjarne Stroustrup, Inventor of C++, Distinguished Professor & holder of College of Engineering Chair in Computer Science at Texas A&M University, ACM fellow as well as an IEEE fellow.

The comments are provided as separate bullets. For copyright reasons I cannot use too many quotes from the paper and so have tried to provide minimal context by paraphrasing. Reading the comments without reading the paper side-by-side may make it a rather "disconnected reading experience" :).

  • This paper starts with some serious concerns about how "Our lives are directly affected by software correctness and efficiency". It argues for the urgent need for improving the reliability levels of "Infrastructure Software".

  • I entirely agree that infrastructure software has far higher correctness, reliability, efficiency and maintainability requirements that non infrastructure apps. I further agree that education curricula for infrastructure developers should be different from that of application developers. I also very much like the term infrastructure developer (development).

  • It was quite a revelation to me that Google used over 2 million MW power in 2010 ro run its servers. My God! That's a huge amount of power.

  • The fact that industrialized society worldwide is heavily dependent on systems which can hurt people physically or economically has been well expressed. It seems to be so very true and so very SCARY.

  • There is a huge amount of non infrastructure software (apps) where the tolerance for bugs is far higher. This high tolerance for bugs gives more room for creative software developers who are strong in creativity and ideas and who may not necessarily need very high levels of engineering discipline.

  • "I call software where failure can cause serious injury or serious economic disruption infrastructure software." I very much like the simplicity of this definition. The guy-on-the-street can understand this definition.

  • "One of my inspirations for quality infrastructure software is the requirement AT&T placed on switches in its telecommunication system backbone: no more than two hours of downtime in 40 years" Ravi: I am lost in ADMIRATION! Hats Off! No wonder AT&T achieved such a FANTASTIC QUALITY reputation.

  • I agree that infrastructure software developers should be very serious about reliability. But will the market economic realities accept this argument? Or do we need some regulators like banking regulators to enforce this?

  • I felt the author stretched it a little too far when he wrote that but for computerized systems, most of us (industrialized world is what he meant, I guess) would starve. To me, this is quite a statement. Is it really TRUE? Now, I have lived for nearly a decade in a very rural (outback) town but which is an international spiritual centre in India. So our small town is surrounded by pretty rustic villages. Initially I thought our setup is geared to manage life without computers or internet. But then I had a second thought :). I use internet banking to avoid spending time queuing up in the local bank. The local bank itself is HEAVILY COMPUTERISED and network dependent - I mean it uses online systems with centralized databases. The railway reservation counter is also similar. So, I guess, even in my small town a catastrophic internet/network failure will bring banking and railway reservation systems down (railway is the lifeline of lower middle class & the poor in India i.e. the vast majority). Maybe we will not starve as the villages around grow food. But we certainly will take a hit in the MATERIAL QUALITY of LIFE.
  • An update on my comments: I would like to withdraw the comment about me feeling that the author had stretched it a little too far when he wrote that but for computerized systems, most of us would starve. In a private mail exchange with one of the leading lights of the software world who seems to have deeply analyzed the extent of computerization in almost every aspect of modern life, he put out a strong case justifying the above 'starve' comment. As I am kind-of out of touch with modern heavily industrialized life I realize that I am not in a position to really comment on the 'starve' point. I think the accurate and truthful thing for me to say is that I am not knowledgeable enough about the extent of computerization in modern life to comment. Prof. Stroustrup may be right. But let me additionally add a prayer to Almighty God that we software chaps succeed in putting our "infrastructure software" house in professional engineering order so that such calamities do not happen.

  • I did not realize the relation between software efficiency and energy conservation. Fascinating point given the nearly desperate state of affairs in the energy sector hurting both developed and developing countries. And who knows how long the oil is going to last! After Fukushima, even in rural India, nobody wants a nuclear power station in their backyard (http://en.wikipedia.org/wiki/Koodankulam_Nuclear_Power_Plant).

  • As a former systems programmer (but not a computer language designer/creator) I find the suggestion of using a systematic and structured programming approach involving type-rich programming, for infrastructure code, sensible. It is more cumbersome perhaps for the programmer but pays back in terms of the type-checking and type-safety that the compiler does for him and thereby reduces bugs. I think it would be a fair decision if one imposed such type-rich programming language & programming conventions/style for infrastructure code.

  • I buy the argument of designing for compactness and predictable access patterns for infrastructure code. I don't buy it for apps. code that run on a smart phone. Yes, it will drain more power but does that get offset by the benefit it provides to the smartphone user? Perhaps it does. Perhaps one can take a proper call on it only if one knows about the extent of power hit due to a particular app. that is not designed for compactness and predictable access patterns.

  • I had not thought through or realized that class objects being allocated in dynamic memory results in an efficiency downside due to non-compact representation. But I did have the general impression that efficiency is typically better for C/C++ programs as compared to Java (or Python).

  • For me a "design error" for systems programing (e.g. an automation tool controller software) would be more in the realm of the Object Oriented Analysis & Design of the system, but also possible in the area of code, of course. Though I may refer to it (in code) more as an algorithm flaw rather than a design flaw.

  • I feel that if the program did deal heavily with heights and widths of rectangle objects it would be fine to have a Rectangle(Point(100,200), Height 100, Width 50)); constructor too with Height and Width typedef'ed to int (or unsigned int).

  • For infrastructure code, usage of static type-safety features must be mandatory as it can eliminate quite a few errors. And it is far simpler than designing for compactness and predictable access patterns.

  • I have found C++ especially with its fantastic STL to be far superior to 'C' for writing (more) efficient and robust (reliable) code. My own string 'C' functions will typically not match STL string class functions easily let alone functions of STL vector or map classes. However I have not done any comparative measures of efficiency as that was not required in my work environment. It was easy to convince a knowledgeable senior techie about it and did not need an efficiency comparison metric. I would also like to state here that when I had to teach C++, around maybe 5 to 6 years ago, I changed the course from its earlier structure to ensure that STL classes like string, vector etc. get taught well before we come to creating our own classes. I introduced one assignment where I asked the students (who had learned 'C' in an earlier course) to do a word collection building (from file) program first in 'C' and then in C++ using string and vector. This assignment very successfully drove home to the students how much more easier it was to program in C++ using string and vector and how much more reliable and efficient it was as compared to their 'C' program solution. I taught this course for around 3 years and then this same course structure is being used by the teacher who took over from me and is currently teaching it.

  • But the impression that I have is that for very heavily used code like OS Kernel code writing it in 'C' allows for easier and more visible control of overhead costs of function calls (inline does it but sometimes a programmer misses its significance). And avoids RTTI and virtual function call costs. So, even though I am not a kernel programmer or even a serious student of kernel programming, I am not surprised by Linux kernel developers choosing to stick to 'C'.

  • I fully agree that "duck typing" should be avoided in infrastructure code.

  • The obscure reporting of template errors puts off C++ students in a big way. I had to take very special care to give students the courage to not get thrown into confusion by string template compilation errors that they would see when they were writing their first C++ programs using the string (template) class. I think this may be a reason why, I would not be surprised if, even today, in many colleges and universities in India, C++ is taught with the STL part being a kind of optional add on at the end of the course. The teachers themselves may be finding templates tough to handle due to the really scarily long and completely obscure compilation error messages.

  • In my exposure to education of or selection of systems programmers I too have found that the system does not actively encourage teaching of or spotting the ability to deliver general, elegant and simple solutions.

  • I am not so sure about too many managers and too many programmers encouraging complicated solutions assumed to be efficient. At least, in my experience of the system software world (late 80's & 90s), especially where there was a system of design and code reviews, general, elegant and simple solutions were given appropriate appreciation. However, not enough was done to ensure that all or most programmers would do general, elegant and simple solutions. I mean, it was not enforced.

  • Enjoyed the Alan Perlis lollipop quote :). Ha, ha!

  • Code generation tools or systems driven by huge amount of option settings are almost magical! I had some exposure to this in a mini-project oriented course I taught nearly a year back where I got exposure to Joomla, Moodle, Al Fresco etc. The "exactly how it works" level certainly goes down. But from a "mix and match customizer" kind-of app. developer viewpoint I found it is okay. I mean, it is like how I use gmail and the Internet facility from my small rural outback town in India. Sometimes it is not accessible and I live with it. To protect myself from my gmail a/c data getting lost (due to hacking, say) I have my Outlook Express backup of mails. This works out decently. Similar is the case of my blogs (blogger & wordpress). Settings all over the place. Sometimes I can't get my blog show my posts the exact way I want it. But I live with what I can manage. And it has satisfied my needs overall, very, very well. So for the App space a Joomla type of development environment which heavily uses option settings and, more importantly, a bewildering array of components (many being user supplied), seems to be quite acceptable to its more tolerant of errors & outages user community.

  • Fully agree that for "infrastructure code" it is vital to clean up our code.

  • Absolutely agree that an education/training for applications cannot create a reliable infrastructure component developer. It can be a disaster if such inappropriately trained persons are used for infrastructure component tasks! But some persons can be very capable but "self-taught" infrastructure component developers too. Self-taught "infrastructure developer aspirants" should prove their mettle via appropriate tests. We should not exclude the self-taught community as experience has taught us that many very capable and productive "infrastructure developers" are self-taught. But, I repeat, they should prove their mettle/knowledge of infrastructure software development techniques via appropriate tests/proven credentials (e.g. software developed by them which is assessed by experts whether it proves them to be good enough infrastructure developers).

  • It is VITAL to specialize our computer science, software engineering and IT curricula. In fact, I will argue for separate curricula for "infrastructure developer" and "app. developer". There may be some limited overlap but they should be two separate curricula.

  • I am not sure about the mathematical basis of all infrastructure developers needing to be strengthened. Of course, a strong mathematical basis may be ESSENTIAL for infrastructure developers who FOCUS on efficiency. But a lot of infrastructure work could be done which is reliable as well as efficient using efficiency measuring techniques & tools which have been well defined by others (the ones who FOCUS on efficiency). I think I got by doing a lot of fairly decent systems software work without having a STRONG mathematical or statistical basis. But then I only used STL - I did not have to design an STL class like vector and prove its efficiency.

  • I agree entirely that algorithms, data structures ... must remain core subjects for infrastructure developer (systems software) education. In fact, in my self-taught journey into systems software these were the topics that I had to study rather well. Though I must also state here that I did not have to get into in-depth Design and Analysis of Algorithms as I did not have to write libraries like STL. If I had to do that I am sure I would have studied and tried to master an Aho-Ullman or similar book on Algorithms.

----------

Some frank comments from a TOP LEVEL MANAGEMENT/ADMINISTRATION view. The paper started off with a very top level view of the need to improve software infrastructure code and the dangers if we don't. Then it delved into language details - which is important, for sure. But then this is just an academic paper. Some people may read it and change somewhat; some may continue with their old ways but most "infrastructure developers" may not even know of the paper's existence.

WHAT WE NEED IS AN "INFRASTRUCTURE SOFTWARE REGULATOR". USA is THE leader in infrastructure software. Top iconic figures of US software academia and industry should suggest an infrastructure regulator organization which lays down guidelines for infrastructure software development companies, and then conducts "infrastructure quality audits" which, if passed, grants an "infrastructure quality" stamp for the software. That may not solve all problems right away but will be a great way to start doing something about bringing a mature engineering discipline to the "infrastructure software" industry similar to, say, the civil engineering industry. If such a suggestion comes from top iconic figures then people in powerful decision making bodies may sit up and take notice.

Saturday, March 24, 2012

Ethics Policy for Sharing Content of Mail Exchanges on This Blog

This blog deals with "Peaceful and Amicable Indian Computer Science (CS) & Information Technology (IT) Academic Reform Activism". It is a tightly moderated blog to ensure as high a quality of discussion & debate as I can manage and feel appropriate for this topic. I also try to ensure that the views expressed are peaceful and amicable.

As part of this activity, I have had the privilege of interacting over email, other web contact interfaces (e.g. Indian govt. grievance portal for citizens) and paper mail with some important people in international academia as well as Indian government. I also had the privilege and pleasure of extending my interaction with some friends and colleagues to this particular topic. Initially I was a little casual about sharing views that I received over email with others. Now I have learned that many people, especially, leading lights of the CS & IT fields and government officials, have a genuine concern that their comments may be taken out of context and used for purposes that they do not approve of.

So I felt it is appropriate for me to put out my policy on sharing content of email, other web contact interfaces and paper mail exchanges (referred together as mail below) on this blog.

Firstly, mail exchanges to public offices like government and editorial offices of publications/media are "public" by default unless expressly declared as "private". So I consider it fair and ethical to share such "public" information on this blog if I want to. However, I may choose to not share some or all information about my interaction, say with government and academic regulatory authorities, to ensure that such information does not get "abused" by somebody for purposes that I may not approve of. I would very much like to be a team player working, in some small way, with the government and academic regulatory authorities to help improve Indian CS & IT academics from the viewpoint of students, parents of those students, and employers. I do not have any intention of becoming a "trouble-maker" activist for the hard-pressed government and academic regulatory authorities of India who have the HUGE AND ONEROUS BURDEN of planning and implementing policies for a country of over 1 billion citizens.

I will treat mail exchanges with academics, students, industry colleagues, software users, friends etc. as "private" by default unless expressly declared as "public"/"Open". I will not share any part of the content of such "private" mail from others on this blog without prior permission/approval/OK from them. The content of my "private" mails to them is my intellectual property but, to be on the safe & amicable side, I will typically avoid putting the exact content of my private mails on this blog. Whenever needed, I may suitably edit the "private" mail content that has been composed by me and put it on this blog without having any references to the persons I sent the mail.

Monday, March 19, 2012

Comments on Software Development Career Track Paper

Last Updated On 26th January 2013

Given below are comments I received from Dr. Mark Tarver for my academic paper, "Improve the Practice of Software Development in India by Having a Software Development Career Track in Indian CS & IT Academia" whose preprint version is available on arxiv.org hosted by Cornell University, USA: Abstract; Pdf.




March 23rd, 2012
Dr. Mark Tarver's Comments on an earlier version of the paper, Abstract, PDF

Dr. Mark Tarver of lambdassociates.org, who is also a former UK CS academic, was kind enough to share his valuable comments on the above paper. He further kindly permitted me to post his comments (and my response) suitably edited for a blog post, here. As I do not have express permission to share his comments using CC-BY license, his comments are excluded from the general CC-BY license applied to this blog post/page.

Let me take this opportunity to thank Dr. Tarver for his very frank and very well expressed views in his articles on CS academia. These articles and some of Prof. Bjarne Stroustrup's articles and a few private mail exchanges that an internationally renowned software development practitioner and CS academic kindly had with me, gave me the courage to challenge Indian CS/IT academic mind-set regarding software development practice.

Of course, my views may have flaws. Prof. Stroustrup and Dr. Tarver may disagree with part or all of my views. But, in my considered opinion, the situation is so dire in Indian CS/IT academia, in general, that it has almost become dysfunctional! There may be some exceptions, of course, but, in general, in my considered opinion, CS/IT students are getting a very raw deal. CS/IT academia in other countries may also be partly dysfunctional. We urgently need discussion followed by concerted attempts of corrective action to improve life for CS/IT students & employers.

Dr. Mark Tarver (MT) wrote: I read your paper with interest; and I agree with the thrust of what you say.
Ravi S. Iyer (RI) responded: That is vital input for me. Thanks again.
MT: Two points to consider.

1. Industry is rarely innovative and trend-setting in terms of practice and computer-language development. Practices linger on in industry due to the costs of adoption long after they are left behind by best academic practice.
RI: I tend to agree with your views here, though I do not have wide spread exposure to world wide academia to comment on "best academic practice".
MT: Lisp, Prolog, ML were all developed at university. It was industry, not academia, that kept Cobol alive for a long time.
RI: Industry marches to the beat of a different drummer, the money making drummer :). I agree.
MT: Hence placing the criteria for academic promotion in the hands of commerce is likely to stultify innovation in software practice.
RI: Very interesting point. In India, software practice in academia is quite poor. While we do have an Open Source community in India, as far as I know, it is nowhere near the thriving Open Source community that say, the US, has. So, I felt that industry should get involved in the "peer review" in the initial years.

Over time, if Indian CS/IT academia itself acquires the capability to "peer review" software development contributions, then industry can be dropped from the "peer review" process. But, as of now, in India, industry is the only community, I think, that can deliver on software development "peer review" for the huge numbers of students that India has.
MT: I would say it needs to be put in the hands of the open source community.
RI: I think, this would be a wonderful option for countries like the US and UK. And, if it proves itself as a sustainable and successful process, then other countries like India can follow their lead.
MT: 2. There is a third class of teacher who is neither productive in terms of writing (commercially significant) code or in writing papers but who is simply an excellent teacher. This sort of person is totally under-served at the moment.
RI: I entirely agree. In fact, I have at first hand seen how teaching excellence is neglected. You may want to read my blog post, CS & IT Academia: Is Teaching Excellence Important?, where I conclude by writing, "I think I am an old school guy who feels that the FIRST and FOREMOST DUTY of a TEACHER is to TEACH and TEACH WELL."

Sunday, January 22, 2012

CS & IT Academia: Is Teaching Excellence Important?

Last Updated On January 24th 2012

At the outset I would like to say that I am not against CS/IT research. Without CS/IT industry & academic research, wonderful inventions of computer Operating Systems, computer Languages, Databases, the great & revolutionary force of the Internet etc. would not have happened. What I am against is teaching excellence in CS/IT academia suffering due to an unbridled enthusiasm for research.

In my considered opinion, "Teaching Excellence" seems to be not so important in Indian CS & IT academia. What really matters is "Research Excellence". The pressure to publish research papers and bag research projects of sizeable monetary value may be resulting in many teachers having no option but to dilute teaching ideals - they are also human and have to accomplish so many things in limited time. Of course, students have to be taught reasonably so that they do well at the exams but going beyond that to achieve excellence in teaching may be very challenging due to research pressure. Career advancement wise, there is no significant reward or recognition for "Teaching Excellence". "Research Excellence" gains recognition, even fame at times, and career advancement.

Why is that the case? An academic CS/IT department should focus on teaching, isn't it? Well, one look at UGC norms (http://www.ugc.ac.in/policy/revised_finalugcregulationfinal10.pdf) (I presume AICTE norms will be similar) for appointment & promotion of academics, including CS/IT academics, gives the clear answer. "Teaching excellence" is not really a promotion criteria.

  • For appointment as Assistant Professor a NET/SLET/SET qualified Masters' degree holder with 55 % marks is acceptable. But a PhD degree holder who is not NET/SLET/SET qualified can also be appointed as Assistant Professor.
  • For promotion to Associate Professor, at least 3 publications for stage 4 Associate Professor, and 5 publications for stage 5 Associate Professor are needed (PhD is mandatory for direct appointment as Associate Professor).
  • For promotion to full Professor, the norms are PhD + post-doctoral research output of high standard, patents & IPR, additional research degrees like D.Sc., D.Litt. Number of years of teaching experience also matter in the promotion to Associate Professor & Professor but it really is just the number of years.
  • How well the person taught seems to be covered under Academic Performance Indicators - Category I: Teaching, Learning and Evaluation related activities, but they are based on the teacher's self-assessment! So, I guess, it will just be a formality with all teachers scoring well in it, irrespective of the reality :).

In other words, the unfortunate situation seems to be that, from UGC/AICTE norms point of view, Teaching Quality does not matter for career advancement, so long as students perform reasonably in paper based examinations. Very shockingly, for a practice oriented field like CS/IT, Teaching Quality for the practice oriented lab. courses also do not really matter and the unfortunate reality in most CS/IT departments in the country is that the lab. courses are notorious for being graded liberally so that almost everybody scores well!

Given the UGC norms for career advancement, most Indian CS/IT academics will focus on research instead of teaching. The CS/IT academic will, of course, try to do a decent job in teaching but it does not make sense for him to waste time trying to excel at teaching. He will get far better career rewards by being an excellent researcher who is a reasonable but not excellent teacher. Yes, of course, there will be CS/IT academics who excel at both teaching and research. The cream of the CS/IT academic field excel at both research and teaching. But I think, given the workload pressure, a significant number of CS/IT teachers would find it very difficult to excel both at teaching and research. You may also want to read another post of mine, "Is a PhD in CS/IT Necessarily a Good Teacher?": http://eklavyasai.blogspot.com/2011/09/is-phd-in-csit-necessarily-good-teacher.html.

Some conscientious academics may choose to excel at teaching giving them lesser time for research and thereby not do well as a researcher. Their career growth gets stifled though they get the emotional reward of a clean conscience and earn the love and respect of students for being a good teacher.

Those teachers who choose to focus only on teaching and stay away from research will almost inevitably get into trouble with academic administrators. One cannot blame the administrators as they are bound by UGC/AICTE norms which, I guess, expect them to "encourage" research :).  They also have to deal with the general expectation the leaders in government & industry have from academia to excel in research.

Such non-research oriented teachers may even be treated as liabilities even if they are excellent teachers as they, due to their disinterest in research, may not have a PhD. It may be as if the teacher is lowering the image of the department/college/university! Such persons tend to get fed up of Indian CS/IT academia and move into CS/IT software development industry (but not industry research) where their CS/IT knowledge/expertise is given a red carpet welcome. This is a sad state of affairs! In practice oriented streams like CS & IT such attitudes hurt rather than help. Who does it hurt? The poor students who lose the opportunity to gain from an excellent teacher who is disinterested in research.

Perhaps these UGC/AICTE norms work well for areas like Physics, Maths, Mechanical Engineering, Electrical Engineering etc. But for practice oriented CS/IT field I think they are very inappropriate. UGC/AICTE should treat CS/IT separately and come up with different norms where promotion is possible for excellent CS/IT teachers who are disinterested in research. Please note that UGC has separate norms for the practice oriented disciplines of Music & Dance, Drama and Visual (Fine) Arts. The CS/IT discipline has exploded into almost all facets of life all over the world in the past two or three decades with self-taught experts like Bill Gates (Microsoft), Steve Jobs (Apple) & Mark Zuckerberg (Facebook) becoming world famous icons. These three icons are/were technologists and not researchers. The fact that such self-taught experts have risen to very high stature in CS/IT industry seems to me to be good enough reason for UGC/AICTE to treat CS/IT differently.

I need to clarify that I am not making these remarks for the benefit of myself. By God's Grace, I retired from commercial international software industry over a decade ago. God's will/destiny led me to offer free service, mainly as a "visiting faculty", to Indian CS academia for teaching lab courses and being a consultant for project work for 9 years now. Given the strong practical know-how I have from over 18 years in the international software industry and the fact that I am offering free service, I have a plethora of opportunities for service of which teaching in CS/IT academia is just one possibility.

I am making these remarks in the context of regular (paid) CS/IT academics for whom the academic job is a livelihood. Imagine a CS/IT non-PhD but, say M.C.A. (Master of Computer Applications), qualified teacher who is also NET/SLET/SET qualified and who excels as a teacher but is disinterested in research. He will be a great boon to students. But, over time, as he sees that promotions are not coming his way he will get dispirited and disinterested. Further, academia has a PhD club mentality and so he will be treated as a second-class citizen in academia. Either he will also see the "academic light" and start focusing on research relegating teaching excellence to the background OR he will quit academia.

Leaders from the Indian government and sometimes even from Indian industry talk about improving research in Indian universities. While that seems to be a very laudable goal, I think they should also talk about improving teaching standards in universities & colleges. In my opinion, a university/college is a portal first and foremost for teaching/learning (education) and then for research. But I am not really an "academic" and so maybe I am getting it wrong. I think I am an old school guy who feels that the FIRST and FOREMOST DUTY of a TEACHER is to TEACH and TEACH WELL.

Thursday, January 19, 2012

Holistically Elite CS/IT Education vs. Technically Elite CS/IT Education

Last Updated On January 21st 2012

A holistic, service to society view would favour CS/IT education which combines technical know-how with application of this technical know-how to current socially relevant problems especially rural Indian society's problems as they are the most needy section of the country. Students who are taught in this fashion will have technical know-how and also experience the joy of serving the needy through CS/IT and earning their love. Such students may, later on in life, not only flourish commercially in industry or in academia but also contribute back to society, especially its needy, through software solving its problems, thereby leading to inclusive and harmonious growth of the community at large.

Some of the points touched upon in this post are general to higher education and not specific to CS/IT. But I am qualified by industry work & teaching experience and academic lab course teaching & projects' consultant experience only in CS/IT. So I make specific suggestions mainly about the CS/IT academic stream. I would also like to state that CS/IT being an applied field may have direct service to society application possibilities as well as research possibilities. Pure science fields like Physics, Chemistry, Bio-sciences or Mathematics may contribute via fundamental research. I do not have significant knowledge about these fields to comment on them. But by no means am I implying that their fundamental research contributions are "any lesser" in service to society than applied CS/IT software development contributions or CS/IT research contributions.

For CS/IT students to develop such a country-citizen/world-citizen, broad-minded outlook some time has to be devoted to teaching them application of human values/ethical values/spiritual values to CS/IT field. Some, perhaps most, educational institutions may prefer to be secular and not get involved with spirituality/religion but will certainly want to promote moral/human/ethical values. The financial system challenges that are threatening Europe, US and the world in general has its roots in grossly unethical & immoral actions of the financial system elite. The brunt of the suffering is not borne by the financial system elite who caused the problem in the first place but by the poor commoners who were taken for a royal ride by the financial system elite. So I think that all educational institutions, whether secular only or a combination of secular+spiritual, will agree that for the betterment of the world, education in moral/human/ethical values is urgently needed, especially at higher education levels, as it is the lack of these values in the "highly educated" financial system elite which has brought the global financial system and the global community in general to such a precarious state.

But some educational institutions focus on pursuing excellence in specialized fields only and achieve fame in those specialized fields. It is these "elite" institutions that are revered by society today and almost every other educational institution tries to emulate them. I learned a new term the other day, "Ivy League Envy", from this Economist, Dec. 10th 2011, article, Schumpeter - University challenge: http://www.economist.com/node/21541398. The students from these "elite" institutions typically get the highest-paid fresher jobs in their area of specialization. Money earned by students and not their contribution to society, especially its poor, is the typical measure of success for most of the freshly passed out students and their parents. In India, for the CS/IT field, it is the IITs & now, probably, the IIITs which fall in this "elite" category.

In my view, these are "elite" from a speciality-excellence point of view only. There are other educational institutions which are "holistically elite" giving the "right", in my humble opinion :), balance of speciality-knowledge & human values knowledge.

I guess there will always be hallowed portals of "elite" education both at material/secular levels [MIT, Harvard, Oxford, IITs etc.] and at spiritual levels [Elite institutions among Christian seminaries, Muslim Madrasas, Jewish seminaries, Buddhist monasteries, Hindu monasteries etc.]

A few educational institutions go for a combination of spiritual/moral/ethical, cultural, sports & 'secular' education as they want to give both an education for life (truthful, ethical, peaceful and loving way of life - moral/ethical/spiritual life) & an education for a living (material life). These holistic educational institutions cannot aim for the same level of excellence in secular education like that of the elite secular only educational institutions. But it must be noted that they achieve excellence by holistic standards and so become a hot destination for parents & students desiring holistic education. So they are "holistically elite" as against being "secular only elite".

But some parents and students may want to avoid any value based education, especially at higher education levels like CS/IT graduate/post-graduate level. There should be NO compulsion. Such parents & students can steer clear of value-based educational institutions. Anyway, as of today, value-based higher education institutions are a very small minority.

Another vital factor is the "big paycheque" motivation for students & parents. The "holistically elite" CS/IT fresher graduate would get a decent paycheque but it would typically be significantly lesser than the paycheque of the "technically elite" CS/IT fresher graduate. So students & parents interested in a "big paycheque", also can steer clear of value-based educational institutions.

Then we have an issue of best education for intellectually-elite students versus best education for intellectually-commoner students. [Note that an intellectually-elite student may be weak in social/humanistic skills, whereas an intellectually-commoner student may be very talented in social/humanistic skills i.e. he may be a social-humanistic-nature-wise-elite student.] Some intellectually-talented educators would like to focus on creating the best education system for the intellectually-elite.

In my humble opinion, we should not suffocate the elite and force them to learn in commoner student ways. Society must allow the crème de la crème to pursue excellence in its chosen fields. We must keep alive, within bounds of reason and social acceptability/relevance, the portals, physical and digital, which inspire, ignite and elevate minds to achieve excellence. Such excellence can be in secular fields like Physics, Evolution, Computing, Medicine, Sociology, Economics and also in spiritual fields. Why limit ourselves to only Darwin, Newton, Neils Bohr, Einstein ... We should also have beacons of love, joy, peace & light like Jesus, Buddha, Mohammed, a Mahatma Gandhi, a Mother Teresa, a Pope John Paul II, a Ramana Maharishi (http://en.wikipedia.org/wiki/Ramana_Maharshi) etc.

But we should not ignore the non-elite, the 99 %, as the Occupy movement refers to itself. We need solutions to cater to their educational needs as well. That is ABSOLUTELY VITAL for social peace and harmony. The intellectually-elite can have the freedom to pursue their area of excellence only if social peace and harmony is ensured.

In conclusion, I feel that "holistically elite" CS/IT education is what society needs today far more than "technically elite" CS/IT education. The amount of money that students earn after they finish their education should not be the primary measure of success of the "holistically elite" educational system. The contribution made by students using the CS/IT skills they have gained from academia, after they finish their education, or in some rare cases, even while they are undergoing their education, to society's needs, especially the needs of society's poor, and how much love, joy & peace they bring to their individual life, their family and the community in general should be the primary measure of success of the "holistically elite" CS/IT educational system.

Wednesday, January 18, 2012

Texas A&M University's Approach to Teaching Programming in (US) CS Academia

In the paper, "Programming in an undergraduate CS curriculum" by Bjarne Stroustrup, WCCCE ’09 May 1-2, 2009, Vancouver, British Columbia, Canada: http://www2.research.att.com/~bs/software.pdf, the author makes a case for a strong "software curriculum" in undergraduate CS curriculum so that "software professionals" get produced by CS academia. The paper also presents the largely positive results from Texas A&M University (TAMU), USA adopting this strong "software curriculum". So it is not just a proposal but a "software curriculum" that is proven in practice. I have been informed that this "software curriculum" is considered a success and is being used even now at TAMU.

Prof. Bjarne Stroustrup is a world-famous Computer Science industry-and-academic-researcher, technologist and Distinguished Professor & holder of College of Engineering Chair in Computer Science at Texas A&M University. He is known throughout the software world for the creation and the development of the widely used C++ programming language. He is an ACM fellow as well as an IEEE fellow. For more details, see: http://en.wikipedia.org/wiki/Bjarne_Stroustrup, http://www2.research.att.com/~bs/.

At the outset I would like to say that such an approach may OR may not be appropriate for Indian CS / IT departments. I am simply sharing it as an outstanding programming expert's point of view and details of the experience of teaching programming in that fashion in CS academia.

The paper starts with an analysis of the problems in the way programming is taught/learned in CS academia.

Now for a quote from the paper. But first, here is the copyright notice of the paper.
"Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee.
WCCCE ’09 May 1-2, 2009, Vancouver, British Columbia, Canada. Copyright 2009 ACM ...$5.00"

Now the actual quote, "That way, you can (and often do) see students with high grades in algorithms, data structures, and software engineering hack solutions in an operating systems course with total disregard for data structures and algorithms, resulting in a poorly performing unmaintainable mess."

It then moves on to stating that "software professionals" should be produced by CS academia. This article has a focus on teaching programming while acknowledging clearly, of course, that Computer Science has many other areas to be taught as well.

The "software curriculum" part of Texas A&M University CS curriculum is then described (4 courses: Introductory programming (using C++), Data structures & algorithms, programming languages (besides C++) & a primarily project-based Design Studio course).

What should be the first programming language (Java ?) is considered. Interesting that this question haunts many CS departments :). The Introductory programming course teaches C++ based on Stroustrup's book, "Programming - Principles & Practice using C++". It is not 'C' (subset of C++) followed by C++ as is the case in many Indian CS departments, I believe. The course is explained in quite some detail.

The author frankly shares the problems with "execution" of the course (e.g. some students want 'C' part first). Grading approach and TAs handling of students is also mentioned. Comments on how Professors should teach the course is also given quite frankly.

A concluding section named Etc. has comments on some topics including approach of increasing level of professionalism rather than pandering to demands for "better trained" students (from industry), "easier and more exciting courses" (from students), "things done the way we are used to" (from teachers) ...

I think this paper is a MUST-READ for CS / IT academia programming course teachers/policy-makers/decision-makers. The reader need not agree with Stroustrup's views & approach but, IMHO, the reader will benefit by knowing how Stroustrup & team handled the task of teaching programming in a CS department.

However, there is a high degree of inertia & even resistance in Indian CS & IT academia to accept a practical "software curriculum" aimed at producing "software professionals". Prof. Stroustrup & team at Texas A&M University, USA, have to be congratulated on bringing about this change in their undergraduate CS curriculum thereby, I am quite sure, benefiting students, parents & employers. Indian CS & IT academia should carefully study this wonderful "software curriculum" and, if required, adapt it appropriately for its needs so that Indian CS & IT academia can also produce "software professionals" and make students, parents & employers happy.

Sunday, December 25, 2011

Affordable Subject-Wise Certification from Govt. Recognized Academia

Last updated on June 8th 2013

US President Obama meets US university presidents to address/discuss their challenges: http://www.economist.com/node/21541398.

The article talks of the problems of rising costs in an age of austerity, more courses & more research students than there is money for and interestingly, Ivy league envy. "Ivy League envy leads to an obsession with research.", it states. This results in professors who are focused on research and don't do their job of teaching students well enough, and even causes teaching dysfunction at lower-level universities!

I think the last problem is the case with lots of Indian universities too.

The article then goes on to giving examples where technology is helping to ease the burden.

A fascinating news item is about MIT planning to offer online subject-wise certifications leveraging its OCW but starting only in 2012 spring: http://arstechnica.com/science/news/2011/12/mit-launching-certificate-program-based-on-opencourseware-open-source-platform.ars.
MIT launches online learning initiative: http://web.mit.edu/newsoffice/2011/mitx-education-initiative-1219.html
What is MITx?: http://web.mit.edu/newsoffice/2011/mitx-faq-1219

I think affordable individual subject-wise certifications from recognized universities (academia as against non-govt-recognized private "training" institutes) done online or at physical university could be a game-changer in CS/IT education. It will be interesting to see how this pans out.

A concern raised about subject-wise certifications is that it could water down universities into training schools.

Well, what I feel is that ultimately universities should cater to what its students choose & need. And students' choice will typically be dictated by job market demand (industry jobs as well as academic jobs; programming/design jobs & research & teaching jobs) and students' interests.

If a university wants to focus on higher quality work/higher complexity work then it can clearly define itself as that kind of university. Only elite students will join it and they will typically have the capability to do higher quality work. Perhaps MIT is the example of an elite tech. university. Their courses as seen in OCW seem to reflect that.

In India, the IITs (Indian Institutes of Technology) are clearly defined as the elite tech. schools e.g. http://www.iitb.ac.in/, http://www.iitm.ac.in/. Their entrance exam (joint entrance exam for all IITs) is the toughest tech. university entrance exam in India (http://www.iitg.ac.in/jee/).

IITs don't have to worry about funding as the government provides them excellent support. Their campus is usually fabulous. The salary structure for their teachers is the best in Indian academia. The facilities are excellent. So they get the elite students.

The IIT courses reflect the elitist nature of the institution. E.g. They don't seem to teach programming languages in particular. They expect the students to pick up particular programming languages. They seem to teach only algorithms, data structures, general programming constructs - a language independent way of teaching programming. And, of course, they have courses on Artificial Intelligence, Compiler Design, Design & Analysis of Algorithms, High Performance Computer architecture etc. which their elite students can perhaps not only handle but excel at.

I feel universities should clearly identify the student population category they are aiming at. If all universities look up to elite universities like an MIT and try to emulate them with students who are not elite quality you get into a messy situation.

In my considered opinion there is nothing shameful about a university focusing on non-elite/commoner students and delivering them courses that gives them the skill set they desire so that they get the job they want. If they should not be called universities and should be called "training schools" - that is fine. But the "training school" should be government recognized and be able to offer a degree in IT or even CSE.

To my mind it is like there being nothing shameful about being an average competence General Practitioner doctor handling common diseases in comparison to a very skilled Cardiac surgeon who focuses only on open heart surgery. Both serve very important needs of society.

In India there is a thriving "private" but expensive IT training school industry which seems to be doing a far better job of teaching programming skills than government recognised CS/IT academia. But the "private" IT training schools cannot award a graduate degree; they can award only diploma certificates. So many well-to-do students in urban areas of India do a non-tech. graduate degree from govt. recognized academia like B.Sc. (Chemistry) [Pure science as against tech.; cheaper to do and easier to pass as exam standards are "watered down" in most Indian "science" universities] and simultaneously attend the "private" IT training school to learn programming and get a well paid IT job placement.

Here is the most famous IT training school of India, NIIT: http://www.niit.com/Pages/DefaultINDIA.aspx. The home page runs an Ad. which says, "College made me a graduate; NIIT's diploma programmes made me job-ready"! That says something about the Indian government agency(ies) regulated education system.

In other words the market has stepped in to fill the job-oriented skill set teaching void left by government recognized academia. But the poor students have to do both (and parents have to pay for both) - govt. recognized academia for the govt. recognized graduate degree and the private training school for the job-oriented skill set. This seems to me to be a terrible failure of the Indian education system for commoner students. And this has been the situation for decades!

And since the private IT training school industry gets ZERO government funding it is too expensive for the urban poor and the rural poor & middle class students. All the taxpayer money for education goes to government recognized academia which fails to deliver on job-oriented skill set for commoner students.

A Tough View of UK CS Academia

Last minor update on 22nd Feb. 2020

A friend passed on "Hackers and Fighters" by Dr Mark Tarver: http://www.lambdassociates.org/blog/hackers.htm.

Dr. Tarver compares the "street programmer"/"street fighter" with the "CS grad."/"school-trained martial artist". I think it is an interesting comparison.

He also talks about how difficult it is to do something innovative in CS academia. He said it took eight years for a CS dept. where he was working to decide to move from Pascal to C++!

He also states that for a fast moving area like computing the university model is too slow to adapt. I entirely agree with his view.

He mentions that the only way of handling the heavy teaching load of five to six courses a year at junior positions in academia is to go for canned courses. I think he is spot on here. At junior positions the teacher himself/herself is struggling to master his/her courses and when he/she is burdened with five to six courses, and fair bit of research work too sometimes, what can the teacher do but go the easy route of canned courses for most if not all the courses he/she has to teach.

He wryly notes that the professor will comprehensively beat the street programmer in the "black arts of churning out papers". I think he is spot on here too :).

Then an acquaintance sent another article by the same author, "Why I am Not a Professor OR The Decline and Fall of the British University". This is a vitriolic article about British universities in general and CS departments of those universities in particular just before 2000. It is brutal in its criticism but offers no thoughts of solutions. Read it only if you can stomach very harsh criticism: http://www.lambdassociates.org/blog/decline.htm.

I studied the article carefully. My God! What a terrible indictment of the British CS educational system (prior to year 2000)! [I don't mean to imply that India is better off - it may be worse off in the "commoner" universities.] The language used is stinging and sarcastic to the hilt.

The analysis of the need for universities in Europe from the eleventh or twelfth centuries onwards and how free online "information" & general literacy is challenging the position of universities is interesting. So too is the analysis of the impact of British government policies on education post World War II.

I get the feeling that a lot of what the author has penned must be true. But I wonder whether somebody from the British educational system rebutted his article. Maybe this author was with a not-so-great university ["but the procession of students who walked into my office and said 'Dr Tarver, I need to do a final year project but I can't do any programming'... well, they are more than I can remember or even want to remember."]. I find it hard to believe that most British university CS departments would have many students saying, "I need to do a final year project but I can't do any programming". The students, of course, may not be great programmers - but student himself/herself confessing to "can't do any programming" & looking for an easy way out with the project work - that seems hard to believe. Maybe that happens with lots of "commoner" Indian university CS/IT departments too - I just don't know.

The author solved his problem by getting out of the system. I think many of the problems he points out, namely, egalitarianism requirements of politicians who are voicing the needs of the people at large, I guess, not being able to fail many students even if they deserved to be failed as otherwise the course may become unpopular and so be shut down, watering down of courses, farcical (maybe even fixed) teaching audits, the black arts of churning out papers (counterfeit academic Mozarts), academic profession becoming unattractive, foreign immigrant academics with poor language skills ... may be true even today, at least, to some extent of CS education worldwide. But I feel that today the academic system is being challenged by commoner students (the 99 %) (Occupy movement tried to make a point at Harvard), politicians and people at large, and so I am quite hopeful of some meaningful reform happening. The Internet can be a great force which may allow for elite, commoner ... various types of courses to co-exist & flourish based on student choice and industry demand.

On deeper thought, I felt that Dr. Tarver's article is perhaps too negative, paints a depressing picture & offers no thoughts of solutions. A reader may feel that the system is beyond any possibility of redemption. Which I don't think is accurate. What we need to do is to raise awareness of the problems and work amicably and peacefully with politicians, bureaucrats, academics, industry, students & parents to improve the situation.

Tuesday, November 8, 2011

CS & IT Academia: Should 'Customize' Instead of 'Build' be Taught?

Last Updated On December 28th 2011

This post captures a slightly edited email exchange with a friend on the "CS & IT Academia: Inform Students About Software Contribution Record of Faculty" post.

Friend wrote: I am not sure if I understood the problem definition and therefore the solution. But let me put it in my words and if it is not what you meant, then please ignore my email ...

This is what I think is the problem that you are describing:
1) Teachers in universities don't have enough expertise in software development and thus can't teach students well enough.
Eklavya Sai responded: They can't teach software development well enough but can teach theory & research oriented stuff in their area of expertise very well.
Friend wrote:
2) Students can't appreciate and learn software development skills no matter which university they approach.
Eklavya Sai responded: That's the case with most universities in India though not all.
Friend wrote:
3) Employers don't get to recruit skilled people.
Eklavya Sai responded: The employers that are looking for software development soldiers don't get to recruit the right people and so have to educate them by having in-house fresher training.
Friend wrote:
4) Result - we are all a bunch of losers!
Eklavya Sai responded: Students (& their parents) who want to learn software development skills by doing a CS / IT degree are losers. Students (& their parents) who want to become theory and research Generals are winners. Employers don't invest time & money like students and parents, and so they cannot complain about being losers. Though overall as a country we lose out as the educational system is a pipeline which feeds skilled manpower into the industrial economy.
Friend wrote: As I said before, if what I am saying does not correctly capture what you said, please ignore my email. But if it does say what you are thinking, then I have a slightly different take on software development needs of today's world - at least the business world as most of the software development that employers do is focused on achieving competitive advantage.

Let me tell you a very short true story. Recently a retailer was facing tough competition in the market (and continues to do so today). It was closing store after store. One particular store was in the red for a few months and was facing the possibility of being shut down. But just ten days before the month ended, they went live with a supply chain initiative that enabled the store to fulfill parcel shipments and came out a winner. Essentially, it got business that it could not have got otherwise. Such was the power of the supply chain improvement.

Now that supply chain improvement initiative involved customizing a packaged solution and not building a software from scratch. The reason why I am emphasizing this is because the people who were required to or asked to "build" the software were mainly required to be able to "configure" the software rather than build it. Along the way they were required to be able to "figure" out what custom code needs to be built and build just that little code here and little code there. Employers prefer solutions to be built to deploy today rather than designed with zero defect for tomorrow.
Eklavya Sai responded: I think this has been the reality of the business app. world for at least a decade. Maybe it has become more prevalent now.
Academia has Component Based Development courses which I feel should handle such 'customize' solutions rather than reinvent the wheel, and live with 'acceptable quality' today rather than 'perfect quality' tomorrow. I recently taught an Open Source Web Development course using Joomla, Moodle, Al Fresco, MySQL, Apache ... and a software developed by a major IT firm of India using these tools.
Most students loved the power of component based development which allows you to produce solutions at unbelievable speed.
So what I am saying is that 'customize' as against 'build from scratch' can also be taught in a university.
Friend wrote: One can question such practices but businesses are run for customers of today who can walk out on you if they find solutions elsewhere even if those solutions have defects. Loss of customer can imply going out of business to employers. A software consultant who ignores such business priorities will get thrown out of business. So essentially, employers are looking for software consultants who understand their pains and provide pills for now rather than later.
Eklavya Sai responded: And students have to be trained with skill sets that match the needs of employers. As most students desire such job-oriented skill sets.
Friend wrote: Universities can teach algorithms and languages and even business processes. But real-world exposure has no substitute.
Eklavya Sai responded: Sure, real-world exposure has no substitute. But universities can prepare students for the real-world to the extent they can.
Friend wrote: One may be very good in algorithms but have no desire to understand the business priorities and you might find school drop-outs who have an unusually good understanding of the market as a whole and can drive the solution the market needs.
Eklavya Sai responded: Sure. But why can't a university IT graduate also excel at understanding business priorities? Of course he can. He simply has to be taught properly in university.
Friend wrote: My point is that businesses demand clear deliverables from software companies. Software companies in turn rationalize this into the 80-20 rule and hire people who can deliver the goods (an acceptable quality software). ...
...
Friend wrote: We might then think that perhaps it is not the business world that students should concentrate on. But is it [business world] really that bad? Innovations normally lead commercialization. But once you champion the commerce part of it, it fuels further innovation. Logistics at one time was thought to be an integral part of the army. But now it has taken a whole new dimension and not only new business models have come up but also it is being outsourced from army to businesses. If space exploration is to be left only to academic oriented organizations, innovative and cheaper solutions for space flight would not be available as some of the businesses are trying to achieve. If CROs had not rolled up their sleeves, drug discovery would continue to be indefinitely slow to achieve by universities and hospitals.
Eklavya Sai responded: I feel IT students can certainly concentrate on the "business world" software solutions.
...

Friend wrote: Have fun with what you do!
Eklavya Sai responded: What I am learning is that even "peaceful & amicable activism" can generate a lot of unwanted heat. I mean there is always resistance to change - and I am questioning the big Profs - they don't like such questions. So this is not really a 'fun' thing :(. But I feel I must do it as I have seen so many students & parents suffer from this mostly dysfunctional CS & IT academic teaching system in India.