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.

No comments:

Post a Comment