Quote:
|
Originally Posted by Epy Say I want to see f(x) = x^x in the domain [0, 1]. In MATLAB, it'd simply be fplot('x^x',[0 1]). Yay, you got your graph, and that's all fine and dandy. To do the same in C, you'd have to set up a for loop to plot all the points, get something like libSDL to create a window and actually show the points, make sure you display the part of the graph where the line is present, etc. It'd be overkill, yes, but you'd learn a lot in the process. |
It is true that you learn a lot in the process. It can also be true that after you have everything setup fine and dandy in MATLAB, you can proceed to learn a lot about what you actually intended to learn (mathematics?), while some other fellow is still trying to get things set up. In other words, your example tries to prove your point by selecting a particular aspect to measure learning, i.e., how much you learn of C and C libraries. Change the this and one can argue that after going through all that, you learn nothing of value.
Quote:
|
Originally Posted by Epy This is how it is at school, you memorize how to do something for one class and then totally forget it, which is what I think is likely to happen with students that see how easy and complete Python is. They don't give a damn about what's actually going on behind the curtain. |
On one hand, I think that your characterisation has some truth to it: students can be like that - they just want the qualifications at graduation. On the other hand, I think that your characterisation is unfair: some students are bound to wonder how things are done under the hood, and well designed pedagogy can cater to that. Others may be interested in seeing how they can take things to another level, e.g., to write their own libraries, and eventually they will find out that they need to know how the building blocks are made in order to build more complex systems better. After all, it is possible for students to learn assembly language and machine organisation, then forget it all because thet regarded it as just a chore that they had to get through at some stage.
Quote:
|
Originally Posted by Epy yes, it's fine as a teaching tool, but when it's so incredibly easy and there are so many libraries to do everything you need, it's just so clear to me that anyone introduced to programming is going to see Python, then see everything else and choose Python. |
Quote:
|
It just seems to me that Python takes too much thinking and knowledge out of the equation.
|
I suggest that you read
Programming in an undergraduate CS curriculum (PDF). One of the points that Stroustrup makes in that article is the idea of placing the emphasis on programming needs and principles rather than on language features. Consequently, instead of teaching the C part of C++ first, he teaches the use of the C++ standard library early, thus enabling students to take advantage of the abstraction to develop problem solving skills instead of worrying about the nitty gritty of good container handling. Later, students are taught how to do without these standard containers, if they need to.