ThoughtStorms Wiki

Studying ComputerScience at college

Quora Answer : How much of what you learned in school do you use in industry?

May 2, 2014

I was a lousy student. It's taken me over 20 years since college to rediscover a bunch of ideas that were on offer but I was too stupid / lazy / distracted to get.

Things that stuck and I did use : relational database modelling and normalization (SQL was by far the most immediately practical thing I picked up in college was using within a year of leaving). What OO was, and the fact that Smalltalk was cool. The fact that Hypercard-like GUI design environments were cool. A small amount of how computer graphics worked. A small amount of logic. A small amount of graph-theory. A small bit about networking. (Only actually used when I try to explain to someone how the internet works.)

Things that kind of stuck but I didn't use. A rough idea of how a microprocessor works. How to design digital logic circuits. Small amount of VLSI design. That Occam was cool. A bunch of formalizations that describe user-interface analysis and design, but which seem utterly unrelated to real Usability / UX work.

Things I learned that were counterproductive. : that C is horribly complicated and too difficult to use. That "software engineering" was a fascist plot to turn free-spirited programmers into mindless cogs in a giant machine. (Admittedly this was my interpretation of the SE class; and it is kind of true.) That formal proofs and specifications were part of the aforementioned plot.

Things that were on offer but I totally failed to pick up on. How to write Lisp. (I never understood what the point was.) How to write Prolog. (I thought Prolog was cool, but just couldn't do it.) What the hell the point of ML was and why anyone would be even the slightest bit interested. What parsing was and how to write a parser (this is probably my largest regret). How compilers work and how to write one.

Transcluded from FizzBuzz

Are there really programmers with computer science degrees who cannot pass the FizzBuzz test?

Feb 3, 2015

I'm going to be honest. I probably couldn't have passed the fizz-buzz test when I left my CS degree (with an upper-second) either.

Although I'd learned a bunch of stuff, (quite genuinely, no cheating or paying people to write my homework), I'd not really acquired the flexibility of mind to figure out algorithms by myself, at least, not without fumbling around for a considerable time.

In one sense that WAS a problem with the education. They were so busy showing us things that we didn't do much practice "just programming". Programming exercises were always to explore concepts or systems. And they usually ended up hard, frustrating work.

I'd written a lot of BASIC before I went to college. I was getting OK at that. But in college they told me this had "damaged me". Instead I had to learn to write ISWIM (a language that didn't have an executable form), Modula 2 (a horribly verbose finicky language), C (a language where everything I did caused segmentation faults), Lisp (huh?), Prolog (cool! but huh?), ML (why?), Occam (that's kind of cool ... but I'm not sure I ...), Smalltalk (wow! awesome!), COBOL (easy enough but boooooooring), assembly (ok, I passed a couple of exercises), Hypercard (fun, but not REAL programming, right?)

The problem was, that 80% of what I was doing was either fighting these new unfamiliar platforms : how do you run this? why is the compiler complaining? why is THAT a syntax error? Segmentation fault? Again!? Or struggling with particular data-structures and algorithms that we were being fed.

What there was very little of was "ok, on this platform which you're now reasonably comfortable with, take some time to practice doing more programming with it". Getting better at facing a series of requirements and inventing algorithms to implement them. I mean there was a final year project which was basically about that, but the particular application I chose (modelling mechanics for graphics in Smalltalk) what I learned was largely about OO architectural issues and a couple of graphics algorithms from a book.

I hadn't had to work-out an algorithm like fizz-buzz for myself. And I would have struggled if someone had just dumped the task on me.

So, yeah, CS degrees OUGHT to teach more programming. Or rather, have more space for "programming in itself, on a platform you are already comfortable on".

No Backlinks