Why do I even ask this question? I ask this because over ten years ago, when I was working at BITS, Pilani there were intense discussions on what one should be doing in the two programming courses that were common and compulsory for all students. The discussions dealt with quite a few thoughts, but I give below a significant few:
- Since there are two courses, should one not cover the procedural programming paradigm in one course and the object oriented programming paradigm in the other course?
- If both the paradigms were covered, should one use the C programming language in one course, and either Java or C++ in the other?
- Why can’t one use just one programming language like Java or C++ to deal with both the programming paradigms?
I remember that during these discussions one of my colleagues and friends made a passionate case for using Java as the vehicle for teaching both the procedural and object oriented programming paradigms. Most people involved in these discussions were of the opinion that C++ cannot be used for both paradigms since they felt that C++ is unsuitable for enabling students to learn object orientation sensibly. The fence sitters, typically, would support maintaining status quo, which is to just deal with the procedural programming paradigm only. You ask them whether learning object oriented programming will not be beneficial to all students. They would invariably reply “Well, definitely the Computer Science and IT students would benefit, but this is not required for other disciplines”.
When a university offers two computer programming courses for all disciplines, there is room for discussions and adoption of innovative ideas. Most universities in India just offer one computer programming course that is common for all disciplines. Computer Science and IT students, perhaps, do a few more. So the choice of the programming language used in this course is a crucial decision.
We may debate these points on an academic, philosophical and pedagogical level. I think that there is at least one compelling reason to use the C programming language in one course. I must now really disappoint you! I do not have any solid academic, philosophical, or pedagogical reason to assert this.
A large proportion of all graduates from engineering colleges aspire for employment in the IT sector as software developers. A large proportion of these companies that recruit entry level programmers administer a test that is primarily based on programming using the language C. If these students had not done programming using C, there is no way they would be in the process of being considered for employment in these companies. Surely there are some companies that do not have this type of a test, but they are probably very few. So not learning programming using C restricts one’s capability to seek employment in companies dramatically. That is one compelling reason to use the C programming language in one course!
Now don’t think that I am a great fan of using C as the language of choice for the first time programmer. But under the circumstances, it seems a pragmatic choice. There are problems with this choice, but I guess I will deal with that some other time!