On Fri, 21 Dec 2001, Paolo Alexis Falcone wrote: > [EMAIL PROTECTED] wrote: > > >CS11 courses in UP Diliman will now start with Java and will be encouraged > >to use Linux instead of WinXP or Win2K. CS12, however, will be in Java and > >C. Why C? Well, using Java exclusively removes the experiences of debugging > >pointers and our CS32 (data structures) requires that the student knows how > >to implement lists, stack, etc. using pointers. > > Question (I've already finished CS32, anyway): it bothers me, but why use > pointers and C in CS32 ? I know it's the most efficient way hardware-wise, but > would an OOPL be more adept for such? Java gives a good opportunity to remove > one's self from bothering about the constraints of hardware and instead > concentrate on building the data structure, but with the trade-off of not > being so hardware efficient. C++ is somehow hardware efficient (as it is > a superset of C) and strives to avoid too much pointer manipulation but >unfortunately has a not-so-mature ABI. C is procedural as opposed to OOP, > and each use of a similar ADT would require another replication of the ADT, > as opposed to making instantiations of an ADT object using constructors, > Forgive me for sounding so paradoxical as I'm also minding that each school of > solution has its own tradeoff, but I've not been so sold off as to why C as > opposed to an OOPL that either eliminates the hardware constraints or does not, > (can't forget that I did also the MP's in CS32 using C and C++ as well...). Or > maybe it's because it's the most mature of all the languages presented?
As a computer scientist, you should be able to implement the data structures in any given language, even as low level as you can go. After all, they are abstractions. Insulating yourself from the hard task of implementation only removes the experience of working out the data structures. Java's strength becomes its weakness when used to -teach- or -learn- data structures. In the same manner that we like having access to the source so we know the insides of a program, implementing data structures using C is learning what's inside the "black box" of the abstractions that we use and practically take little notice of. Using C is perhaps the lowest level one can go in order to keep the comprehension of the data structure abstractions intact. Assembly language can also be used, but oftentimes it becomes a hindrance in teaching data structures because you have to deal with assembly language nits first. Consider what you could do if all you know in order to cook a meal was to open the prepared package, dump the contents into a bowl, add hot boiling water, stir, leave standing for three (3) minutes, then serve? Compare this with knowing all the different ingredients that you have at your disposal in the kitchen, available for purchase at the market, and a gazillion different recipes. After you've done things the hard way, the facility and ease of using the newer languages becomes more appreciated. Of course, there's still the advantage of knowing how the abstractions can be used in different scenarios. The whole point of such courses is to acquaint the young computer scientist with the toolset of the discipline. How can one say that one has chosen something when he only knows of one and no alternatives? -- ___ Eric Pareja ([EMAIL PROTECTED]) | Information Management Service [IMS] \@/ Network and Systems Administrator | University of the Philippines Manila v "Even the smallest person can change the course of the future." -Tolkien _ Philippine Linux Users Group. Web site and archives at http://plug.linux.org.ph To leave: send "unsubscribe" in the body to [EMAIL PROTECTED] To subscribe to the Linux Newbies' List: send "subscribe" in the body to [EMAIL PROTECTED]
