Josh Dybnis on 13 Sep 2003 19:10:55 -0000


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [ALACPP] Advice for a teacher, please


> Having begun learning  C++ 8 years ago, and then Java 4 years ago
> when I went back to complete my BS, I found Java to be the superior 
> instructional language for introductory programming. The syntax is 
> nearly identical , you can introduce concepts of OOD, use of
> libraries, etc. in a more streamlined fashion than leaping straight 
> into C++. Although I did not learn the languages in this order, I 
> imagine that someone with a decent grounding in Java would have no 
> difficulty expanding their scope into the greater complexities and 
> resources in C++. In fact, I believe that is the ultimate destiny of 
> Java, to be the introductory OO instructional language of choice 
> until the programming environment changes drastically again.

I agree that Java is a better introductory programming environment than
C++. 

> I would want to give them as much C as they would need to make the
> most out of C++, but it does not strike me that it needs exhaustive 
> study. Again, I learned C++ without any C, so my perspective may be a

> little skewed. In my mind, Those who wish to emphasize the fact that 
> when you program "x" in C++, you are really doing "y" and "z" in C 
> are forgetting, IMO, the fact that you're REALLY doing "n", "o", "p" 
> and "q" in Assembly and Machine. I just don't feel the "C++ lives on 
> top of C" aspect needs that much emphasis, but, not being grounded in

> C without the ++, I'm perfectly willing to concede that I may be 
> completely full of it on this point.

No your right. "C++ lives on top of C" is a fiction. Only the very
first C++ compilers compiled C++ down to C. If your goal is to teach
C++, doing it via C isn't necessary. C only has the benefit of
containing some of the same concepts in a simpler context. Ask yourself
what concepts from C++ can I teach in C? These would be things like,
variables, functions, stack, etc. Now the question is, are these the
things that you would want to teach before introducing objects and
other C++ only concepts. I say, only stay with C as long as it serves
you pedagogically. When you want to introduce a concept that isn't in
C, don't hesitate to switch to C++. And if the first thing you want to
introduce is objects, don't even do C at all.

There is a secondary issue. That is, it is useful to understand a
higher level construct as something built up from a lower level. You
could go to ridiculous lengths to teach them what is "really going on."
Why stop a C when you can do Assembly? Why stop at Assembly when you
can do computer architecture? Why stop at computer architecture when
you can do digital logic? Why stop at digital logic when you can do
semiconductor physics? But that would be missing the point. To
understand that a higher level of abstraction can be built on top of a
lower level of abstraction, only takes understanding any 2 of the many
levels between the hardware and the visible software, and then making a
connection between them.

-Josh Dybnis
_______________________________________________
alacpp mailing list
alacpp@xxxxxxxxxxx
http://lists.ellipsis.cx/mailman/listinfo/alacpp