The Time Has Come, the Walrus Said, to Talk of Many Things...
  Home  |  Archives  |  Music  |  Software  |  About  |  Contact
 | Community | 

 -273
 Ouranophobe
 Rubidium
 Mount Athos
 Minutia Press
 | NFL Picks | 

 Lucas: 165-91
 Chris: 160-96
 Sports Guy: 118-129-9
syndicate this page
 April 23, 2006 - 08:46 PM | chris
What I Learned In School

As I approach 2 years in the working world, I've been looking back at what I learned in school that has been essential in the working world and what I could have done without.

I spent much of my college career complaining about simultaneously not learning enough of C++ or design patterns, since both were being taught in the same class. I haven't had much occasion to use any C++ knowledge, although it's still something that I think would be useful to know. Design patterns are another story altogether.

Patterns are something that no sophomore CS major could ever appreciate. Most people get into CS because, like me, they wrote their own simple computer games when they were younger. Even though they're starting to teach programming in high school now, most students haven't written a sizable number of small programs or been a part of a large team working on one huge application. These are the two situations where design patterns become not just meaningless book filler by the Gang of Four but natural side-effects of programming. For all the patterns I didn't learn in school, I've used one without even knowing it at work.

This is something that's almost impossible to convey to second-year college students, as its one of those things that can only be truly appreciated with experience. Now if only I had paid more attention, I might even remember what the Factory Method pattern is for...



Comments

We end up using a lot of Microsoft's Patterns and Practices here, which I think are Microsofts recommended ways of doing things in .Net. A lot of the stuff is things that I'm sure were covered when I was in school and I didn't pay enough attention to, though.

I was shocked, though, when last week I was told I didn't understand recursion and that the recursive factorial method I wrote out "might be" recursive. Apparently the only functions that can be recursive are ones with loops inside of them...

Posted by: Nathan at April 24, 2006 5:01 PM

I've had this same problem from the teaching side. Patterns are something you need once you're dealing with repeated concepts in relatively large software efforts. In school, we move from one thing to another without much repeating and we do relatively small software efforts.

There's the idea of Literate Programming, which I think captures why patterns are useful but doesn't rely on them per se. If we taught literate programming, then when patterns become useful and, as you point out, natural, they won't seem so strange.

To accomplish literate programming, we'd have to look at what students write, and not just count whether a piece of code works or not. I've been a big fan of this in our department over the years but I haven't gotten much traction. It would take a lot more time on the professors' side, and it's not something that most TAs or grad students can do well yet.

I'm going to post on this shortly....I'm glad you wrote about this Chris.

Posted by: rkc at April 28, 2006 7:02 AM