views:

473

answers:

10

Just curious.

For those of you who had extensive experience programming before school (or who got really, really good at programming during school); did your CS classes become very easy? Almost like trivial side work?

+30  A: 

Not really. Most "Computer Science" degrees use programming to implement abstract theoretical concepts, rather than complete useful tasks. You won't have any trouble implementing algorithms or getting through the entry-level courses, but you'll still need to pay attention in the mathy classes.

Also, you probably know less than you think you do. This is true of everyone at every stage of life. If you're really feeling ambitious, pick up an internship or part time job with a major company and see how software gets built in the real world. A degree means next to nothing on a resume if not backed by work experience.

Stefan Kendall
"you probably know less than you think you do" - words of wisdom.
Dour High Arch
+1 "pick up an internship or part time job with a major company and see how software gets built in the real world"
Sam
http://en.wikipedia.org/wiki/Dunning-Kruger_effect
Nitrodist
+1  A: 

Math was the hard part. Not because it was difficult but because of my school's failure to show how it applied to real World problems. The non CS and general core also was a challenge because here you have a good career lined up and yet you had to fulfil scholarly obligations which was a challenge. Most schools would have all these classes lined up for you but the failure to show how it applied to real World was hard. So in summary while the computer science classes may have been a little easier, the rest of the core was not as easy.

jini
+8  A: 

The introductory classes become quite easy, and the higher level classes become more interesting. This is because while some of your other classmates will be worrying about programming itself, you can focus on the concepts that the professors/lecturers are trying to get across. There will also be classes where you will have to unlearn some things, and then there are the math/discrete math/algorithm classes where your previous programming experience wont mean much.

sjobe
I hated discrete math. :(
Bruno Brant
Speak for yourself, I credit the harder discrete maths courses for giving me the strong logical / analytic mind I have today.
Adam Luchjenbroers
+1 the intro courses were a joke, but the later stuff was still challenging...not because of the programming (that's *never* really an issue), but just understanding the more complicated concepts. in RL I struggle w/ trying to come up with the best design pattern when your options are endless! it's hard to see far enough down the road whether or not the choice you made will pan out.
Mark
@Bruno - I feel you man, I feel you...
Ben
+1 for the unlearning part. Very true in my experience. We had several classes where those who'd never written a line of code before found it much easier to grasp than those who'd programmed before enrolling at college.
jalf
@adam I don't think I said anything contrary to your statement that discrete math would lead to strong logical/analytical skills :-)... oh wait, just realized that you're replying to @Bruno lol.. never mind
sjobe
@jalf: We seemed to hit resistance when we tried teaching undergrads Scheme. Of course, a lot of this was from students who didn't want any actual computer science in their computer science major. (You want business programming? That's in the business school.)
David Thornley
+2  A: 

Well, I got way disappointed with my graduation. Only one course (of a five year duration) was actually good. All the others sucked... AI, CG, OO, etc. were all too easy and all too shallow.

The math part of the course was, however, very hard. My CS was very focused on science, trying to form researchers mainly -- so we had a lot of statistics classes, complex math, etc. I think I could have taken more out of the course if it was better structured, having more classes over specific subjects, more effective training in CS methods, if the Software Engineering classes were more methodology oriented then whatever it was, etc.

Besides, the teachers were unprepared for some classes -- I had one teacher was giving a class about OO in C/C++, but was specialized in hypermedia, which, of course, uses dynamic languages like Python and PHP. I taught her constructors initializers... She didn't know about them until that course.

Bruno Brant
Uhm... I find it hard to believe that your prof didn't know about constructors/initializers. That's kind of fundamental to OOP. AI was a joke? Did you try Machine Learning? Vector calculus? Support vector machines? Hidden markov models? Tricky shit!
Mark
I think the lesson here is that CS schools vary wildly in quality.
jalf
@jalf: Well, indeed. But it's the top school in my country (if you pardon me for being a bit arrogant). The **classes** sucked, because the teachers were researchers. The tests where really hard though, and we had to study like hell. Besides, all classes had projects which were obligatory. Sometimes I had 3 projects to be done in two weeks, like compilers and CG stuff... Lot's of wake nights.
Bruno Brant
@Bruno: Top school in general, or top CS school?
jalf
@jalf: In general... It was my belief that it was one of the top in CS, but I might be wrong...
Bruno Brant
Well, I don't know if it is. My point is simply that if your school disappointed you so badly, it probably wasn't as good as it should have been. Another possibility is that you simply expected the wrong thing. That you expected a programming schools, and teachers who knew a lot about programming, and they offered you a degree on the *science* of *computation* rather than the craft of programming. I don't know which is true. It might be a bit of both. It might be neither. But a good CS school shouldn't disappoint a student keen on learning CS.
jalf
@jalf: Most probably a bit of both. It's strange that I actually think I learned a lot and most of what I'm as a professional today is due to the education they provided, but, at the same time, I was disappointed with the course.
Bruno Brant
+8  A: 

No, contrary to popular belief, CS isn't about learning a trade, or doing programming (at least, it isn't like that at most top American universities). Computer Science is really about learning the Science behind computers, so in that respect, it's a lot more like Math, or Physics.

At the Public University I went to, it wasn't the hackers that thrived, it was the kids that were home-schooled, or the foreign-educated kids, that had solid groundings in Math and Sciences, that did.

Outside of school, the story is going to be different of course, but right now, I'm just trying to answer the question you asked.

Stephan Branczyk
+1 because you first paragraph is completely right.
Bruno Brant
A: 

I found a number of very challenging classes (not just math). Architecting operating systems, compiler design, concurrency issues and solutions, networking, test driven development, agile development, robotics, embedded systems, artificial intelligence, cpu architecture, even game design. I was also introduced to a variety of programming languages, systems and utilities. Each one has its own niche, both of adherents and purpose.

One of my biggest challenges was learning to work with programmers who are not as quick as I am. It turns out that there are tool, methodologies and engineering principles that can leverage everyones contributions. This experience has turned out to be a huge boon to my post-college work life.

Fred Haslam
A: 

I was coding professionally ( mostly self taught), and then went and worked on a MS in computer science.

I found that the coursework helped me understand why things were the way they were. It gave me a better framework to fit the things I knew how to do together. Algorithms was wonderful - so was compiler theory ( it took the 'Magic' out of languages ).

It did make it easier in that I did not have to learn how to write code, but more importantly I had an understanding of how things were done in the real world so the theory made more sense.

John Chenault
+1  A: 

When I started my CS degree I was relatively good writing code and had some introductory understanding of the major data structures. I also had a pretty strong math background. It made getting the degree pretty easy, or at least so it seemed. It took about 5 or 10 years after that to begin to understand how little did I actually know, and how much more I should have studied while at school. Do keep in mind that more than likely for a lot of things that you think you understand today you are actually just touching on the tip of the iceberg. Unfortunately young humans are much dumber than they appear to themselves. I don't understand why we are wired like that.

MK
++ "don't understand why we are wired like that" - My theory is, having raised 4 kids, each kid has the imperative to leave the nest, and there is no way to do this without the desire and the confidence motivating and preceding the learning how, often by several years.
Mike Dunlavey
A: 

There are some good observations here. I was a prof at a liberal arts college for 4 years, so I've seen this from different directions.

  • I had a very few students who were such good programmers that classes bored them, which was sad because there were some things taught in the classes that they should have learned. As a result, they couldn't move beyond mere hacking.

  • Not all of the higher-level math is useless for programmers. As a programmer, you are extremely unlikely to ever need Saturated Model Theory, or Formal Semantics and Logic, but at the same time I think basic computability theory (Automata) and information theory are very useful in helping to design software. These subjects do not need to be explored at PhD-depth, but they can be very useful.

  • Also basic Linear Algebra, Probability, and Statistics will serve you well if you ever want to go beyond just coding up basic applications.

  • It's true classes can be boring, so I think having challenging projects is the key to getting good value out of school.

Of course, it's important to understand that any professor is capable of BS, thinking that something's important when it isn't. My biggest personal beef is all the silliness that they tell people about performance (not to mention all the "right ways" of coding style and OO design). You need to be on guard.

Mike Dunlavey
A: 

I had been programming for around 15 years before I did a computer science degree. Ironically, I did know what big-O notation and computational complexity was(1), but I had never encountered many of the subects covered in the degree. Most computer science curricula will cover theoretical topics that you probably won't be familiar with.

  1. This is often trotted out as an example of basic computer science theory often not understood by self-taught programmers.
ConcernedOfTunbridgeWells