On Fri, 2004-08-06 at 19:01, Ross Werner wrote:
> On Fri, 6 Aug 2004, Erin Sharmahd wrote (on behalf of anonymous):
> > Chris is probably at a pretty high level in his CS classes, and I have
> > only completed 235.  But, we started using more templates in that
> > class than had been used previously, and I know that I don't feel like
> > I learned as much as I could have, if I had been forced to do it from
> > scratch.
> 
> The email from anonymous is basically exactly what I wanted to say. I did 
> want to make another distinction, however:
> 
> Well-contained and well-documented libraries and tools vs. templates.
> 
> Imagine you're writing a prolog interpreter. (We did this in 470 this 
> term.) You've written parsers out the wazoo before, and the project isn't 
> about learning how to write a parser, it's about logic and prolog. A 
> well-documented library or class would make a perfect way to relieve the 
> student of having to write a parser for the Nth time, and concentrate on 
> the task at hand. It also nicely mirrors the real world, where you use 
> classes and libraries for repetitive tasks that you would otherwise have 
> to implement often.
> 
> However, having the prolog interpreter half written so that it "almost" 
> works, leaving you, the CS student, to flesh out the unimplemented 
> functions can leave the student, at the end of the exercise, ignorant of 
> the "big picture" and what exactly he or she just programmed is put 
> together. It can create frustrations when trying to work with the code 
> which was already given to you, since you de facto don't understand it 
> very well at all. It can lead to the useless exercise of just trying 
> random things (with pushes and "hints" from the TAs) until you get the 
> output that matches the TA's or the professor's. (I've heard that in fact 
> the compilers course can be quite like this.) You're not understanding the 
> problem nor understanding how to solve it. You are, in fact, IM[NS]HO, 
> being more of a "code monkey" than you would have been implementing the 
> whole thing from scratch.
> 
> Just my .02USD,

Just got back from a vacation and I had a thought about this that I
figured I'd share.

This sort of filling-in-the-blanks-of-a-template coding that you
describe sounds a lot like most of the coding I've done here at work. 
Whether it's an old shell script, some verilog chip design, or some
custom tool that we use that was written in C years ago, I'm always
filling in the blanks, not quite seeing the big picture (until I read
the code over and over and over), and not able to write in the language
of my choosing.  I have written a few programs from scratch where I
could pretty much choose my own language, but mostly I've done bug fixes
and feature adds to existing programs.  You know, starting with some
code that "almost" works and fleshing out the unimplemented functions. 
Maybe the kinds of skills you learn with these sorts of labs you
describe aren't all for nought.

Bryan



____________________
BYU Unix Users Group 
http://uug.byu.edu/ 
___________________________________________________________________
List Info: http://uug.byu.edu/cgi-bin/mailman/listinfo/uug-list

Reply via email to