How to pick a good Computer Science degree May 16, 2007
Posted by Imran Ghory in Computer Science, Software development.trackback
I recently came across a scathing article by a former Computer Science professor from the University of Leeds attacking his former department for “dumbing down” their curriculum. In the discussion on reddit that followed the question was raised about which universities still have good compsci departments.
I’d thought I’d try to answer that indirectly by coming up with a set of criteria any prospective student could use to judge for themselves how good an undergraduate compsci course is.
So without further ado the criteria:
- How difficult are the modules/subjects offered ? – do they include math heavy topics such as cryptography, complexity, quantum computing, speech processing, etc. Do they include theoretical topics such as information and concurrency theory. Are the programming courses in depth, do they cover functional programming and language engineering or are they just “what is a loop” lectures.
- Are there specialist units/subjects taught by researchers in that area ? – If a uni is teaching unique courses that are only available at a handful of universities around the world due to the specialisms then that’s probably a good sign. It means lecturers are driving the curriculum and you’re likely to have lecturers who are genuinely passionate about what they teach.
- What’re the average entry grades for students ? – this matters for a number of reasons, not least because having intelligent motivated students means that lecturers won’t have to dumb down their material. Lecturers have to make sure they’re teaching at a level right for their students. If you’re an A* pupil in a class of D students then you’re going to feel unchallenged as the work will be aimed at a level far below you.
- Who recruits at the university ? – Large tech companies tend to have a very good idea which universities are producing the best compsci graduates based upon the quality of those graduates they’ve hired. So look at a university’s website and see what companies regularly recruit there. Most big technology firms, investment banks, consultancies, etc. have campus calenders on their websites showing where they recruit.
- What do students do for final year projects ? – if the majority are doing “e-commerce websites” then it’s probably time to run away. If the majority are doing “hard-core” innovative and interesting computer science projects across a range of areas then it’s probably a good sign.
Does anyone have any other suggestions for good criteria – can we establish the equivalent of The Joel Test for universities ?
Interesting post. I think these questions are definitely relevant for anyone interested in a Computer Science degree…
Regarding your second point: be careful about a prof with a super research reputations. They might end up giving the worse Intro to C++ class you’ve ever seen.
Certainly happened to me in Physics. The guy teaching Phys. Math I is a research-monster, but he was one of the worse teacher I’ve seen in a while.
Good tips overall, although most of them are common sense.
I am proud to say that my now-retired Dad, Dean of Engineering and then provost Melvin Mark, was instrumental in putting together Northeastern University’s (Boston, MA, USA) computer science school two decades ago.
Since Prof. Felleisen of Scheme/Little Schemer fame teaches in the NU CS program and since the inventor of Napster thought of his product while daydreaming in an NU CS class I have to say that the program seems to have worked out.
To me the distinctive feature of a CS degree (as opposed to an MIS degree) is that the CS graduate should be able to describe computer languages and algorithms using mathematical notation. Many hotshot programmers cannot do that, but a CS graduate should be able to.
How difficult are the modules/subjects offered ?
Topics such as cryptography, quantum computing, speech processing do not belong on the “required” list of courses, either at a graduate or undergraduate level. Strength in areas like these is a big plus for a good grad school, but asside from a head start for undergrads looking to specialize or just add fun, they have little meaning. I would look for multi threading, object oriented design, programming projects that are complex in general and some sort of comparative languages course.
Are there specialist units/subjects taught by researchers in that area?
Top researchers forced to teach “what is a loop” lectures are not always passionate. Also, anyone can call them self a “top” or “specialist”. Look at the faculty and ask if they enjoy what they do for a living.
What’re the average entry grades for students ?
I would ask whether intelligent motivated students have access to material that challenges them. I had only average grades, and I knew at least one great programmer who had nearly failed out (spent most of his time working on non-school related programming projects). Students (especially smart and motivated) should not be forced into doing busy work – this is a good thing to look for.
Who recruits at the university ?
Large tech companies have a wide variety of ideas what makes a good graduate. Some of them I find offensive. I would view a small company I’d actually want to work for as a much stronger plus.
What do students do for final year projects ?
The time and effort put into final year projects varies greatly with the school and student. Grad student thesis, publications, or disertations are better places to look.
not to toot my own horn … but I was very pleased with my degree at UC Irvine (only UC to have a school of I&CS). It meets every requirement listed above.
However, there are a few things I did NOT like about my education:
1. Almost entirely Java. I can count the number of classes where we were exposed to non-java coding on one hand.
2. I never experienced a true Project environment. Almost every project was individual, or in teams of 2. Therefore, it was VERY hard to adjust in the real world.
3. We were never exposed to 3rd party libraries and how to use them.
4. I was never asked to make a Web App (elective courses covered it)
I think those are as important as your requirements
Sounds good on paper. Unfortunately you are seriously overestimating the average teacher’s passion for teaching and the average student’s willingness to learn.
Might make a good list for MIT (and the like) but don’t expect to see most of this anywhere else.
That said I just wish universities where more in touch with the industry. Like Zot Zot said, noone ever exposed us to 3rd party libraries, not to mention unit tests, source control, modern methodologies, etc. Hell, 5 yrs ago, they were still teaching us the waterfall model…
Wow this was something that actually relates to me, as im hoping to transfer into a computing degree. Nice write up.
[…] Published May 22nd, 2007 musings , thoughts , Computer , Technology I saw an interesting article from tickletux’s blog about choosing the right computer science degree. Though short, I […]
These are all things that would have been great for me to read in 2000 when I was trying to decide where to go to school. A great list, confirming why I went to the wrong school (Eastern Nazarene College).
Good article, you’ve got a trackback up on my blog.
Good article. But I agree with Konquest on 2nd point. But again it’s just my own experience.
Good article. Mostly common sense if you are really into the compsci field. The point about ‘A student in a D class’ is a well taken one, as it can truly detract from the abilities of a student and certainly constipate the learning process of the A student.