In one of my postings, I emphasized the role of Learn by Doing in the process of learning computer programming (). Some teachers agreed that learn by doing is good, but it would be ineffective at colleges in India.
Let us take the context to be the teaching and learning of computer programming using the programming language C as the first course at college. Barring a few notable exceptions in some of the top rung institutions, most of the others place an undue emphasis on teaching the syntax of the programming language. The time allocated to the teaching and learning of problem solving is almost negligible. Do ask the students who come out of these institutions to confirm this.
I think that this misplaced emphasis on the syntax of programming language happens due to the structuring of the course to have a “theory” classes and “lab” classes. Apparently, the teachers teach students the “theory” part of computer programming. And what would that mean? The teachers say that they teach “concepts”. That seems reasonable since one perhaps learns the conceptual and other foundations in the “theory” part of the course and practice learn by doing in the “lab” sessions. What happens in reality is that a disproportionate time is spent on teaching the syntax and “features” of the programming language in one part, while students so write, compile and execute programs in the other part.
So why am I cribbing if students are indeed learning by doing in the lab part? The intentions may be honorable, but the ways these “lab” sessions are executed are a disgrace. Students are provided with a problem description. They are supposed to solve the problem, write the program, and get it executed. This is where certain disgraceful behavior happens. Several students have told me that during these sessions, they are also given the source program that solves the problem. All they need to do is to type the source program, get it compiled, see that it works as intended with a few test cases that are also given, and show it to the person-in-charge to be awarded the marks for that session.
Students end up getting somewhere in the range [45,50] marks with the maximum marks being 50. Of course, the scores in the “theory” part of the exams show a wide dispersion. The bottom line is that a large number of students cannot program at all at the end of the course, whatever the marks they obtained in the “lab” part.
So, for learn by doing to be effective at college, there ought to be a few changes. Teaching, learning and assessments must be aligned. The current practice of conducting the “lab” component is pathetic, and must be overhauled completely. The so-called “theory” component must be seriously examined to take away the emphasis on programming language syntax. Unless the colleges and the universities that deal with them adopt an “outcome based education” where competencies are clearly documented, and the assessment systems aligned to those competencies, the learn by doing methodology may be ineffective.
For students, my advice is that adopt learn by doing approach notwithstanding how your university and college react to outcome based education. After all, you have to exhibit these competencies in your job, and not your teachers, colleges or the university!