Sarath Lakshman wrote:
Hello Friends,
I am here to inform you about an issue in 11th Class. Now I am studying in 11th class - Computer Science. Our text book is following the proprietary C++ compiler (Turbo C++ Compiler) and there is nothing about Software freedom and importance of free software.
(This response is under the assumption you are talking about the CBSE. And it's technically more of a response to many bits of this thread rather than just this one e-mail. I can see how this will be construed as rude, but it felt awkward the other way too -- tiny snippets littering the thread.)
I am curious, what is the name of this text book? I was part of the first batch that was introduced to C++ (instead of Pascal?) as the programming language of choice for 11/12th standard. As far as I remember, there was no text book as such (at that time) from the NCERT, and schools ended up doing whatever was convenient. My school was (as I guess most were) a DOS/Netware shop, and they encouraged the use of Robert Lafore's Object-Oriented Programming in C++. This book, if I recall correctly, dealt with things from the context of Turbo C++, which is what they naturally ended up installing.
I also assumed the choice had a lot to do with this development environment having a similar IDE to TurboPascal(?) which is what they used before to be the driving force behind this decision. I am sure teachers experience inertia just as much as the next person.
But I remember (I don't remember the names of the schools themselves) people from other schools using UNIX (which I am sure was GNU/Linux to the untrained eye), and gcc. But just as someone said people saying 'Alt-F9' for what goes on(?) during compilation, there were equally nonsensical statements regarding 'needing to struggle' with UNIX (by which they meant figuring out vi) as a prerequisite for learning to program. Some people perpetually fail to see the difference between concepts and a practicalities that go along with a particular implementation
Not to stir up controversy, but I quite disagree with the popular opinion here that C++ is a horrible language for introductory computer science. "Struggling with syntax" is a trivial, non-objective issue, and can be raised about any programming environment. I might just as well as say, for example, that "keeping track of all those parentheses is hard" when it comes to lambda calculus. I think the bigger problem is the clear lack of distinction between concepts or algorithms (or pseudo code) and actual implementation, even amongst teachers (at least the ones who taught me).
Clearly define a conceptual solution to a problem (which is what the syllabus should probably really be about), and most somewhat-well-designed languages will allow for relatively painless implementation. I don't, philosophically or implementation-difficulty-wise, see any difference between a Python (for example) program and a modern C++ program (properly utilizing STL and what not). Really, you can get just as much done in as few lines and it's just as easy to read. You can just as easily abstract system specific details and focus on the conceptual problem solution.
But as a bonus, if you want, you also get to get your hands dirty with really low level system specific stuff, which most of the other alternatives proposed clearly dissuade. I, and many people I know, sometimes like to tinker with things beyond these sand boxed environments.
Harish