on learning computer programming

Comments on CSE142 at the UW

But graphics don’t need to be used in a low-level computer science class. We’re supposed to be learning programming fundamentals, not how to use a particular graphics widget library. The equivalent class at Berkeley is taught in Lisp, and from what I can tell focuses way more on building understanding of programming principles and less on “how to program in language X”. I don’t really want to take a java programming class, or a C programming class, or an Ada programming class. Individual languages are just syntax, and I can pick that up as I go along. But understanding of how to think about programming is language-independent. Or it should be, anyway.

The assignments which require that you make a simple animation or reproduce an image given to you by the instructor seem to be exercising your ability to use the graphics toolkit more than anything else. That bugs me. I’m not particularly looking forward to this class. Bah.

I took CSE142 last year at the UW and one of things they emphasized was that you would often be called upon to work with someone else’s code, be it a widget toolkit or a set of functions or classes.

UW has a graphics library just for these assignments (in the olde worlde languages of C and C++). But they aren’t brought in until the 4th and 5th projects (in a 5 project course).

Those assignments (in C) gave you the opportunity to work with multi-dimensional arrays, event handling, as well as basic logical design.

Where I found 143, the C++ section, to be toughest was the lack of emphasis on idiom and design patterns, the stuff that isn’t syntax or “features” of a given language: how to test for valid input on streams, error handling, etc. To complicate matters, we were learning object-oriented design and C++ at the same time (no prior experience required) yet we had no language/syntax specific textbook (relying on the slides the instructor used in his consulting business) and nor any example code (his code examples all failed to compile as ANSI compliant code which doesn’t exactly instill confidence: hey, it worked in Visual Studio 97: that’s good enough).

I think it’s more important students get a solid understanding of design and idiom, regardless of language — as RJL20 says, it’s just syntax. Ideally, you could use any language . . . . as long as the specification is met, who cares?