Original URL: https://www.theregister.com/2013/06/14/how_to_choose_a_computer_science_degree/

Girls, beer and C++: How to choose the right Comp-Sci degree for you

You're just a child. But trust me, I'm a headhunter

By Dominic Connor

Posted in On-Prem, 14th June 2013 09:06 GMT

Feature You choose your degree when you’re still a child, even though at 16 or 17 you may not feel like one. When I look back at some of my own teenage decisions, I shudder, and you will too when you think back to your younger years. But perhaps, armed with the advice below, you can avoid the common pitfalls and stumbling blocks on the road to becoming a successful computer scientist.

Of course, I assume that's the field you've chosen to enter. And my advice is really no more than an algorithm laced with some heuristics, but at least I've optimised it with respect to career value.

Don't forget, you’re spending real money - but on what exactly?

The universities want your fees and this means they are selling to you. Apply the same level of scepticism to their brochures and statements that you would to any other marketing material. For example, note the “diversity” of people in the pictures; trust me when I say the number of women studying comp sci is not a tenth of the number these photos suggest. Honesty is not the prime directive here.

You haven’t done computer science yet

The word “heuristics” may be new to you because your "computer science" A level lacked any depth and you haven't picked up enough theory off your own back: proper grown-up computer science is maths and programming, so your degree course may come as a shock to you. I feel stupid writing this, but some of the second and third-tier unis I talked to reported how kids start comp-sci studies believing they can dodge the tricky stuff in the same way I dodged most of the hardware bits in my degree - and it ends badly.

If you decided not to do that cushy comp-sci A level because it was a load of crap, that’s evidence that you’re smart enough to do proper computer science well; throwing yourself into A level maths instead was far better preparation.

Reputation

My day job is as a City headhunter and so some people care about what I think about universities.

I once wrote that I didn’t regard Reading as a real university - not merely “not good” - because it had given up trying to have a physics department and given the questionable things being done by its maths and computing departments. In short, I was scathing, and in return I got a torrent of hate mail from its staff. They told me, in effect, “it’s hard to run a physics department, you know”, and since I did know, their poorly written and badly spelled whining solidified my contempt for what I regard as little better than a teacher-training college.

That wasn’t very fair of me, but it illustrates the patchy way that we decision makers arrive at our prejudices on what we think of as a good university.

Often that is formed by our experience of their graduates, which is both backward looking and based on a low number of data points. That is our fault, but it is your problem. My own sampling has led me to be wary of those with graduate qualifications in IT security, with the glaring exception of Royal Holloway which in general is a respectable second-tier place; it seems to output rather better infosec pros than elsewhere. Note that I say “output” because top places suck in smart kids, so it is harder to measure the value added by the course and that is a big part of what you are paying for.

I’ve met a valid sample of City University graduates and never met one who wasn’t competent, whereas the opposite applies to King's College London where the strange things their grads have said to me are part of some of my best pub stories: for instance, “I bought a Mac because I wanted a stable platform to write my essays.” Essays? In a CS degree? Maybe one, but plural?

Also why “stable”? If you haven’t utterly trashed your system multiple times in your comp-sci degree you’re just an arts grad who didn’t get laid. The only valid use of a stable system is to break other systems. Warwick and Edinburgh are also top-tier places no matter what your careers teacher says. They are on the very short list I have of UK universities that high-end employers mention by name, although the London School of Economics' reputation puts it on that list in spite of the fact that its graduates too often look better on paper than in reality.

It’s not a purely programming degree

There’s no UK degree course that I really regard as a software engineering degree, at least not yet. Having talked to comp-sci department staff, it appears they’ve woken up to the demand for degrees focussed on programming. Quite rightly they are resistant to the idea, since firstly they don’t have the background to teach software engineering well, and secondly they are computer scientists; computer science is what they feel they should do. But the fees system is pushing them towards more practical syllabuses because students will give them money to teach it. I’m unsure if this is good: students will push for short-term things that look cool but will burn out relatively quickly, leaving them with zero theory.

C and C++

A marker for a serious comp-sci degree is that C and C++ classes are mandatory, signalling that the department heads don’t believe their students are too stupid to learn those programming languages. When asking around as to why not all universities teach the language used to write serious software (Windows, Oracle, Linux, Firefox, Excel, HFT trading systems, the London Stock Exchange, your TV's firmware, the code churning out much of the CGI in films), the reply was that “it’s too hard”.

That’s a rational response. I teach C++ and the course has lectures that include slides headed “Cruel and Unusual Pointers”, “Why the hell did it just do that?”, and “What do these syntax errors really mean?”. Some compilers will even abuse you with “useless code at line N”, and where just declaring a variable can convince you that the compiler is a malicious artificial intelligence.

The question you must ask yourself is will your chosen course teach you the language the smart kids will learn? That’s one of the most important questions you will have to consider to date. Success and happiness comes from doing things better than most other people; you don’t need to be top, but you need to move towards areas where you can compete, which is why there are “business computing” degrees. I very rarely see graduates of this in top jobs, but being able to talk the talk of business and getting a good degree grade can get you into places and roles that a mediocre comp-sci degree would bounce off.

Given finite teaching time, there is a trade off between topics of long-term value - such as how operating systems and languages work at a deep level - and things that will help you get your first job, such as knowing the syntax of a Java library call. So it is tempting to choose your course based upon things that you see in job adverts.

The first problem is that you will enter the jobs market three to five years from now and it will be different. A year and a half ago I spoke of the Java market getting near its peak. The feedback I now get is that it has gone past it. There are still many jobs there, but the supply keeps going up while the demand is finite and when you graduate you may well be part of the excess supply. I’ve been one of those people; trust me, it is not fun.

In fact some of my career decisions have been so bad that The Register has paid me to write them up, and yet 30 years after graduating, comp-sci still makes money for me. And that's thanks to Queen Mary University of London, my alma mater, teaching me what is really going on at a deep level in a computer system. If you fully understand your speciality you can weather the storms that will hit your career. Be clear that I am saying “will” not “may”. Unless you’re excellent or lucky (or hopelessly crap and unlucky) your career is a 40 to 50-year gig, and that means the tech will change and when you find your skills out of fashion you will have to shift fast.

That means not just learning the syntax of Java or C++, but why languages work the way they do, why CSMA-based networks can suffer from packet storms and be able to resolve complex logic without just bodging it until the right result comes out.

I graduated in 1984. At that time I recall saying bullshit like “you couldn’t do that because it would take a 100Mhz processor and hundreds of meg of RAM”, and that mainframes were dinosaurs waiting for the meteor. The mainframe is back, and spun as the cloud, and the pizza-priced Raspberry Pi shows my young and stupid views for what they were.

I was taught Pascal. Almost no one outside the British Computer Society and AQA exam board thinks that is in any way useful, but being taught the theory of languages, data integrity and how operating systems work meant that as fashions and technology changed, I could keep up with less pain. Machine architectures are changing from monolithic Intel-style CPUs with complex instruction sets to hordes of more nimble ARMs, and in turn they will be replaced by… something else. I don’t know what, maybe quantum computers or adaptive FPGAs or optical circuitry, and although I’m vague about what will crush the current new wave, I have no doubt the wave will hit your career and many of you won’t like it one bit.

In the shadow of uncertainty, you just have to place your bets and hope but you do have to bet or quit the game. At Queen Mary, Prof George Couloris found this odd bit of software developed at a phone company and thought it was interesting enough to show to his students; it was a product so weird that when, as an undergrad, I checked out the jobs that required experience in it, I found exactly one opening - not in industry but in another college. This weird new software was Unix, aided and abetted by C, and formed the basis of some decent careers for many of us. They also did CAFS which was deeply cool and never got anywhere and AI, which I took a serious interest in, but which has failed to deliver either the commercial or career benefits that any of us hoped for.

Since I, from the incredibly towering heights of being a writer for The Register, can’t pick the next technology edge, I shall assume you can’t either; the important thing to grasp, therefore, is that there will be several optional modules on the course for you to pick if you think you've found the next leading edge.

Size matters - and I don't mean the department downstairs

You don’t know what you want or need to learn, that’s why you’re doing a degree, and so you need to be able to switch to topics you discover an interest in or use for. That means a bigger department is often better for you if this means you can choose between more options. Of course that implies wisdom and luck in your decisions, so it is not without risk.

Careers departments

For all their talk of helping you get a good job on graduation, careers departments at UK universities are pathetically under-resourced. In my years as a headhunter, no one ever has said to me: “I was really helped by my university careers department.” The business schools are rather better, realising that if they’re selling expensive courses, they need to make damned sure their grads gets jobs. One tip is to drop in on them when graduation looms.

That’s not to say some don’t use the inadequate resources to make themselves a reputation; the worst being Imperial College London which apparently resents their graduates getting jobs without going through firms that form close partnerships with staff - and so wrote to me and other recruiters forbidding us from advertising jobs to their graduates and stating terms that would violate many of the contracts recruiters have as standard.

So just ignore the bit of any prospectus that talks of the excellence of their careers department.

Beer is good

Your decision on where exactly you're going to study computer science is going to affect your life on the same scale as whom you marry, unless you’re dim-witted enough to let your parents choose who sleeps with you, and that requires more than a carefully orchestrated meeting with an academic and some flattering pictures on the walls.

You need the story straight from people doing the course - and that means at the very minimum a visit to the campus that's not organised by the university, and some time in the bar. You don’t have to drink there, but meeting real students helps your research greatly.

Departmental secretaries are a good starting point: throw yourself on their mercy and ask where or when you could meet some students over a coffee, beer or cake. You should also look at the web-pages of the student union or the one for the comp-sci students' society, although these are often out of date. Usually you will find the admin staff are helpful, but if the CS department isn’t supportive then this is bad sign of their attitude to you in the years to come.

Ask the students about the quality of teaching. Not just the lectures, but how they tutor you when you hit a problem or think of a cool new idea. Follow up with questions like:

How over-crowded are the facilities?

Phrase it that way; you’re digging for dirt here.

What sort of speakers do you get from industry?

These are good for both insight and contacts for jobs Can you suggest projects, or must you only do the ones you are assigned? You’re probably not the next Mark Zuckerberg but you want that option, just in case

Are the techs there to help, or is their sole mission to stop you doing things?

Running university IT isn’t easy - you're trying to enable experimentation without falling into chaos. Often the balance is wrong.

What is the drop-out rate?

Unis are very coy about this. Some won’t tell you, and the students won’t know exact numbers but their impression is the best data you will get. The follow up, of course, being “why?”

What cool stuff is happening?

Beyond the bread and butter of logic, algorithms, coding, proofs et al, there is usually some sort of “buzz”. Or at least there should be. Some places simply teach and go home.

What sort of jobs have previous grads got?

This last one will have been answered by the marketing spiel, but they will cherry pick the best outcomes and at least a third of the cherries will be women. Since statistically you’re not female you need to get less spin.

Girls

Or to be more accurate, girl, singular. Girls taking A-level computing are so few that it’s likely only one of you will read this piece and frankly you won’t like it (the article, not the course). The good-ish news is that according to the stats, the pay gap between male and female IT pros is about the lowest of any career. You are choosing a career where nearly everyone, especially at the high-end, are male. However, I must be clear that statistically you are far more likely to give up this line of work than a man. If you’re a bloke, then you need to understand that the ratio of girls on your course is not a useful indicator of much at all.

Also the ratios are so awful in general that the only stat that matters is the university as a whole, and secondly my observation as a recruiter is that the more women want to do some career, the less the average person in that career gets out of it.

Finally, you want to both enjoy the experience of university and the life you are buying into afterwards; you will never regret the effort you put into getting beyond the spin. ®

Dominic Connor is a City Headhunter, you can connect to him on LinkedIn.