back to article US computer-science classes churn out cut-n-paste slackers – and yes, that's a bad thing

Computer science (CS) students in the US aren't being taught properly, and their classes are too limited in scope, says one IT think-tank. The Information Technology and Innovation Foundation (ITIF) says that its most recent study [PDF] of curriculum in the US has found that not enough schools are offering computer science …

  1. Anonymous Coward
    Anonymous Coward

    First learn the basics...

    ... then look at the big picture.

    Evidently, this 'think tank' didn't understand how many of the creators of the digital revolution learnt CS when young. You still need to learn the basic tools and pieces before being ready to tackle the big ones. Start the other way round, and you'll never be able to master the complexity and build on solid foundations.

    Try to learn mathematics looking at the 'big picture' instead of learning the humble basics first...

    1. Vector

      Re: First learn the basics...

      I think what the Think Tank is saying is that too many High Schools, in particular, are focused on teaching their students how to use Word instead of how to create Word, or any application.

      1. Anonymous Coward
        Anonymous Coward

        @Vector - Re: First learn the basics...

        Right on! For more than a decade, teaching computers in schools was a course on how to use Microsoft Word.

        1. chivo243 Silver badge
          Headmaster

          Re: @Vector - First learn the basics...

          @AC

          Yes, it's a shame that students can't format a word document for the IB internal assessment. They don't know how, but they can text at 130 wpm, and share embarrassing photos like a pro... Using Word is like learning how to write... This is the digital age no?

      2. Gray
        Facepalm

        Re: First learn the basics...

        My grandson just graduated a large High School in a Tacoma suburb. He took the requisite CS classes; he now despises MicroSoft Office although he hasn't a clue how to code it. Not all is lost, however: thanks to a curriculum heavily laced with High School ROTC participation, he's enlisted in the US Army as a Computer Communications Specialist!

    2. Kernel Silver badge

      Re: First learn the basics...

      ' "Unfortunately, curriculum and standards still focus on using, rather than understanding, technology," the ITIF says.

      "In fact, only 37 per cent of states' CS standards include a focus on computing concepts, while 73 per cent of state CS standards include a focus on computer skills." '

      I'm pretty sure the "Think Tank" is saying that schools should be teaching the basics leading to a an understanding - not sure how you interpreted it any other way, really.

      1. Anonymous Coward
        Anonymous Coward

        Re: First learn the basics...

        To understand technology you have to use it first. Concepts without actually making them "real" are usually pretty useless, especially in IT.

        In IT a top-down approach can easily become boring. It can easily become like learning a language just studying tons of grammatical rules, or learning photography just being told how a camera works, and how an image should look like.

        One key to become a good photographer, for example, is becoming so proficient in using a camera you can "forget" about it. You are no longer worried about how to use it, your skills are so honed you use it without actually thinking about it. So you can focus on your image creation process. Without that skill, your workflow is interrupted by many small issues and you lose focus.

        Same for IT - to design a complex system you need to be beyond the petty problems of coding and small scale designs - but you need to master them first to go beyond. Without actually mastering the basic skills first, you'll attempt to design bigger systems, just doomed to fail, for lack of "been there, done that".

        You will probably become a good "pre-sale engineer", those leaving the s**t to those who have to make things work later....

    3. This post has been deleted by its author

      1. the spectacularly refined chap

        Re: walshk@byteform.com

        "Hacker culture" has its heart in the right place, but it devalues theory and over emphasizes the act of writing code, and there is a limit to being self taught... learning through experiment is excellent, but only if someone can guide you towards the experiments that produce insights that will make you a better developer. I've worked with people who wore their lack of formal education in software as a kind of badge of honor, but their work always reminded me of that of a portrait artist who'd never studied anatomy: Well executed, but not quite the right thing.

        I agree with this. The way I usually express it is that you don't really go to Uni to learn a program language - frankly, learning how to express yourself in any given language is not degree level stuff. Rather you go to learn what to express, not how to say it.

        Secondly there is the perennial problem for any self learning - it tends to be of a piecemeal a la carte menu nature - one area is studied, then something else and so on. There is no guiding master plan ensuring a balanced rounded view. Examples that come to mind here would be tools like Lex & Yacc - Yacc in particular can save masses of time once you are familiar with it but the self taught tend to disparage it as much from ignorance as anything else.

        Instead you'll hear the profound wisdom that a hand-written parser is always much better despite generally being slower, buggier and taking far more effort to build and maintain. Why? The learning curve for a tool like Yacc is pretty close to vertical - you'll need perhaps ten or twenty hours study before you can accomplish anything useful. For the self taught that's frequently difficult to motivate yourself to do for a fairly old, unglamorous tool that isn't getting all the hype of newer toys. The CS undergrad for whom it is simply on the course has no such issue.

        1. Michael Wojcik Silver badge

          Re: walshk@byteform.com

          learning how to express yourself in any given language is not degree level stuff

          True. But this report is not about "degree level stuff", either; it's about high-school CS education.

          It would have been nice if the article had made that clear, since it's extremely important to interpreting the report. There's a vast difference (in the US system) between secondary and tertiary education, and another between undergraduate and graduate education.

          The secondary (high school) curriculum is already very crowded. While arguments can certainly be made for teaching CS concepts as well as or instead of programming, or for (as the report suggests) allowing CS to substitute for advanced mathematics or physical-science courses, it's not obvious those positions are correct - even if you're a fan of CS education.

          On the other hand, it's harder to see much value in the "computer literacy" courses that were popular in the '90s and still persist today, except possibly for disadvantaged students whose access to computers prior to high school was severely limited.

      2. tom dial Silver badge

        Re: walshk@byteform.com

        My son, a system development supervisor, has said for years that all too many programmers lack a basic understanding of what the machine they are writing to is doing under the covers. I made the same observation during a stint in a developer technical support position about 25 years back. While for many purposes that is unimportant that lack can bite rather hard when an application fails to perform well enough and the customers are angry that they cannot do their work.

        And here the general concepts ("big picture knowledge") do not help all that much. What is most useful is detailed knowledge of what the computer is doing, how (for example) a file is organized and what has to happen between the request for a record and its delivery to the program for processing, and maybe most useful, what can be done to adjust the operating system environment, the program, or both, to eliminate bottlenecks and delays.

    4. Tchou

      Re: First learn the basics...

      Even when it comes to programming, they teach how to use Java, .Net or Python, which hide how the computer really works.

    5. Anonymous Coward
      Anonymous Coward

      Ah, but that isn't actually the BIG picture..

      First learn the basics...

      ... then look at the big picture.

      You're looking too much at the detail IMHO. The key problem you have in the US is that the big companies who are to employ such people at present think that they can magically cook up better results by outsourcing their problems to companies with a lower wage bill, because they would otherwise already been complaining to whoever they bought in government. Ergo, local training is of no interest, but expect lots of effort to "help" developing nations abroad in their education.

      All they have to ensure is that the supply of visas doesn't dry up, because that too is a scarcity that could drive up their costs.

    6. DougS Silver badge

      Not everybody needs to or should learn how to program

      The percentage of people who are programmers or system designers is small compared to the number who need to be computer literate to do other jobs like engineering, finance, teaching or whatever.

      The basic courses should teach them how to use a computer, and what computers are and are not capable of. How they can be misused and how to protect yourself from the basic ways those who are out to get you will use. You don't need to worry about more complex stuff like like MiTM or leaked RF emission attacks - that's got to be left to those who design the software and hardware to prevent.

      The advanced courses for people who want to have a career as a programmer or system designer can teach programming, but I think using languages like Java is dumbing them down too much. It is starting at the wrong end and that's because of the stupid idea of trying to teach everyone a little programming. Driver's Ed classes don't try to teach everyone how to change their oil, why do we want to teach every kid how to write Hello World in Java?

      For those who are interested in learning programming you need to start at the other end, with something really simple, like 6502 assembly language. It is limited and simple enough you can learn how the instructions work and even get a basic idea of how the CPU itself executes the instructions at the logic level. Then build up from there, learning C, C++, then Java or whatever language du jour replaces it. Learn basic OS functions like a filesystem (DOS 8.3 is perfect for this) memory management, databases etc. getting more general as you go.

      I agree that starting with how a computer works would really help people truly understand computer science and what they are programming. I can well imagine those in university now, growing up where an iPhone may have been one of their early computing experiences would think of computers as almost magical. Being taught "enter this special syntax and the computer will do what you want" doesn't really teach them programming because they have no understanding of why the computer is doing what they're telling it. That is more like preparing a priesthood for the proper way to prepare a virgin sacrifice.

      1. Anonymous Coward
        Anonymous Coward

        Re: Not everybody needs to or should learn how to program

        Just, students has to learn, for example, a lot of mathematics they may not use later at all. Still, it's important to teach - and learn - that. Same for literature. It makes you a better person, and lets you understand where you would like to go later.

        Computer became so pervasive it is right to teach something beyond "how to run some software". First, to let the many to understand a computer is not a "magic box", and to let others understand if they would like a a career in IT telling them what's beyond the screen and the nice graphics.

        But you still need to keep it "simple" enough to let young people learn the foundations. And teach the basics. At this level, students don't need to "understand the systems they would be working on as IT professionals" - that's the dream of companies that wants "ready workers" without spending for training, yes, teach Java/NET, HTML/Javascript, some cloud? without really learning, prepare tomorrow serfs.

        Students need to understand the basic blocks on which build later, possibly on hardware they can afford. The Pi is a great learning tool, even if it won't teach you Cisco IOS, Oracle PL/SQL, or SAP ABAP.

        Asking school to teach "systems they would be working on as IT professionals" is like asking a physics course to teach how to use the CERN accelerator and its sensors data....

      2. mrtom84

        Re: Not everybody needs to or should learn how to program

        The book "The Elements Of Computing Systems" is a pretty incredible resource for gaining a basic understanding of how a computer works and sets a good foundation for any computing related study. You go from connecting NAND gates to building a CPU and memory (which get emulated). You then write an assembler, a compiler, a vm, and finally an OS. You can then start writing programs for this system. Pretty cool.

        1. Daniel von Asmuth Bronze badge
          Unhappy

          Re: Not everybody needs to or should learn how to program

          Electronics is about building computers (hardware), CS is about software.

          Not everybody needs to use computers, but programming is a valueble skill for CS students.

          "As a result, the ITIF says, many universities are failing to produce the diverse, well-trained graduates that companies seek to hire."

          The real problem is that so many CS graduates abandon their discipline for a job in industry. Some people even think that universities exist to train the youth for careers in commerce or goverment.

  2. Anonymous Coward
    Anonymous Coward

    Yes, teach fundamentals

    And then face "need 10 years windows 2020 experience", eventually train your much cheaper indian colleague, and then wonder why you didn't stick to something that actually made sense career and life balance wise.

  3. Martin Gregorie Silver badge

    Been that way fror a long time in the US of A

    Back in the mid '70s I was working in NYC with an bright American guy with a relatively recent BSc in Computer Science. It turned out that they'd taught him COBOL and, err, not a lot else apart from some elementary system design.

    1. Anonymous Coward
      Anonymous Coward

      Re: Been that way fror a long time in the US of A

      Back in the mid '70s I was working in NYC with an bright American guy with a relatively recent BSc in Computer Science. It turned out that they'd taught him COBOL and, err, not a lot else apart from some elementary system design.

      I graduated in 93 with a BSc in Computer Science. COBOL was a required class, but I was one of the first students to take the C++ and Software Engineering classes. System Software, Database Management, boolean algebra, Systems Analysis, etc, were also all required.

      We also, incidentally, had the last surviving VAX in the state's university system, an old IBM 370 compatible, and NetWare and Windows and Linux servers.

      1. Anonymous Coward
        Anonymous Coward

        Re: Been that way fror a long time in the US of A

        I saw the same thing in 1999, only by then it had shifted from C++ to Java.

        2016, same thing, only JavaScript? (feeling charitable)

      2. Kevin 6

        Re: Been that way fror a long time in the US of A

        LOL 70?

        My buddy who was in CS, and graduated in 2002 had to take 3-4 COBOL classes.

        and when I graduated(in electronics) in 2004 the CS students still had to take COBOL, but the problem was the only teacher who taught it retired, and they gave the class to some idiot who didn't know anything so they wasted time taking a worthless class(I only know this as I knew someone in it)

        1. Doctor Syntax Silver badge

          Re: Been that way fror a long time in the US of A

          "students still had to take COBOL, but the problem was the only teacher who taught it retired"

          Obligatory Dilbert: http://dilbert.com/strip/1998-10-12 et seq.

        2. tom dial Silver badge

          Re: Been that way fror a long time in the US of A

          The repetitious denigration of COBOL is both unwarranted and counterproductive. It is unwarranted because for many purposes (see the 'B' in the acronym) it is a perfectly good language, if more than a bit wordy, for representing and solving the problems in its domain. It is counterproductive because it is (or was the last time I saw any reports) still in use for a good deal of core financial and other data processing in the US and probably numerous other countries. The cost to reimplement such systems is enormous, and COBOL, like FORTRAN, is likely to remain widely used for quite a while going forward. Discouraging students from learning it, or removing from the CS curriculum, does not serve the students or their prospective future employers well. Competent programmers certainly can learn a new language at need, but prior knowledge cannot help but be beneficial all around.

          1. LongGoner

            Re: Been that way fror a long time in the US of A

            Agreed. Uncle Sam relies on nearly a million lines of COBOL to pay out several trillions (that's 10^12 for our British friends) of dollars every year. I've held the CDs containing these in my very own hands when we were preparing to deal with the Y2K "threat". Can't imagine rebuilding that code in any kind of realistic fiscal or temporal framework...

            1. AMBxx Silver badge
              Boffin

              Re: Been that way fror a long time in the US of A

              Doesn't really matter what language you're taught. The important bit is to understand structures and logic.

              I went through the standard list- BASIC, Pascal, COBOL, Fortran, Forth during the 80s.

              Took some time out of IT, played with some VB, came back and had to learn about OO (would have been easier without the VB exposure). The OU course used SmallTalk. Unused outside of achademia, but a great way to learn OO. Made the move to C# & Java much easier.

              1. DropBear Silver badge

                Re: Been that way fror a long time in the US of A

                "Doesn't really matter what language you're taught. The important bit is to understand structures and logic."

                Well, no. Programming doesn't happen in a vacuum just as a train doesn't go anywhere without a rail. And once you have those rails tightly nailed to the railroad ties, it's going to take considerable time and effort to rip them up and move them somewhere else, so you might want to give some consideration to where you want them laid in the first place. And no amount of wishful thinking will make an all-terrain Humvee out of a train.

    2. Kimo

      Re: Been that way fror a long time in the US of A

      Back in the early 80s, my high school had two computers (one Apple II, one Heathkit) and four dial-up modems to the district mainframe. With a limit on the number of students who could actually use a computer at any given time, we spent a lot of time learning logic first, and diagramming programs before we turned them into code. That basics of logic has stayed with me while languages and programs have come and gone.

    3. Anonymous Coward
      Anonymous Coward

      Re: Been that way fror a long time in the US of A

      My college course was Fortran.

      Hadn't used it before, haven't used it since.

      I expect most students now have already been coding for a while in some language before they start college.

    4. bombastic bob Silver badge

      Re: Been that way fror a long time in the US of A

      at least COBOL programmers would understand the fundamentals better than those who've only seen XAML or ".Not" or C-pound or any other "Microsoft new,shiny" they're hawking at the moment...

  4. zen1

    And this is supposed to surprise anybody?

    They did the same damn thing with MSCE, Novell CNA/CNE's and Cisco CCNA/CCNE/CCIE's. If the educational system can make a buck pandering to someones dream of a life in computer science, they will all day long.

    They crank out paper Certified (insert newest fad here) graduates every single day. And while a percentage might be able to do the job, the fact of the matter is, the majority prove only that they're capable of taking test well, rather than applying that knowledge in the real world.

    1. Anonymous Coward
      Anonymous Coward

      Re: And this is supposed to surprise anybody?

      Justified, but now that I'm very good at taking IT based tests, but have no actual other skills, what, besides IT, am I supposed to do in life?

      1. Rich 11 Silver badge

        Re: And this is supposed to surprise anybody?

        what, besides IT, am I supposed to do in life?

        Go into management.

        1. Mark 85 Silver badge
          Devil

          Re: And this is supposed to surprise anybody?

          Go into management.

          And take more than a few language courses in some southern Asian language so you know when the outsourced developers are talking negatively about you. And maybe get your hair person to style it in the pointy variety.

      2. Anonymous Coward
        Anonymous Coward

        Re: And this is supposed to surprise anybody?

        "..what, besides IT, am I supposed to do in life?"

        Teach exam prep courses.

    2. Anonymous Coward
      Anonymous Coward

      Re: And this is supposed to surprise anybody?

      I've had most of those.

      I am good at taking tests, but I did learn a lot prepping for the exams.

      But I get your point - it's no substitute for time served and actual experience.

  5. hellwig Silver badge

    Come on schools, get your act together!

    [quote]The report found that at the high school level, dedicated computer science classes are mostly limited to affluent schools, and when the courses are taught, girls and minority students are rarely enrolled.[/quote]

    My home town (Albuquerque, New Mexico) isn't exactly a hot-bed of education or learning, and has a high level of poor and minority students, but the public school system still managed to make it work. APS ran/runs what is known as the Career Enrichment Center. A sort of vocational school for high schoolers. They offered two years of Computer Science (in C++ when I attended), with the goal for each student to take the Computer Science advanced placement test.

    Of course I'm biased, but I do think my "generation" benefited from the [lack of] capabilities of the computers at the time. My programming was done using DOS in real-mode, 16-bit addressing, etc... We had to concern ourselves with memory space, switching segments, register overflow, interrupt processing (for graphics, mouse/keyboard interaction, etc.). We used Borland Turbo C++, that means pre-C++98 standard libraries. When we wanted a hash or list, we created our own class to handle that. They even offered a course in Assembly, so no libraries there at all.

    Kids today learn to program in Java or some other managed language. The hardware doesn't even exist to them. There are standard libraries or open source libraries for any operation anyone might need to perform. We're not teaching people to create software, we're teaching them to stitch together applications. It's a lot different.

  6. Herby Silver badge

    IBM vs. Microsoft way of thinking...

    THINK vs. REGURGITATE.

    Pretty obvious if you ask me. Modern languages (take your pick) are getting so complex that nobody really knows them completely. The only way to do things is to try what someone else showed you how to do (even if irrelevant) and paste it into your "solution". This yields debacles that are well documented. Yes in the 'old days' things were much simpler, but the complexity was something that the author of the software did in a "good way".

    There are several videos on the Apollo Guidance Computer, and that was done with a code space of around 72kB (yes, kilobytes). Nowadays a computer program couldn't get a character echoed for that much code (I may be exaggerating but maybe not). In broad terms, people have become lazy with the implementation and put together Lego blocks hand hope it looks good. Not the best way to make up a "system" of things.

    Life goes on.

    1. Anonymous Coward
      Anonymous Coward

      Re: IBM vs. Microsoft way of thinking...

      "[..] with a code space of around 72kB"

      I remember the sense of relief in the Systems Programming Department when the Algol compiler ran successfully on top of the multitasking operating system. A memory of 128KB was the then top of the range mainframe's limit. The new prototype mainframe then took that to the unimaginable heights of 1MB - housed in several 6 feet high cabinets..

      1. energystar
        Holmes

        Re: IBM vs. Microsoft way of thinking...

        The first modern language? ALGOL, to me.

        1. AMBxx Silver badge

          Re: IBM vs. Microsoft way of thinking...

          We could also blame the Internet. Back in the day, you had to be able to document something completely and simply enough to fit in a text book.

    2. Rusty 1

      Re: IBM vs. Microsoft way of thinking...

      Bang on the money Herby.

      The operation of a modern, "idiosyncratic", C++ program is so difficult, bordering on impossible, to reason about given its source. Developers tend to cut-n-paste from previous (possibly simpler, and definitely different systems), and rely of test-driven-development approaches even when that may be utterly unsuitable for the application in question.

      The legendary C.A.R. Hoare knew about this a few decades ago: "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult. It demands the same skill, devotion, insight, and even inspiration as the discovery of the simple physical laws which underlie the complex phenomena of nature."

      The first method involves engineers. The second, code monkeys.

      1. Anonymous Coward
        Pint

        Re: IBM vs. Microsoft way of thinking...

        I'd like to see some of this unicorn code that's so simple it has no obvious deficiencies in real life.

        Everyone I've worked with seems to be a fellow code monkey :D

      2. DropBear Silver badge

        Re: IBM vs. Microsoft way of thinking...

        "There are two ways of constructing a software design"

        No, not anymore. Just one: infuriatingly complex. Complexity is unavoidable and outright required today - it's just an unavoidable consequence of progress in the field and in corresponding expectations. While at some point "text" meant "ASCII printable" these days not handling any intricacy of UTF-8 (or is UTF-16? Which order, and with or without BOM? Right-to-left or left-to-right?) is unthinkable. While at some point "retrieving data" meant reading bytes from a file, these day probably means yanking a video stream out of a remote database. Not much can be done about that, the cat is not going to go back into the bag. The problem is that our tools to abstract, encapsulate, and reuse that complexity in a _confidently predictable_, _verifiably and inherently safe_ way are either piss poor or they don't exist at all.

        It's the equivalent of being given a set of lego bricks where no two bricks have the same shape (and definitely no two bricks use the same connector) then being expected to build something really large out of it just as one would with a proper set of bricks. No wonder it just doesn't happen, and it just can't happen - not until we come up with some entirely different paradigm to program that makes that complexity reducible to a level we can handle (or tools that can reliably manipulate and verify it for us to an arbitrary degree). At any rate, as long as we keep trying to manhandle ever bigger juggernauts cobbled together from bits of C/C++ and the like, nothing whatsoever will change - segfaults, crashes, security flaws, all of it is here to stay until we come up with something adequate for our current level of ambitions...

    3. bombastic bob Silver badge

      Re: IBM vs. Microsoft way of thinking...

      copy/pasta isn't programming. you can learn technique and algorithms with BASIC. But of course 'C' is probably the best language to learn to REALLY program on because of stuctures. Pascal has its equivalent. But a lot of "modern" (quotes for emphasis) languages lack even simple structures. They focus too much on "object-oriented" to the neglect of other, more important features.

      Also the 'object oriented' trend is BASS ACKWARDS. You don't need "Multiverse.universe.galaxy.solar_system.planet.continent.country.province.county.city.street.house.individual" to describe a person. THAT, and the HORRIBLY inefficient infrastructure to support "all that collectiveness". Yuck.

      XAML, ".Not", C-pound, and in many respects Java, all reflect this bass-ackwards kind of thinking. And I wouldn't call them "Modern". I'd pick another word that reminds people of an unfavorable genetic mutation.

      Maybe *THAT* is the core of the problem? The 'bass ackwards' trend and "bad thinking" associated with these so-called "Modern" languages?

      Teaching FORTRAN COBOL BASIC and ASSEMBLER might be worth doing, JUST to get people familiar with PROPER technique. C and shell scripting come next, and *THEN* "other things" like Python, Perl, etc.

      But my curriculum wouldn't be a sales platform for Microsoft's "new, shiny" so there ya go.

  7. Anonymous Coward
    Anonymous Coward

    Started my career in computing straight from school in the 1960s - really by accident. Throughout my time I have constantly been amazed by how few of my colleagues knew much outside their very narrow job role. Outside of work they had no interest in IT, electronics, or even things that affect human behaviour.

    In recent times they often seemed to get promoted or paid more for their apparent specialisation - than did those of us who understood the complexity of IT systems in both depth and breadth. When it came down to job evaluation it was the product accreditations that ticked the HR boxes - not the hard to quantify "grey area" knowledge and experience for which there were no set courses.

  8. This post has been deleted by its author

  9. PJF

    Not challenging enough

    for the "trainees"...

    I (we?) had the same problems in the '80's - got board quickly!

    Teacher/Director gave an assignment to do in such-n-such, in the "X" language, (BASIC, ForTran, Cobol, etc.) in a weeks time (5-days) Majority got it done in a day or 3 (45 min. class time - not including login time) then simply didn't come to class.

    The others did the same assignment using other languages.

    Then a few (ahh...plead the US 5th.) got mischievous.. (false login, teacher accounts, SysOp accounts, f'n with other users progs, etc..)

    The '10s the same as the 80's?!!

    1. Anonymous Coward
      Anonymous Coward

      Re: Not challenging enough

      You may well have got board quickly, but we, of the West Country, got planked. Regularly.

    2. Robin

      Re: Not challenging enough

      Made worse by the fact that back in the 80s it wasn't possible to go online and surf when you were board.

  10. Cynicalmark
    Facepalm

    Ha

    Most dont have a clue about the basics, hardware and stack structure. Computer Science in my day was soldering iron led with multimeters and oscilloscopes, then logic; software i.e. Assembler was the final topic.

    1. Mark 85 Silver badge

      Re: Ha

      No relay logic then? You were high tech for the era.

  11. Anonymous Coward
    Anonymous Coward

    There's no longer decent documentation

    Most of the Java questions I Google would have been answered by a "K&R" type book, only there isn't any for Java.

    Ditto for Android APIs that appear to be rearranged monthly to suit Google's new API-flavor-of-the-month, and bookmarks for developer training get 404s.

    The books that are out there suck Jovian planets through a millipore filter. They rarely get further than "Hello world" and *never* cover the minutiae.

  12. Kevin McMurtrie Silver badge

    Visited Maker Faire

    The recent Maker Faire in San Mateo, CA, US was sad. Computer board makers dumped a bunch of kits into schools and the outcome was too often mapping the arrow keys on a laptop to a pair of motors on a toy and calling it a robot. It seemed to miss the point. Dreams of building something innovative were probably crushed by watching a big ugly mess of wires on wheels twitch and short out.

    1. DropBear Silver badge
      Facepalm

      Re: Visited Maker Faire

      That describes pretty well 99% of the whole "maker movement" - just don't ask where exactly the robots are in "robot wars"... Almost all "making" is about clipping together a few blocks in the trivial order they were meant to, and that's it. Not that I have anything against building blocks, they're quite useful - but one should go way past the "blink a few RGB LEDs" or "drive a couple of servos back and forth" stage before one is allowed to show it to anyone other than one's parents...

  13. YARR

    Nothing wrong with StackExchange...

    .. it's a source of good solutions to common problems which saves time and makes developers more efficient. As long as people understand the code they're using what's the issue? People will always encounter issues that aren't on StackExchange that they have to solve using their own initiative.

    1. Anonymous Coward
      Anonymous Coward

      Re: Nothing wrong with StackExchange...

      What's really useful is the high chance there'll be an understandable explanation rather than just something to cut&paste on stackexchange. If you're going there just to get homework done for you you'll learn nothing of course. When you're pushing at the bounds of what you know or understand it can be an educational lifesaver.

  14. Ian Bremner

    I remember taking the Computer Science SCE O' level back in the late 80's.

    The first year consisted of basic concepts including processor architecture, binary arithmetic and basic programming skills.

    Then in the second year the SCE O Level was replaced with the GCSE Standard Grade course and renamed Computer Studies. Everything we learned in the first year turned out to have no relevance anymore as the Standard Grade was all about how to use a Word Processor and Spreadsheet.

    So in my experience (can't talk about the state of affairs now) the focus turned from basic concepts that grounded my knowledge in how computers work to how to use basic applications.

    For someone who wanted to pursue a career in either software development or hardware design the original syllabus would have been ideal. Instead what I got was a course in how to be an office drone.

  15. ecofeco Silver badge

    You don't have to tell me

    It's even worse than that. They can't make websites that are bloated abominations.

    1. DropBear Silver badge
      Trollface

      Re: You don't have to tell me

      Oh, you must be a big fan of sites that flat-out start with a half-a-screen sized auto-play video simply used as a background, I can tell...

    2. ecofeco Silver badge

      Re: You don't have to tell me

      AREN'T bloated abominations.

      Aren't. Sorry 'bout that.

  16. jake Silver badge

    Nothing new.

    In a reply to a STOB article back on Sept. 8, 2008, I wrote:

    Have you ever read comments here in ElReg? The [insert hard/software/OS of choice] fanbois are constantly parroting the words of others.

    I've done a little teaching here in the BayArea(tm) over the last 25 years, and it's absolutely shocking how few people entering the IT world are capable of having an original thought. They learn by rote, and take exams/tests almost mechanically. It's sad, really.

    I tried to shake up my sysadmin/syssecurity class by bringing in an ancient DEC machine running TOPS-10 and a bunch of dumb terminals. My texts were mostly Tannenbaum. Several of the class complained to the administration, and a ruling came down that my "teaching platform was archaic and irrelevant in the modern world". Keep in mind I was trying to teach CONCEPTS, not applications.

    I replaced the DEC with donated/salvaged PCs running BSD (servers & routers) and Slackware/KDE (desktops). Didn't cost the school a dime. The same group of students complained. Out went the free system, and in came a Windows based network. The mind absolutely boggles.

    The problem is that the administration is clueless about computing in general.

    1. Dadmin

      Re: Nothing new.

      They are more concerned with getting their stats up, so they get more budget, so they can repeat this failure all over again and call it their "good work." Sometimes I wish I had received more college level computer coding classes; I went military, so no fun party schools for me, and I don't have the wherewithal to cover more education afterwards, just went right into the job market. And I pre-date the rage of certifications, and for good cause, as that is some expensive paper and not worth anything unless you end up at some company that actually requires these "bits of paper." Nothing is as full-featured as getting the real education from a real CS course, but there are ways of making up for it. Such as;

      1) have a project for your new found knowledge, so you're not just reading and forgetting. I like to learn a new language, then either master it by using it everyday, or just making sure I know what to do in there by making a sample application. I like to make a new password generator when I learn a new language. It makes knowing the syntax and the coding style for that language mean more and do more right off the bat, plus I get to grok all the nuances of the language and the cool specific goodies. Like the fun one-liners in Perl, or the pretty syntax and easy looping constructs in Python.

      2) take time to go back and learn all the theory you missed by not being properly trained! I got some education bucks from my last gig and purchase the Stanford University computer programming texts, a huge four volume epic by Donald Knuth. So heavy in math I had to take a break and starting learning higher math so I could get through the concepts. This is CHALLENGING stuff, but when you are able to craft a bit of code on a fictitious system like MIX, you are ready to code the depths of the enterprise. Mind you, I'm just a Senior Sys Admin and newly crowned devops guy, and not a full-time coder. I take the coding very seriously and know my limits and know what great code looks like and what shitty code looks like.

      3) use it every day! every day! If you're not taking a few weekends or nights to do your own computery projects at home with your scaled down data center, then you might want to go into managerial arts. People who love technology, people who love to write interesting code are the people that are fun to work with when you share those ideals. People who are not should rethink their role in IT, or like I said, become a manager and stop annoying the world with lesser solutions and stinky code.

      4) work with someone way, WAY better than you, and keep your mouth shut and your eyes wide open! I got a chance to work with a real coder, with big skills, and college trained in Finland, and it was a pleasure to learn all about a piece of code that I was trained to maintain, but really could not craft on my own. It was pretty big, in multiple parts and basically did the work of shuttling tons of Bugzilla tickets into that system for automated data center migrations and rollouts. No one ever used it while I was there, and I don't know if they even knew it was there, but no matter; it was a very well designed piece and taught me so much more about Perl than I even dreamed.

      It all comes down to talent, education, and a true love for what you do. No matter what you do. We know IT, but that statement works for any career, me thinks. Thanks for the stack exchange info. I've never heard of it myself, then again I dislike running to Google search something I could figure out on my own by reading the man pages, or the documentation. If you search first, you probably need to be a manager because your code is plagiarized garbage without original thought, mostly.

  17. channel extended

    My experience is Payroll.

    When I was in uni , late 1970's, the very first program we had to write when learning a new language was a payroll program. EVERY language. Even IBM 360 assembler!!! It was what the business communites wanted at the time. Who needs a payroll prog now? Plus with all of the new regulations it is not possible for a student to write one in a semester, even if that was all they were doing. Allowing ANY single org to direct your learning is a good way to become redundant.

  18. Anonymous Coward
    Anonymous Coward

    Not all that surprising, just look at the prospects for CS graduates...

    "Livin on The Edge..."

    * Comp-sci grads going through the system now have a depth of knowledge that often doesn't extend beyond C#. Cheating is also common as certification tends to consist of automated tests instead of practical grunt. But on the flip side, there's a lot more to know. More platforms, more-vendors. The end result is more holes in security.

    * How bad is it really?... When every system finally crashes, and every last database gets hacked, will that force us to come up something better? Because that's what it will take for change it seems. Everything can't simply be about ruthless & endless cost cutting, with senior execs still making 100's or 1000's of times what everybody else does etc.

    * Because of this many tech workers of my gen have actually left the market. Money was good in the 90's and early 2000's. But now the Mortgage is paid off, world travel is done and expat gigs all sown up. Some married, some didn't. Those without kids can now easily work part-time, and some can even get out completely.

    * But this wasn't how it was supposed to be. Tech was supposed to be life-long lucrative work, with the odd nod of respect. Most veteran IT pros I know would still work as opposed to living modestly. But the rewards just aren't there. Few of us expected that when the song above was released...

  19. Anonymous Coward
    Anonymous Coward

    STEM

    I've noticed a worrying trend in the US: apparently the ruling class thinks the chronically unemployable are our future developers.

    If you've never held an actual job, I guess you might think that way.

    How hard can it be, right?

  20. redneck

    H1B

    Now companies will say that they need H1B visa holders for entry level positions.

    1. energystar
      Headmaster

      Re: H1B

      Come on. Redneck. Work on your schooling. No Country is invading you.

  21. energystar
    Angel

    AMEN.

    Amen...

    P.D. Amen.

  22. Stevie Silver badge

    Bah!

    Having come from a mainframe background and not having a CS degree of any vintage, I am regarded as the thicky in the two departments I report to.

    A few weeks ago I was asked to fix a once-working script two newly minted CS grad consultants had broken. I fixed their shell script and wrote a memo that had three sections: 1) I fixed it for you. 2) What I did. 3) Why I did it.

    In part three I talked about how to make and not break a heredoc stream. My supervisor and all the consultants made fun of me saying they couldn't understand the memo.

    Notwithstanding that I broke the info down to three parts and made the longish "how not to do this thing again" bit an optional read as the *last* thing *and was careful to word it in a neutral way, I was put out that the CS Grads not understanding a discussion of heredoc format was my problem for using long words rather than cause for a trip to Google for some remedial re-education in classic shell scripting basics.

    And *I'm* the useless fossil here.

    1. Cynicalmark
      FAIL

      Re: Bah!

      “In part three I talked about how to make and not break a heredoc stream. My supervisor and all the consultants made fun of me saying they couldn't understand the memo.”

      Yup - I retired recently from a company that hired based on degree standards rather than actual working knowledge - they didn’t understand a jot of what I was trying to instruct them on embedded device creation, management and repair. -ffs what the hell are they teaching these days?.. It certainly isn’t from the ground up as they don’t even try to know the engineering side of tech -it seems to be a ‘get a subcontractor to sort it’ culture- almost like managers rather than hands on engineers. Sad really.

      Not that I give a shit anymore (says the engineer who really does) my retirement is taken up learning even more so I can charge a fortune for services that are going to be like rocking horse poo in the near future.

  23. veti Silver badge
    Headmaster

    Elision

    The article seems to segue "naturally" from talking about schools one moment, to universities the next. Now somehow it's the schools' fault, if university graduates aren't up to snuff?

    Look, if the prospective student is not up to the material, either come up with a remedial course for them, or don't admit them to the course in the first place. You don't get off the hook by saying "oh, the teaching they had before they came and paid us a humungous sum to learn better was substandard, so obviously they still don't know anything now".

    1. David Nash Silver badge
      Headmaster

      Re: Elision

      Don't forget that in the USA they seem to like saying "school" when we Europeans (or Brits, at least) would say "university".

      I don't know what they mean when they say "university" :-)

      1. Stevie Silver badge

        Re: Elision

        Probably because of the way the courses and degrees are organized so they can be attended/acquired over a protracted time as allowed by real life and finances.

        Marry the American idea of modular courses that grant credits with what used to be the high quality of British university level learning (a thing of the past in some cases, I'm seeing from real life example) and what I understand the Swedish model for financing to be (you get a free ride and sign over a given amount of your time after graduation to government service to "pay it back") with a loan buyout option and you'd have a truly great tool for further education, one that would allow the student to adjust their learning to accommodate their career options "on the fly" as it were.

        Governments would get the graduate skills they need to make their countries competitive whether in government or the private sector. Win win.

        Or we could keep charging an arm and a leg to have broke grads who *think* they know how to do stuff we needed five years before but not so much now (and likely will need to be almost completely re-trained to become useful anyway).

  24. Lee D Silver badge

    I work in schools.

    Today you are taught "computing". How to use a computer. Even the "coding" is a GUI flowchart-based thing, normally, without a single LINE of code actually written. Copy/paste exercises at best. At no point do you learn the architecture, simple things like binary (too much like maths, apparently), logic gates, etc. except in the most trivial of ways.

    When I was at school, even with the most basic of hardware, we were taught "computer science", which is an entirely different thing. There, you rarely get to touch a computer, you certainly don't get to bash around on it and search for the answers to copy/paste into word. You had to instruct the computer what to do, at best, and that was only after understanding what it COULD be told to do.

    The difference is still there. The difference between USING a computer, and designing/building/instructing/programming a computer is vast.

    P.S. I work in IT in schools, always have, have a Maths & Computer Science degree, can program, and am never short of work, and even help out in the "CS clubs" etc. because the teacher that understands the difference - let alone can do things like code from scratch - is a rare beast. I have met precisely three teachers in nearly 20 years of school IT who can code, for instance. One was a mathematician who knew COBOL and used to program financial systems. One was a mathematician that self-taught to teach a CS A-Level class. One was a former industrial control specialist for a large supermarket chain. All the other "IT teachers" I meet? I wouldn't leave them alone with a copy of Logo.

    1. Michael H.F. Wilkinson Silver badge

      It is indeed important to separate the situation at schools from the situation at universities. Our CS curriculum contains many courses where the foundations of computer science are taught, including the maths behind it, such as discrete structures, languages and automata, program correctness, besides courses in imperative programming, object-oriented programming, functional programming, parallel programming, software engineering, networks and computer architecture. etc. The emphasis is very much on what is happening under the hood. Prospective students often ask us what programming languages we teach, and we invariably answer that that is really unimportant. We teach programming paradigms, and the ability to learn new languages. Once you know how to program in one structured imperative language, learning another is largely a matter of learning syntax. What is far more important is learning how to cast a problem into imperative-programming (or OO, or functional) terms.

      Many schools here in the Netherlands do not teach CS, and those that do, often struggle to find good, qualified teachers. We also find that for those students who did follow CS at school, their maths grade is a far better predictor of success in CS at university than their CS grade at school. The CS taught at school does not really prepare them for CS at university. This is why we organise outreach events for school kids, to show them what CS is really all about. We recently had a contest for school children in which they had to solve a series of problems (such as cracking a Caesar Shift code) by designing Turing machines for the task. This levelled the playing field, because none had ever done this, and they cannot cut and paste solutions from anywhere. It also teaches them a structured approach to solving problems. The day was a great success, and they thoroughly enjoyed the challenge. We will make the course material and web-tools available to schools, and are looking into other ideas.

      1. Lee D Silver badge

        Precisely.

        That's what we try to do with the extra-curricular clubs, etc. but it's hard when they've never been exposed to it before and you have limited time to cover anything like that. The irony is that the kids are proficient in all the usual software packages before they even start school, really, and can do all the things that "computing" purports to teach them.

        We once rolled out the "game" TIS-100 to our club. It was eye-opening. The problem-solving skills to even start something like that aren't there, and despite being "gamified", it was almost impossible to get anything done (holding interest wasn't a problem - getting them to think in the right way was). The problem, as you say, it Googleability. There's little independent thought and the children's first reaction is "How did other people do it". There's an element of that to all programming, sure, we've all done the stackexchange / github lookup when we were after something. But to actually get that stuff from first principles, or understand it enough to modify it successfully, is alien to them.

        Though the assistance I had when I was a child their age was minimal to nothing, even with all the resources and power available to them now for free, they aren't able to get close to the same kind of understanding. It's a slippery slope.

    2. Updraft102 Silver badge

      That's it right there. The article purports to be about computer science, but then we read about people being taught to use Word. That's not computer science. It's like the difference between a taxi driver and an automotive engineer.

  25. Anonymous Coward
    Anonymous Coward

    Recently an acquaintance's 12 year old was telling me about his obsession with computers. It was obvious that he had no exposure to electronics below the box level. I offered his parents an Arduino experimenter's kit for him - leds, motors etc. I checked first that they weren't technophobes - indeed they were Apple fanbois. The answer was a very curt, even icy, "no thank you". Quite why is a moot point - did they think I was going to want to be his personal tutor?

    It appears difficult to help give most children the chance to develop a teenage hobby that was quite common for my peers in the 1960s. Many of us ended up with long careers in the IT industry.

    My own interest started when an older cousin gave me his electrical set of components of electromagnets, armatures, and a carbon rod microphone. Then at 13 I successfully rebuilt a DIY transistor radio kit that my father had failed to make work. I was hooked - just as the hobby of electronics started to take off in the UK. However it was the adults at the local Amateur Radio Club who provided the necessary technical guidance for several of us.

  26. This post has been deleted by its author

  27. Cynicalmark

    In the future when the machines code goes wrong.....

    Any of you chaps thinking we will be begged on hands and knees in the retirement homes our sh1tty kids will have farmed us out to for us to come and fix it for the muppet generation of accountants and end users? ‘Our AI has gone wrong and is screwing our cities up....boo hoo’

    Yep I would love to look up from my pee soaked high back chair to go tell em to all to suck my floppy disk. Hehehehehe. Seriously I need to get out more.

    Oh and @Mark 85 the relays were but its like 48 odd years ago and memory is fading faster than an ssd.......

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon

Biting the hand that feeds IT © 1998–2019