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

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 …

COMMENTS

This topic is closed for new posts.

Page:

  1. Lallabalalla
    Boffin

    "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"

    Haha! And even today, 13 years into what I smilingly call my "career", I still maintain that if you haven't crashed your OS or at least your browser at least once today, you're not really trying.

    My "Comp-Sci" degree was actually called "Applied Computing" and was basically computer games and 2D and 3D programming - a subject offered by precisely 2 Uni's at the time - Bradford, 200 miles away and MDX, a 10-minute cycle ride away. So that was a no-brainer. MDX was very much a bums-on-seats affair and I suspect the author of this article wouldn't even consider it to be third-tier, but it served me well in the end.

    I learned, among other things, some good basic Java, C++, OO, how to hack example code and even how *not* to. More than one student learned the hard way that if you're going to copy another student's code, don't also copy their distinctive spelling mistakes.

    I also learned you could scrape a 2/2 by cut n pasting most of "your work" from Google, and that anybody with even a 2/1 should be regarded with suspicion until proved otherwise.

  2. Peter Simpson 1
    Childcatcher

    From my (long ago) experience

    I went to a middle tier University and learned the basics of Computer Engineering (hardware design) with a large dose of programming languages and computing theory. Also Discrete Math and Coding Theory. Loads of fun.

    But, the university education was pretty much a background to what I learned in the jobs I had -- worked at the computing center on campus (which provided me with a mainframe account: unlimited computer time and storage) and at the local DEC plant over the summers, where I learned firsthand what product ion was and what real engineering documents looked like. I have never regretted those jobs. Learning the theory is fine, but go out and get yourself summer/night/weekend work (for free if you must) in the industry. That's where I learned the most.

  3. Anonymous Coward
    Anonymous Coward

    C++

    I never went to uni, I taught myself c++ which I now apply in a finance environment using vb (once you know one language all the others are easy imho, work out limitations, syntax, use interwebs etc...), C++ isn't difficult, the most annoying part was pointers, not because they're difficult to understand but because every textbook told me they were difficult, which they are not... also OOP, why would you program any other way??? I really don't understand why they wouldn't want to teach these things? Am I missing something or is this just dumberer education?

  4. Anonymous Coward
    Anonymous Coward

    The Smart Kids Don't Grok This Dreck

    "The question you must ask yourself is will your chosen course teach you the language the smart kids will learn?"

    Surely you jest. You only expect the dumb ones to read your ElReg article? This implies, of course, that everyone that has read your drivel is drivel... the dumb kind. Perhaps you should have used a stable computing device (in '84? what was that? That was soooo long ago) to write essays (plural). Well, OK, that presumes that you truly aren't targeting the just the dumb ones; I'd better not look in the mirror in that latter case since my head might wrinkle up while deflating. And that would be embarrassing since the lone smart chick won't even look at me then, being assigned to bovine_herd->mindless_prune_head_guys.me (and that is in .rodata yet! Argh).

  5. Anonymous Coward
    Anonymous Coward

    College?

    With places like Dev Bootcamp turning (highly motivated) high school grads into web developers with a near 90% job placement rate at a fraction of the time and money, a lot of people are beginning to shun a full four-year degree. It'll be interesting to see how universities respond. Hopefully by smartening up their cross-discipline programs for specialties like big data.

    No question 4y degrees provide more depth and breadth. OTOH, it's no guarantee of employability. How many ill-prepared noobs have you turned away that just spent 4+ years and a shit-ton of money on a full degree? How many coworkers do you have that don't even have one, but instead busted their ass? I'm seeing more and more.

  6. Anonymous Coward
    Anonymous Coward

    City University

    >I’ve met a valid sample of City University graduates and never met one who wasn’t competent,

    Aw shucks, your'e making me blush. Hang on though, you haven't met me yet.

    I seem to recall that City University had one of the highest percentages of graduates going into gainful employment, might have changed. I also think they got rid of their physics department so it should make my degree more valuable. It wouldn't surprise me as when I was there in the early eighties there were only 15 students and that was before the surge to take easy artsy degrees.

  7. M Gale

    Finally got there.

    And as a recent graduate of a Computer Games Technology degree (LJMU, 2:2 with honours, I reckon I could do better), I've managed to get quite conversant with C and C++. Dabbled in C# a bit, but as I didn't take the Console Programming module and go for the Xbox, it wasn't a major part of the degree. I've been playing with scripting languages for years, but C and C++ always seemed a bit scary, at least until I started using it properly and going "holy shit, that's fast." Never looked back since!

    I'll say it's not a course for the faint-hearted (or mathematically ill-disposed). The "Advanced Computer Graphics" core module is a good example as it's a long slog through the underlying mathematics that make 3D worlds possible. You'll learn about shaders, be given a good start on the Autodesk Creative Suite, and be expected to write long essays on the difference between fixed and programmable pipelines. Add Computer Vision and AI for a major (filter matrices, recognition and search algorithms, oh joy) and Mainframe Computing (I can do JCL, I can) for a minor and you can't accuse me of picking stuff because it looks easy.

    The first year was an "intro to" course on a wide range of computer science-related subjects. One module went into boolean logic and gate-level stuff, and culminated in making a logic simulator spit your student ID digits out in sequence on a 7 segment display, for example. There were sections on computer security and forensics, databases, and of course computer graphics. The idea being you could switch to any of the computer science-related subjects before the end of the first year, because everyone was being taught the same stuff up to that point.

    As for drop-outs? Well, one of the first things everyone was told by one of the more droll professors is that he expected to see half the students in the school of mathematics and computer science to not make it to the final year. I'd say he was about right.

  8. Herby

    Experience always varies!

    My degree is in Electrical Engineering, where things get done. Sure, it has lots of math involved, and I did get to write a program or two to solve some lab work, but the best part was that I was employed at a university "up the street" that I wanted to get into, but didn't have the grades to do so. It yielded an interesting mix of things as I interacted quite a bit with graduate engineers who were actually doing things (and solving problems) using a computer. As an added bonus, they paid me some money to do it. I ended up being the BOFH for a mid-sized 32 bit computer for a few years (I did PFY work before that) and was able to actually diagnose problems with the hardware and develop interfaces for stuff they had lying around, along with the software to make them play.

    But that was the late 60's and early 70's when Fortran was king, and to do anything special you used assembler writing subroutines for the other Fortran jockeys you had in the shop. Later on I did learn C and true to form discovered that one can write Fortran in any language.

    But... if you really want an understanding of computer languages, try Lisp. While I haven't used it, the assembler I worked with used lists for lots of its processing, and you could do lots of things with it. Another language to try is Forth. Study how it works, and see how it is implemented at the machine level. On an 8 bit micro (which you should design/build yourself) you get to know LOTS of details that will serve you well in later life.

    As for C++, I compare the books written by the progenitors of the languages. The book The C language and Bjarne's book about C++ differ by about a ratio of 4 in the thickness of the book. While not a very good metric, go and look at the examples. In K&R the examples are complete and well thought out. Bjarne's book yields examples that often finish up with "// ...". This makes the language more difficult to understand and reveals that C++ is a moving target that is (probably) more complicated than it needs to be (kitchen sink?).

    So, while you might not need it, an understanding of low level constructs can prove to be very insightful. Learn some. Make some lights blink, read some buttons, solder a bit, experiment. It will prove useful.

    1. Ian 55
      Thumb Up

      Re: Experience always varies!

      I was wondering if anyone would mention Forth. With it, you can have the hardware working while the C-ers are still in the early stages of the edit-compile-run-crash loop, and there is nothing better for understanding what's really going on.

    2. ThomH

      Re: Experience always varies!

      I'm no particular fan of Forth for practical use but I can't recommend the Thinking Forth book strongly enough — it transcends the language it was written for, teaching fantastic lessons about structure and development cycles.

  9. William Boyle
    Thumb Up

    Indeed!

    " If you fully understand your specialty you can weather the storms that will hit your career."

    Indeed in truth! I am an old fart software engineer, with 30+ years experience (and 65 this past January). I was laid off my position as principal engineer at a major software company at the end of 2005, did some consulting until the end of 2011, and because of my experience, knowledge, and capabilities, was hired 18 months ago as principal performance engineer for a tier-one corporation to design/develop performance gathering and analytic tools to help in the management of our world-wide data centers comprising thousands of servers. FWIW, "consulting" is a euphemism for "gainfully unemployed"... :-)

  10. This post has been deleted by its author

  11. s0lace

    It's definitely worth choosing a more specialised Computing degree rather than just ‘Computer Science’. I studied a Computer Networking degree that had programming modules (Java) as well as networking and general IT theory. But most importantly I based my final decision on the fact the University had Labs with physical rack mounted equipment for us to play with and there was a lot of practical involved, in addition to writing essays.

    I also did a sandwich course so when I went to do my work placement in the industry doing IT Support, I was working alongside two other students who were studying Computer Science. They had never done things like using Active Directory, joining workstations to a domain or any basic troubleshooting before, which seemed a bit strange to me. I was told by my manager at the time (about 3 years ago now) that this is not uncommon.

    I guess the point I’m trying to make is whatever Computer Science course you do, just make sure there is practical work involved (doing a years work placement is even better) rather than spending 3-4 years reading books and writing essays. It will give you a head start when job hunting after you graduate!

  12. Boris the Cockroach Silver badge
    Happy

    Oh well

    guess I'm not getting any decent programmer jobs after dropping out of the Open University, love to go back, but not got the cash(let alone enough for a full time degree)

    And I'll go along with the maths comments, you dont need A level maths to do Comp.Sci O level is quite good enough thank you.

    But then I dont rate anyone as a decent comp.sci gradute unless they've mastered "Concurrent systems.: Operating systems, databases and distributed computing" by Jean Bacon (hopefully 2nd edition) a fine tome on howto analyse, design, and test multi-threaded and multi-cpu programming. as well as being the best insomnia cure ever invented.

    Anyway.. must dash.. need to be up in the morning to get a robot arm synchronised with a machine tool so it does'nt put the grabber through the window again... ahh real world programming

  13. Tristram Shandy

    When I went to university there were very few CS courses available, and those that did exist were really offshoots of the relevant maths department. This was also in the days before the likes of the ZX80 and ZX81 appeared, so there wasn't the tradition of hobby computing. I did use some newly-available TTL logic chips in a design and build of an awesome guitar effects pedal, but that's as far as it went.

    Armed with a science degree I started out with COBOL and Assembler on an ICL mainframe. Retired a couple of years ago from being a consultant database specialist on...... IBM mainframe (still using COBOL and Assembler!). All the interesting newer stuff I did as a hobby (and made a few bob out of it).

    The moral of this story, if there is one, is that in any area of IT there is a wealth of depth and knowledge that you can learn, and that will make you marketable, and earn more money as you progress. Probably best not to plump for the mainframe if you're starting out now though. However zLinux is promising.

  14. Petrea Mitchell
    Boffin

    Pascal? Bah.

    I'll see that and raise you an entire year's worth of requirements in Prolog.

    OTOH, this same degree required a course in statistical analysis, because it was being offered by an engineering department and statistics was a blanket requirement. It's been way more useful to me than the year of calculus everyone makes you take.

  15. Anonymous Coward
    Anonymous Coward

    The purpose of a degree

    is to demonstrate one's motivation, persistence, intelligence and ability to learn. To a lesser extent it confers a limited set of skills that may or may not be of transient relevance early in one's career. Requiring the possession of a degree is a handy way of reducing the number of job applicants to a manageable level.

    What a degree does not do is obviate the necessity to continually study new developments so as to remain useful and therefore employable.

    I majored in Theoretical Physics*, yet spent most of my career designing and coding real time embedded software for data communications devices and things that go bang, using mostly C, C++ and assembly language. The number of times I had to use post High School mathematics? Zero.

    *Included brief exposure to Fortran, but no other languages

    1. Alfred

      Re: The purpose of a degree

      "The purpose of a degree is to demonstrate one's motivation, persistence, intelligence and ability to learn."

      So how do you explain the astonishingly low number of languages graduates hired to be chemical engineers? The requirements for hires straight out of university for chemical engineers always make it clear that they want people with chemistry or chemical engineering degrees.

      Replace "chemical engineers" for a bazillion other scientific and technical disciplines. It's not just chemical engineering that seems to demand actual knowledge as well as (and indeed, sometimes instead of) "motivation, persistence, intelligence and ability to learn."

  16. WatAWorld

    From a Canadian perspective:

    From a Canadian perspective:

    1. In CS and IT, university name doesn't matter much, unless it is Waterloo. So pick your university based on its actual performance in the field you are studying.

    2. Consider studying engineering. It is typically more difficult, but you'll learn deeper theory. Theory lasts more decades than practical.

    3. Consider studying business, and picking up programming at night school after you graduate.

    4. If you're female you'll likely earn more than males and be far less likely to be out of work. However if you enter the business world you'll face a lot of pressure to leave IT and go into management. I guess affirmative action is taken more seriously in Canada than the UK.

    5. Top management, CIOs, usually come from sales, but sometimes they come from finance or engineering. If you want to be a CIO, go into sales. Sales of equipment and of people is where the money is.

  17. redpola

    I've been recruiting software engineers on and off for 15 years. During that time the skill sets coming through and what we've heard from university graduates has changed significantly, and detrimentally to the employability of new graduates.

    A good core working knowledge of C is absolutely vital for almost every programming job, and an applicant with C or C++ on their résumé will always float to the top over C sharp, java, ruby, python etc.

    Programming in C requires serious rigour; and specifically rigour of thought, not just discipline. If you can program in C then you are already writing better code in other languages than those who learned to program using those languages. Note:- you may not have more experience, but a good C engineer is armed with the rigour to produce good quality code even in a language they recognise they are less experienced in.

    When I hear that another university is dropping C or C++, my heart sinks and I worry for their students.

    To summarise: great C coders are in short supply, and this situation has got much worse in the last five years. If you want to guarantee you'll be employed and command a great salary (and some of my staff earned more than I did), become great at C coding, It will *always be required* and will make you a better coder. Universities who drop it are doing their student a great disservice.

    1. Anonymous Coward
      Anonymous Coward

      @redpola

      It's been a long time since I've read such a complete pile of out and out twaddle.

      It beggars belief that anyone can state "A good core working knowledge of C is absolutely vital for almost every programming job"

      Why? What does understanding C/C++ have to do with being able to write good code?

      Good code structure is language independent. C/C++ is an overrated fad that is well past its use by date.

      To summarise: You're wrong.

      1. Alfred

        Re: @redpola

        "Why? What does understanding C/C++ have to do with being able to write good code?"

        It's a strongly-correlated signal. If you understand C and/or C++, you must have a solid understanding of the machine model. If you have a solid understanding of the machine model, you will be a better programmer than those who do not. It's not necessary to be good with C to have that understanding, but it's remarkably tricky to be good with C and not have that understanding.

        1. Anonymous Coward
          Anonymous Coward

          Re: @redpola

          I'm only replying to say that I'm not going to reply to comments which go on about "solid understanding of the machine model".

          1. Alfred

            Re: @redpola

            I'm replying to say that your inability to respond speaks volumes.

  18. Khun Roger

    No Such Thing As Computer Science!

    Well, not when I went to college. Now retired after decades of writing machine code and assembler.

  19. itzman
    FAIL

    Dont do a compsci degree

    If you want to be a programmer.

    AS an IT employer, I found them all arrogant useless and pedantic, forever arguing about the right elegant way, and the correct language, instead of actually analysing the problem, writing the spec and coding it good enough to work.

    Engineering chemistry or physics are where some of the best coders I have known come from. Electronics is the step below machine code, and they are damned good low level coders. Physicists understand models and they make decent enough purveyors of 'technical code'

    Quite why chemists are as good as they are, I do not know, but two chemistry GIRLS turned into really good coders. I think chemistry involves a lot of boring tedious attention to detail and documentation, and that's what a lot of coding is all about.

    Of course software engineering is the complete discipline: but who offers courses in it?

  20. pacmantoo
    Headmaster

    Don't forget the HNC!

    Too much academic baggage is disguised as the rigour of thinking! When I did my HNC aged 40 I was asked to write essays about the different types of programming languages - furnctional, OO etc. Why - 'for academic rigour' ! Did that teach me to be a better coder - my @rse! But hey, my English and Philosophy degree really helped (as did my A level Maths, Eng & Physics) Flow charts & pseudo code - piece of piss after attending philosophical logic seminars pissed &| stoned. And Eng Lit gave me creative bullshit skills (and wrist ache from writing everything long hand - this was the 80s - nary a PC in sight!)

    Doing a 12 hour, one day a week, day release HNC whilst still working full time proved I could still learn, focus and could still work till the wee small hours! My C++ skills are crap - but I'm a sysadmin / network tech - not a coder! I know a little bit about lots - usually just enough just to keep things running.

    You've got to learn the theory - so you understand the practice - how else can you diagnose a problem, say with a web site, if you don't know the OSI model? If we don't teach theory properly and then rigourously test its application we are training people to become rapidly obsolete. Maybe that's fine for our commercialised universities - but bad news for society and the student!

  21. Getriebe

    Softskills required

    I have been fiddling with computers but more accurately with projects that involve computers for 38 years. I’ve made a ton of money and still have a great life. But very early on I recognized the ability to manage those awkward buggers called programmers and technicians was the skill required. And over the years the number of them and the type of Asperger they exhibit has changed, still getting them to work to a business perspective and to achieve business related goals is the way to make the dollar. And if anyone says that isn’t the goal , get to the wrong side of 60 as I am and you want to carry on racing your historic Porsche and maintain you city and country locations, it bloody well is.

    My posts on El Reg are tainted with some dislike of freetards, not because Linux is terrible, it’s just the zealots who surround it have been in my direct experience the worst at understanding there is a business imperative in all we do in IT. And mostly they are CompSci degree types.

    My response all the years ago when the BBC micro came out and I was cornered at dinner parties – or less salubrious places – by some anxious mom who wanted to know how to ensure little Jonny’s career/degree would be stellar and she asked me, would the BBC be useful, my answer then, as now, is no. Go and send him to do something he is passionate about, let him succeed and then he will discover computing if he needs, any how computing will have changed beyond recognition by the time he leaves drunk, STD’d to the hilt and in debt. I reckon I was Delphic.

    Get a good degree in something that has someting in human interaction, first

    What I do now is about big projects and any programming is done outside of this country. Sorry I would not bring anything back to these shores, you are all too fucking difficult to control, slow and in the wrong time zone.

    1. Anonymous Coward
      Anonymous Coward

      Re: Softskills required

      " worst at understanding there is a business imperative in all we do in IT."

      I figure "better, faster, cheaper" would be a quite large part of that imperative? Careful, them's freetard words, them are.

      I think RBS have some quite valuable experience of outsourcing all of their coding skills overseas too. So do their customers.

      Of course, you've already decided you'd never hire me, as I'm not Indian enough I guess, and I want more than 50p a day.

      --

      A compsci-type.

  22. Anonymous Coward
    Anonymous Coward

    I know this will be blocked by the swear filter.

    But the man really is a cúnt.

    1. M Gale
      WTF?

      Re: I know this will be blocked by the swear filter.

      What fucking swear filter?

      1. Anonymous Coward
        Anonymous Coward

        Re: I know this will be blocked by the swear filter.

        What Man?!

        1. Getriebe

          Re: I know this will be blocked by the swear filter.

          That'll me I am bound

          But I still contend that business understanding and what I call in a poor generalisation, softskills, is what is required to make a good living.

          If you want to do research or write a new complier - thats a different matter.

          "Of course, you've already decided you'd never hire me, as I'm not Indian enough I guess, and I want more than 50p a day."

          Nothing to do with funding, nor being Indian: neither was mentioned in my post. None is done in India.

          1. Anonymous Coward
            Anonymous Coward

            Re: I know this will be blocked by the swear filter.

            I'm the AC from above, who wants more than 50p a day.

            You're talking to someone with 3 years of front-line customer service, sales and tech support experience and 18 months (stopped only by a broken ankle) of experience working for a parcel firm in a warehouse so bloody busy that it should serve on its own as credentials as far as my work ethic goes. That's on top of the various other work I've done. The Bsc(hons) came after that.

            I could be in your country, or I could be a foreigner to you. Does it matter?

  23. Mostor Astrakan
    Alien

    Essays? Fuck yeah!

    I am one of these weird people who actually likes to write docs. I have an IT degree, and in a forty-hour week, we had one hour of Communicative Aspects. Like any other teacher, the lady teaching it said that this, THIS, was the most important thing you'll learn. And what did we learn? Well, we learnt that documents have structure. We learnt how to cite sources. We learnt how to order our thoughts, and the two most important questions that you ask when putting fingers to keyboard. (1) WHY am I writing this? (2) WHO am I writing this for? These questions apply equally to a network design for a multi-national enterprise and a piece of Harry/Snape slashfic.

    If your answer to (1) is "Because someone said I had to", Your document is going to suck, and waste my time. Before you even open up a word processor, THINK. A good answer here is: Make sure that my friends and colleagues can build the thing that I have just dreamt up.

    Which brings us to (2). Most documents I see every day, if they are not just there to tick the "Documentation" box, are written for fucking telepaths. No, I do not know what connection there is between box A and box B, because you just thought that up, and I don't WANT to read your sordid little mind, or make assumptions. The biggest sin you can commit in writing is assume that people already something. Yes, your colleagues will know what an IP address is. That's why we hire people with degrees. No, I do not know what brilliant trick you just pulled with the netmasks to make packets go to America.

    The art of writing documents is heavily undervalued in IT, and because of this, I regularly see documents in my inbox that are complete drivel, and I would literally be better off without them. I don't even care about the odd spelling mistake, as long as it's not in a command I have to execute. I do care that all the information I need is there, and NOT hidden in some throwaway line in the introduction, but properly labelled, as part of a coherent set of thoughts that I can follow.

    So yeah. Essays. Documents. Designs. Learn them. Love them.

  24. LukeB
    Thumb Down

    I am studying software development with the Open Uni which is pretty much focused on Java and Python. Would anyone say it is worth teaching myself C++ or would employers only be interested if I had academic proof of my ability in this language? I have to admit I am reluctant to take the advice of recruitment consultants on board as many times in my previous career they have spoken of doom and gloom which just didn't represent the truth.

    One highlight was being told I would likely never get a job as a Broker in the City and that I should go back and improve my GCSE in maths (despite a 2.1 in economics, granted BA). I received a call a few days later and was employed within a few weeks...

    Not always the case I'm sure, but recruiters often speak rubbish.

    1. Daniel Voyce

      Python is a great language to learn, it is used all over and has a decent job market exposure. It depends what kind of coding you want to go into, Python is pretty flexible as it is used on the web a lot aswell if that was your area of interest.

      The way I see it - if you have time to teach yourself a language and are confident you can do it well - then go ahead - get some code examples of stuff on GitHub and use that as part of your application process.

      If you are looking to get involved in Web stuff - PHP is still the best for employability.

  25. Owen Ashcroft
    Devil

    There is no such thing as a good Computer Science degree, they're like Philosophy Degrees, they teach nothing of value whatsoever.

    You mention that A-Levels math is useful, rubbish, there's nothing useful in that for a Computer Science degree, I did a load of maths before doing mine, and it was all utter useless, can you add, subtract, multiply and divide? Then you're fine. Knowing the mod operation is helpful too. All the batshit crazy stuff you get taught at A-Level, or in the catch up modules I was forced to do is as useless as a chocolate teapot in a volcano.

    The A-Level computing course has one advantage over the A-Level maths course, it's a lot more fun, in terms of does either set you up for the 3 years of wasted time that is a Computer Science degree, not even slightly.

    Equally does a Computer Science degree teach you to be effective outside of a research position in the university that taught it, god no, I learnt my programming and all my practical skills working before, during and after my degree. My degree gave me a nice piece of paper that let me beat other people to a job, did it help me once I was there, god no.

    1. Alfred

      And yet the number of programmers I run into who need help working out the distance between two points on a screen is astonishing.

      You don't need maths in that you often don't need to be able to handle calculus and geometry and so on in order to write code (often you _do_, if you're writing graphics or serious number crunching and that, but there are lots of programs to write that don't need mathematical knowledge).

      What you DO need is the ability to think coherently and logically about problems in such a way that the solution you develop lends itself to expression in a given notation. Mathematics is a subject that teaches this skill. It's a strongly-correlated signal. It's possible to be a good programmer with no mathematical ability at all, of course it is; but it's remarkably hard to be a solid mathematician and not be able to think about problems in such a way that you'd make a good programmer.

      That's the link. Programming is not bashing on a keyboard. It's thinking about problem solving in a way that lends itself to a given expression, which is also what maths is.

  26. Chaswobler

    Just do maths or physics.

    When I was at Manchester (then Victoria), the physics guys taught C++ in the comp sci department anyway.

  27. Neoc

    My $0.02

    NOTE: this is all based on the state of the IT industry in my neck of the wood. I cannot speak for the rest of the world.

    I have been in the industry and here's my view (coloured, I'm sure, by the intervening years and too much alcohol every so often).

    (1) Our intake was roughly 200 people in the first semester. A good 3rd were women. By second semester, we were down to 100 students with, maybe, 1/10th women. By second year, there were 20 students in a class, but the men/women ratio still held. From memory, these numbers and ratios seemed to be constant for the rest of the degree.

    (2) There were two major institutions in town at the time (there are more now) - one taught you the under-the-hood of computer programming (how computers work, the whys and wherefores of stacks, etc..) as well as such wonderful headache-inducing stuff like formal QA proofs of algorithms ("Z" anyone?). The other institution taught you to program in Java (and a few other languages of the day). Needless to say, when we hit the workforce the percentage of employees from the second institution vastly outnumbered that of the first. Now though, as I have progressed up the ladder, the percentages seem to be reversed at my level. make of that what you will.

    I'd like to sing the praises of my Alma Mater, but last time I went back for a refresh course I subscribed to what I *thought* was Introduction to "Programming In Java", fully expecting to be taught the ins-and-outs of Java. What I got was Introduction to Programming (In Java). I have added quotes and brackets to make my point - there were none in the course title. It was being offered as a Masters-level course and it was awful. How bad? The *lecturer* could not answer when asked why Java arrays started at 0 rather than 1 (hint: most people at the time Java was introduced programmed in C). <sigh>

    (3) Essays. Oh <deity> by all means YES! You are going to have to write reports and interact with users and business people. LEARN TO COMMUNICATE! When I did my degree, one course each semester had to be picked from outside the Science stream. Made sense to me - it taught us to think beyond our programming tasks (I picked French one semester because, well, I was a native French speaker and the only thing they asked me was if I had done French in high-school). Mind you, I always though it was a damn shame nobody from outside the IT stream was forced to take even minimal computing classes... might have saved me from wanting to strangle many an Arts Major who couldn't operate a mouse without f-ing it up. (YES, you DO need all of these cables plugged in. NO, I don't CARE if they mess up the aesthetics of your desk.)

    (4) Languages. I'd have to agree with the article. C, C++ are a good bet (more C than C++, but that's my opinion only). If you aren't doing C++, Java is a good substitute to introduce the concepts of OO programming. COBOL is nice if you want to work for the older banking firms, especially if combined with one or more of the others. But for <deity-of-choice>'s sake, unless you are planning on writing websites for the rest of your days, do *not* specialise in PHP, Python, et al. Learn them, by all means, but be aware that most places with n-tier architecture (quite a lot of medium-to-large businesses) do not use these languages beyond their web presences - the rest of the time, the back-end is written in so-called "legacy" languages.

    I'd include dotNET in the languages to learn, but MS seems hell-bent on having you re-write your code in a different language every few years if you want it supported - compared to that, most C/C++ programs written back when I graduated can still compile *and run* on today's compilers/hardware... although some of the UI looks damn awful by now. ^_^

    For comparison, the place I work at has a dotNET front-end on Windows, with C back-end and a large-scale SQL database running on a *NIX variant, as well as a web presence for smaller clients and Web Services for larger clients to use.

  28. Anonymous Coward
    Anonymous Coward

    Brilliant article...

    From my experience, you are not the average head hunter. I could write an even more scathing article about the industry you are working in, given most head hunters don't understand the technology they are placing people for. Pattern matching resumes is just the norm these days, and stacking the right key words is a necessary skill to get past most of the head hunters gate keeping the first round interviews these days.

    With the exception of your points around essay writing, which is a skill set that is invaluable for a geek to be able to get rewarded for their work - I loved reading this article. I'm trying to fill 16 positions for Comp Sci grads and just struggle to find anyone who actually understands anything other the surface level syntax of a language.

  29. Tony Proudlove
    Happy

    Good article, but will the intended audience read it?

    Interesting stuff. I made pretty much all the mistakes identified. Didn't do A-Level Maths, did Computing instead, because I wasn't planning to go to Uni at the time. Halfway through my A-Levels, decided to go to Uni but found most of them required A-Level Maths. So ended up at Newcastle Uni, which didn't require A-Level Maths, but instead hit me with a deluge of Maths in the first year, which completely overwhelmed me and I dropped out after year 1, back in the mid 90's.

    So really to get the best out of this article, you need to be a 16 year old making your A-Level selections. I wonder how many 16 year olds, or indeed 18 year olds will read this article? A handful is my guess.

    To support what someone else said above about HNCs, I fortunately landed on my feet and after dropping out did an HNC in Computing. Far more suitable for me and it led to a Software Apprenticeship with a telco, where I did an HND in Software Engineering on day release. Ultimately I've done alright, although I'm not a developer. A degree isn't for everyone, and despite the subtext of the article and the majority of the comments, there are areas of IT other than development, you know. Some may see development in HFT as the pinnacle, but a code monkey in HFT is still just a code monkey. ;)

  30. Daniel Voyce
    Headmaster

    Relevant programming languages are needed...

    Although unfortunately the ones that are often used IRL are often the worst to learn fundamentals on. I did Computer Science at Uni and we learnt Ada as the main language - realising then that were very few Ada jobs on the market we asked our professor why we were learning it - his answer - "Because it will force you to code correctly" - He was right.

    Ada is a ridiculously strict language - it wasn't fun to code in but as a teaching language it gave us a decent grounding in programming (and distributed and realtime systems) - However from a purely Job oriented point of view - it was somewhat harder to come out of Uni and get a job, all of my friends that are programming now are doing so in Languages they have basically had to teach themselves, we did touch on Java at school but not in any capacity where we would have been useful in the real world - even at Junior level - there was no talk of C++.

    I think Python would be a decent language to teach at Uni nowadays (as an interpreted language) and has a lot of scope in the real world and something like C++ for a compiled language.

  31. Michael C.
    Boffin

    I can see there's a division of opinion over the maths requirement. It obviously depends on what area of computing you want to specialise in. For most jobbing programmers they won't need an awful lot of complex maths skills.

    When I was at Cardiff University they split us up into three bands based on our maths experience: those with no A-level maths, those with lower than a C grade, and those with C and above (IIRC). Being in the top band awarded you a position on the MATLAB course (hooray!).

    I also went on to do a Computer Graphics module which was extremely maths intensive. Certain areas of computing, computer graphics/vision being one of them, you will definitely struggle without a really sound foundation of mathematics, in others you'll get by just fine.

    1. Alfred

      "For most jobbing programmers they won't need an awful lot of complex maths skills."

      However, the ability to think coherently and logically about values and quantities, and to construct extended solution in a given notation, are needed. Maths is the subject at school that teaches this ability best. You don't need maths to be a good programmer; you need to be able to think in a way that your solution lends itself to a programmable expression. There are, of course, other ways to learn this skill. Maths is the way most accessible to your standard per-university student, and being good at maths (i.e. able to think with it) is strongly correlated with being able to programme.

    2. M Gale

      I also went on to do a Computer Graphics module which was extremely maths intensive.

      I'll second that. The graphics module we were on was more about the math and less about the tools used to to it. Case in point, we were asked to sketch out the algorithms in Matlab.

      And Matlab can go love a duck. I don't care if it can keep satellites oriented the right way. It's an obtuse piece of shit that makes the Obfuscated C Contest look easy, and probably only holds its niche market (and niche market prices) because nobody has bothered making anything better. My opinion, of course.

  32. Anonymous Coward
    Anonymous Coward

    Graduated in CS(Games Tech) from NTU in 2010. Can safely say it was a pointless exercise in powerpoint and business speak

    C++ was mandatory programming but can only say I learnt to truly program after finishing uni and being chucked into the deep end of the real world. Would certainly class myself as mediocre and only achieve what I have from being a culture fit!

  33. Anonymous Coward
    Anonymous Coward

    I'm only a couple of years out of my degree - CS at Manchester. Academically it was a fantastic degree, providing a very broad base and the opportunity for specialisation in relevant areas. While the academics were great, the staff were not. You could fit most of them into two categories. Classic neck-bearded FOSS-preaching crusties who hadn't seen the light of day for fifteen years (looking at you, Latham) and absolute dinosaurs who really couldn't care less about the undergraduates and hadn't changed the way their course was taught since the mid 80s.

    This made motivation difficult. Unless you were very lucky and got one of the really good staff, you were stuck with someone more concerned about preaching why your way of doing things was Wrong, or someone who just delivered their material then disappeared for six weeks. Throw in Manchester's legendarily poor pastoral support and the result is a prodigious attrition rate.

    So the best advice you can give a prospective student of today is investigate the staff and the support systems. Really press that "how many people drop out" question, ask for the statistics - every university has them and chase things up online. If I were doing it all over again I'd have picked a less rigorous uni in return for a more pleasant atmosphere every day of the week.

    Actually, If I were doing it all again, I'd probably go the higher apprenticeship route. Sure you don't get the name of a prestigious university on your piece of paper, but you get 4-5 years paid work at a pseudo-graduate level with a good company instead. And no debt. And a shedload of certs.

Page:

This topic is closed for new posts.