Slashdot Mirror


Exam Board Deletes C and PHP From CompSci A-Levels

VitaminB52 writes "A-level computer science students will no longer be taught C, C#, or PHP from next year following a decision to withdraw the languages by the largest UK exam board. Schools teaching the Assessment and Qualifications Alliance's (AQA) COMP1 syllabus have been asked to use one of its other approved languages — Java, Pascal/Delphi, Python 2.6, Python 3.1, Visual Basic 6, and VB.Net 2008. Pascal/Delphi is 'highly recommended' by the exam board because it is stable and was designed to teach programming and problem-solving."

97 of 663 comments (clear)

  1. Maybe I'm missing something by Tim+C · · Score: 4, Insightful

    But, so what?

    If you understand programming, picking up any given language is straightforward.

    If you don't understand programming, it doesn't really matter what languages you know.

    1. Re:Maybe I'm missing something by Anonymous Coward · · Score: 3, Insightful

      If picking up any given language is straightforward, then why does everyone list the languages they know on their resume?

    2. Re:Maybe I'm missing something by DangerFace · · Score: 5, Insightful

      Maybe because resumes get sent to HR and management, not experienced programmers?

    3. Re:Maybe I'm missing something by delinear · · Score: 5, Insightful

      I guess it depends if we expect the exams to be about learning the foundations, or actually learning practical skills. If it's the former, the language isn't so important as they'll need to do a fair amount of learning on the job, if it's the latter then the language could be valuable experience prior to their first role. From personal experience, I'd rather universities taught the foundations and didn't try to instill a sense of practical knowledge, because most of the university graduates I interview who do have practical knowledge tend to have been taught bad or very outdated practice, and it's much harder to break them out of those practices and teach the right way than it is to teach someone who knows the underlying principles the right way from scratch. Until universities can keep up with the fast pace of "web languages", they should stick to ensuring students unerstand the theory above all.

    4. Re:Maybe I'm missing something by Trepidity · · Score: 2, Insightful

      Partly because it's straightforward in principle, but takes some time in practice. There are at least two levels of language knowledge: having some idea of how to write things in the language, and knowing the languages's quirks, best practices, pitfalls, and, generally, pragmatics. The first is the stuff that anyone with a strong CS background should be able to pick up. But the latter requires just a lot of experience. If you take a complex language like C++, how does one learn which of the (many) features interact subtly with each other, and where the (many) pitfalls lie? More or less, through experience. If someone on your C++ team is a smart person with a strong CS background but has programmed C++ for less than 6 months, you should suspect they haven't yet picked up all the pragmatics, no matter how smart they are. That's just how things work.

    5. Re:Maybe I'm missing something by MrZilla · · Score: 5, Informative

      Maybe because resumes get sent to HR and management, not experienced programmers?

      Exactly. When a manager is looking to hire a person, knowing that "we create our software using C", he expects to see "Knowledge of the C language" on the resume he gets.

      Trying to argue that you extensive knowledge of Pascal, JAVA and Assembly for the given platform means you will be able to work efficiently anyways, since you'll very quickly pick up the C knowledge needed, probably won't get you hired, even if it is true.

      Of course, there might be the special case where an intimate knowledge of setjump or the structure of the stack during a function call might be needed, but I think those cases are somewhat rare.

      --
      mov ax, 4c00h
      int 21h
    6. Re:Maybe I'm missing something by AliasMarlowe · · Score: 2, Insightful

      If you understand programming, picking up any given language is straightforward.

      Indeed. But it probably helps if you start by learning a fairly well-structured language. Preferably a couple of quite different languages. My first two were Fortran-66 and APL/360, which are almost as different as you can get (and which also reveal my age). The next few languages were PL/I, Focal, C, Basic, and LaTeX, and these have been followed by numerous others.

      Adding Pascal/Delphi to the list is a good idea, but dropping C and PHP while retaining VB and VB.net is beyond any sane comprehension.

      --
      Those who can make you believe absurdities can make you commit atrocities. - Voltaire
    7. Re:Maybe I'm missing something by teh+kurisu · · Score: 4, Insightful

      I find that knowing the language syntax is only half the battle. Learning how to use the libraries properly (standard or not) takes much, much longer.

      My education in programming has largely been in Java since late high school and all the way through university, with deviations along the way into VB, C, PHP and PROLOG. Recently at work, I've had to pick up C++ in order to do some Symbian development.

      Picking up what I needed to know of C++ was the easiest part. Learning how to use the Symbian C++ libraries, on the other hand, has been a monumental task, and one that has largely been ditched in favour of Qt for Symbian, which is much, much easier to get to grips with.

      In theory I can now put 'knows C++' on my CV. I don't really. I've hardly used the standard libraries. I'm pretty confident I could write a Qt-based C++ app without too much trouble, either on the desktop or on Symbian. But I wouldn't have the first clue where to start if I was asked to write a Windows app, without a decent bit of learning and training. And I would avoid native Symbian like the plague.

      I'm no expert in CV writing (I'm still in my first proper job after leaving uni), but I think that listing the things that you have done, and then mentioning the languages and environments that they were done in, is better than simply listing the languages that you know.

    8. Re:Maybe I'm missing something by AlecC · · Score: 2, Insightful

      I would agree with this based on my experience learning Java. With many years C++ experience, learning the Java syntax was half a day with a book, and being able to write reasonably good code wehich did what I expected was about two days. But, reckoning by hindsight, it was about eighteen months before I was a good Java programmer with all the language idioms at my fingertips and a good knowledge of all the pitfalls. And that is with a clean, well designed, language. With a hybrid, lower level, and sprawling language like C++, I reckon that it will take even longer to reach that level. I doubt that more than a few percent of C++ programmers are really masters of all aspects of the language. I have to say that, while I call myself a good C++ programmer, I approach writing templates, other than the most trivial, with fear and trembling. And templated overloaded operators need even more care.

      Which, to return to the subject, means that if you are teaching "vocationally", the sooner you get students started on their target language the better. Whereas if you are teaching theoretically, you want the cleanest and simplest example of each class of language. Java and Python fill both needs, Pascal/Delphi is clean but has little industry use. VB is the odd one out: widely used, but not particularly clean and simple.

      --
      Consciousness is an illusion caused by an excess of self consciousness.
    9. Re:Maybe I'm missing something by Anonymous Coward · · Score: 3, Insightful

      Right. I've been a professional developer for 15 years now (as in, it's paid all my bills for all that time). Last time I touched C was back in school.

      There's a freakin' forest of languages out there, and C is not some holy grail that sucks all into its gravity well.

      If I should ever actually need it, I'll pick it up. Just as with any other language I've learned through the years.

    10. Re:Maybe I'm missing something by Anonymous Coward · · Score: 5, Insightful

      The C programming language can be hard if you don't have a solid understanding of computers. It's easier to learn after you've got an understanding of other areas. Pointers, for example, make a lot more sense when you know they represent memory addresses. Personally I think that if you're teaching programming, you should stick with a more abstract language. That way, you can concentrate just on programming: Loops, conditional executions, etc.. Things like preprocessors, compilers and linkers, which you will need to know about to some extent to code in C, are probably best left to a separate courses.

    11. Re:Maybe I'm missing something by SharpFang · · Score: 2, Funny

      If you know Java, pointers in C will be black magic to you.

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    12. Re:Maybe I'm missing something by Chrisq · · Score: 4, Interesting

      Trying to argue that you extensive knowledge of Pascal, JAVA and Assembly for the given platform means you will be able to work efficiently anyways, since you'll very quickly pick up the C knowledge needed, probably won't get you hired, even if it is true.

      Only it's not true. A programmer who doesn't know C is either very lazy or, given the relative abundance of each language suffers from some weird form of autism.

      There's no denying it, C is the basis of everything in computing. Anyone who has studied or done any professional work in computing has had contact with the C language at some time. A programmer who never had at least the curiosity to learn C, if only to understand some function he downloaded from the web, will never, ever, be a competent programmer.

      Is that still true? A decade or so ago it would have been, but we have some bright young programmers who have only seen Pascal (from early training), Java, Python, and C#. Many examples now are in one of these languages or pseudocode.

    13. Re:Maybe I'm missing something by GPSguy · · Score: 4, Interesting

      Retaining VB and VB.net suggest a hefty Microsoft contribution. At least to me.

      I've been watching the dilution of programming skills in our CompSci department over the last several years. The question I've been asking is, "Who's going to write the next OS, or even the next decent compiler, if we stop teaching languages that get us closer to the hardware?" From our administration, the answer's been a bit quiet, but seems to be either, "who cares?", or "why?"

      In an OS class I taught recently, 3 of 5 students had not been exposed to any assembly language over the course of 4 years of CompSci, two had not met a full C programming class, either in high school or college. Most had experience in java. All had taken .net classes. None had any class requirement to be familiar with Linux or Unix. In the comments at the end of the class, several were very unhappy that all my class examples required a command line and didn't show them a flashy GUI to look at registers or other output.

      On the positive side, although the senior professor in OS liked what I'd done, and was nonplussed by the evaluations, the department head has said I wasn't likely to teach again, because I tended to focus on technologies that weren't relevant to our students, like web programming and SAAS. Upon reminding her I'd been assigned an OS class, she said I could have integrated more web programming into the content instead of, say, the lectures on HPC, threading, and message-passing, which is what I do a lot of these days, and an area I feel is underrepresented. That I "wasted" two lectures, and still covered all the (approved) syllabus material, and that the kids all did manage to pass with decent grades, wasn't as important as the fact that I'd not focused on what she (and the students) thought was important. (Strange, when did my syllabus become a topic for debate with the class?)

      And while I'm ranting, there's an awful lot of real science still written in Fortran, but it's not taught much anymore. I'm thinking of reviving a free-university class in fortran to support scientific newbies who need to learn it for their course-work and graduate degrees.

      --
      Never ascribe to malice that which can adequately be explained by tenure.
    14. Re:Maybe I'm missing something by xaxa · · Score: 2, Informative

      And importantly, it's not required that students applying to do computer science courses at university should take this A-level. In fact, many universities will recommend doing extra maths (if possible) instead.

      The best universities even advise against it -- for instance, Trinity College Cambridge say it's acceptable only as a fourth subject (most people do three or four A-levels).

    15. Re:Maybe I'm missing something by Jurily · · Score: 4, Insightful

      but we have some bright young programmers who have only seen Pascal (from early training), Java, Python, and C#

      Are they bright in terms of Get Shit Done(tm) or in terms of Understand The Cost Of Your Code? While C may no longer be the lowest common denominator between languages, frameworks, etc., it's still basically structured assembly, thus ideal for learning the hardware model, and all its implications on higher level software. Interpreted/JIT languages provide a useful abstraction over the hardware, but it's by no means perfect. And when the abstraction breaks, you won't know while your simple little script takes too long. StringBuilder is the idiomatic example, I believe.

      As with all software development magic bullets, it only works as advertised if you already know what you'd do without it.

    16. Re:Maybe I'm missing something by LarrySDonald · · Score: 4, Interesting

      Teaching foundations is obviously the most important thing, and yes, you can do that well in many languages. BUT while you learn the foundations, you get the bonus of getting comfortable in one or more languages as you write in them. Which one(s) should you use this bonus on? Pascal? Not thinking that's wise. For the record, my school used modula2/3 and ML for functional until later when everything went to C/C++. I would have much rather gotten further comfort in C/C++ and Lisp to start with, seeing as they're actually somewhat used and the basics don't change anyway.

    17. Re:Maybe I'm missing something by Bootarn · · Score: 3, Interesting

      It's interesting how different it can be. The first language we were tought in CS was Moscow ML (Similar to Standard ML, or SML). After that we actually learned MIPS assembly, followed by C. We didn't learn Java until the very end. This gave us a fairly decent grasp of the inner workings of a computer, and I'll forever thank them for it. In our first year, we were asked to construct a MIPS compatible architecture in a simulator (logisim). That was extremely fun, and it really opened my eyes to what a computer really is.

    18. Re:Maybe I'm missing something by Jurily · · Score: 5, Insightful

      Everyone who agrees with parent, please read this article NOW.

      You don't learn C for the syntax, you learn it for the side effects.

    19. Re:Maybe I'm missing something by Anonymous Coward · · Score: 2, Interesting

      My first job out after getting my master's degree was at a Canadian / US semiconductor company (whose products you might be using right now). I was entirely self-taught in VHDL, and knew no Verilog at all - which is what they were using. My prospective manager - a brilliant engineer in his own right - knew exactly how much that mattered, and told me I'd pick up Verilog in a month or less. He was entirely correct.

      I consider myself lucky. Every time I read a resume, I see a similar litany of "language skills", everyone except me seems to make a big deal out of knowing the last fad in .NET programming. In my experience, what matters a lot more is domain knowledge, respect for your coworkers/users and good understanding of algorithms.

    20. Re:Maybe I'm missing something by Sockatume · · Score: 4, Informative

      Yeah, just to get this down for our transatlantic friends, high school is mandatory until 16. Then we can begin studying S, A/S, and A-levels*, and the grades we get for those are requisites for university entry. A BSc in Biochemistry might require AABB including mathematics and at least one science, for example.

      *(Intermediates, Highers, and Advanced Highers in Scotland)

      --
      No kidding!!! What do you say at this point?
    21. Re:Maybe I'm missing something by Jurily · · Score: 4, Funny

      Yes, and you'll growa beard.

    22. Re:Maybe I'm missing something by Bing+Tsher+E · · Score: 5, Insightful

      "C is Hard. Students shouldn't have to learn anything that is hard. Think of how it might affect their GPA!"

    23. Re:Maybe I'm missing something by techhead79 · · Score: 2, Funny

      So...you're a COBOL programmer....you know they kinda exist in their own little world right?

    24. Re:Maybe I'm missing something by marcosdumay · · Score: 3, Informative

      Not so. Pascal is way simpler than C on things like string handling and allocation sizes, and that is because of abstraction.

    25. Re:Maybe I'm missing something by nomadic · · Score: 2, Insightful

      C is historic, and not something I think anyone should want to ever use (why use an abacus when you have a calculator).

      So you're advocating they completely cease work on the Linux kernel? Or port the entire codebase over to another language? Isn't that a lot of work?

    26. Re:Maybe I'm missing something by i_ate_god · · Score: 2, Insightful

      If picking up any given language is straightforward, then why does everyone list the languages they know on their resume?

      Because it also can demonstrate knowledge of libraries. I picked up the Java syntax in one day. Then I had to sift through pages and pages of documentation for the standard SDK, and various other APIs and SDKs and whatnot. Just because you understand a syntax, doesn't mean you're efficient in programming that language. I know the syntax of Python, but I don't know it's quirks, so I'm not very good in Python.

      --
      I'm god, but it's a bit of a drag really...
    27. Re:Maybe I'm missing something by DrgnDancer · · Score: 3, Insightful

      As people have been trying (with varying degrees of clarity) to explain, the value of knowing C is not knowing C. It's in understanding how C relates to the theoretical underlying concepts of Computer Science. C is, in it's pure form, a VERY low level language, that can easily be used to demonstrate underlying Computer Science concepts. Start stacking layers of libraries on top, and C is no more or less abstract than any other language (well still a little more really). If you deliberately avoid using the high level libraries though, you can use C to teach about memory addressing (pointers), networking (without high level libraries, C can be used to work directly with sockets), operating systems (whee, semaphores!), all kinds of stuff. It's really close to the metal, and with it's fancier features stripped out it's metaphors nearly precisely overlap with the metaphors of the machine beneath it.

      Learning C for programmers is a lot like learning Physics for Electrical Engineers. Sure, most of the time they can rely on established formulas to do their jobs. Most of the time an understanding of the underlying principles of electricity is almost an afterthought. Sometimes though, they find they have a need to know the why as well as the how; then they're glad they had to take Physics in school.

      Pascal can also serve this purpose, but C has sort of a dual benefit. If you learn the underlying basics with Pascal, you learned theory. If you learn the underlying basics with C, you learned theory, plus a language that you may get a chance to use sometime. C is less common that it used to be in real world programming, but it's still infinitely more common than Pascal, and its basic syntax survives in C++, C#, Objective C, etc.

      --
      I don't need a million points of light, just two points of multi-mode fiber and a 10 Gig-E router.
    28. Re:Maybe I'm missing something by Dragonslicer · · Score: 3, Insightful

      There's no denying it, C is the basis of everything in computing.

      That's funny, when I was getting my computer science degree, we learned that assembly and/or machine code is the basis of all programming. If you ask a computer science professor, they'll probably tell you that mathematics is the basis of everything in computing. If you ask a computer engineering professor, they might tell you that transistors or logic gates are the basis of everything in computing. If you ask an electrical engineering professor, they might tell you that circuits are the basis of everything in computing (or they might tell you that they don't care and to go away). If you ask a physics professor, they could come up with almost anything to tell you is the basis of everything in computing.

      Personally, I think it's just turtles all the way down.

    29. Re:Maybe I'm missing something by DarthVain · · Score: 2, Insightful

      In many cases Managers don't really get it either, and many times they are the ones doing the hiring.

      People make fun of the "Required X years of Y programming language" yet Y hasn't been around for X years yet. However it is sadly true, at least in a relative way.

      I find myself not bothering to even apply for some jobs because of all the silly requirements they ask for. I graduated Computer Science back in 2000, so the languages I learned in University were stuff like Pascal, Cobol, C, VB, Assembly, etc... All the "newer" languages I either have no experience of very little. I have dabbled in Java and a few others, but its not like its a big part of my current job (which is more DBA focused).

      So either you are coming from school with the newer languages, and thus lack the experience needed, or you do it as part of your current job, in which case unless you are unhappy, or not getting paid as much, why bother. I guess if you had a job and lost it quite recently it might work, but that's about it. The other thing is considering what some of these jobs pay. I look at the requirements, and I am thinking, IF I had those requirements what the hell would I work for you at 60k, when I could easily make more elsewhere (or even doing other things with less qualifications). The other thing I hate is when they require experience in software that costs thousands of dollars to obtain, and is not commonly taught anywhere. The only way to get the software or the training is on the job, which basically makes it impossible to break into. That is to say I basically need to be doing that job right now in order to even apply for it.

      Trying to explain to HR or some managers that you have a background in programing, and that picking up a new language isn't that big a deal just doesn't fly. You are not considered, and you do not get an interview. I know one of my university friends that currently still works in the business successfully, used to just lie on his application and figure it out once he got the job (Perl, and Python he did that way). Anyway, that's all that these HR and managers are promoting, is to lie so you can get the job, not exactly the best way to go about it.

      Anyway I have just recently been looking at re-evaluating my position and looking at new opportunities and these are some of the frustrations I have felt.

    30. Re:Maybe I'm missing something by HaZardman27 · · Score: 3, Interesting

      Obviously in today's abstract and web based software industry, an understanding of computers isn't as necessary to program as it used to be on a day-to-day basis, however every programmer should still be required to know these things. A mechanic that only knows how to change your oil and rotate your tires wouldn't be a very useful mechanic; the same logic should apply to developers.

      --
      Apparently wizard is not a legitimate career path, so I chose programmer instead.
    31. Re:Maybe I'm missing something by Aurisor · · Score: 2, Interesting

      If you're not in possession of a solid understanding of computers, or at least in the market, programming is probably not the profession for you.

    32. Re:Maybe I'm missing something by BitZtream · · Score: 4, Insightful

      Nor would anyone call him a mechanic, they'd call him a JiffyLube employee.

      A lack of understanding of how computers work makes you a person who writes code, not a programmer.

      My 88 year old father can write code to do some minor things, that doesn't make him a programmer, that makes him a guy who speaks a minor amount of VB but in general has no clue what he's saying.

      My guess would be you're a guy who writes code, not a programmer.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
  2. C is key by nailchipper · · Score: 4, Insightful

    What a shame. C is an important foundation.

    --


    what is nailchipper?
    1. Re:C is key by 16Chapel · · Score: 4, Insightful

      Quite. And VB is a horrible abomination.

      In all seriousness, if you learn a C-based language it gives you a huge headstart towards learning the other C-based languages, and there are far more of those out there than Basic-type languages.

    2. Re:C is key by Threni · · Score: 2, Funny

      Look on the bright side - people can now learn VB6 instead...

    3. Re:C is key by Mr.+Freeman · · Score: 5, Insightful

      I'm not a CS major, I'm a mechanical engineering major and I just wanted to learn how to program as a hobby. I found it a lot easier to learn C than anything else I tried.

      I'm not going to pretend to know how to program very well but I thought that because C didn't do very much for you that it gave a better foundation for learning other languages. I did learn a bit of python, but it was easier after learning C because you know what's going on "behind the scenes" so to speak.

      For example, I had this weird ass problem in python where, for some reason, it was treating an integer value as a string. In C you have to specify variable types when you declare them. Because I knew about different variable types I knew that I had to look up how to explicitly declare variables as certain types in python. In C, you have to learn things like variable types, casting, pointers, etc. just to make a program that does anything at all. Languages like python are taught such that you completely gloss over these subjects and just assume that the computer magically knows what you're trying to tell it to do. When you run into a problem you can't fix it because you don't know what's actually going on.

      I suggest that introductory programming classes use C rather than other things. The counter argument I generally get is "We want the students to make a program that actually does something so that they can write some programs after only a couple lectures". This loosely translates to "we want to entertain the students rather than teach them."

      Although perhaps there's a middle ground. For non-CS majors, teach a language like python. Python allows for quick programs that, while not amazingly efficient, don't really need to be. For example, formatting a file with a shitload of data from a strain gauge. This might have to be done a total of, say, two times and thus efficiency really isn't an issue. Furthermore, non-CS majors (like mechanical and electrical engineers) don't have to understand the very basics of programming, they don't have much relevance to their field.
      For CS majors, start off with languages like C because their job is to understand the very very basics.

      --
      -1 disagree is not a modifier for a reason. -1 troll, flaimbait, redundant, overrated are NOT acceptable substitutes.
    4. Re:C is key by TheRaven64 · · Score: 2, Funny

      Using the C preprocessor teaches you one very important thing:

      Think very carefully before releasing an ugly, badly designed, piece of crap, because in 40 years time it may still be part of an ISO standard and entire generation of programmers will hate you.

      --
      I am TheRaven on Soylent News
  3. So what? by jawtheshark · · Score: 2, Insightful

    What's the big deal? One programming language is like the other, at least within the same paradigm. If you can program in Pascal, you can program in C. If you can't you learned a syntax and not "how to program". Basically, when I was a computer science student, we got one language taught for the concepts and the rest was just "swim or sink". That's the way it should be. I really have a problem with programmers who have problems switching from their preferred-language to another because it's unfamiliar. Well, no, it's not... It's the damned same thing with diverging syntax.

    Basically, the premise of the Exam Board is quite right: the goal of programming is to have problem solving skills. Whatever language conveys that is completely uninteresting to me.

    Oh, and just for the record: programming is just a small part of the computer science curriculum... or at least it should be.

    --
    Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
    1. Re:So what? by Anzya · · Score: 2, Insightful

      That might be the case but your chances of getting hired is greater if you have C on you resume than pascal.
      If they wanted a language that is simple to learn they could have chosen python instead. It's just as easy as pascal but has the benefit that it is actually used in the industry.

      --
      "This message was brought to you by Sarcasm and Troll Feeders United (or STFU, for you un-hip people)."
    2. Re:So what? by Antiocheian · · Score: 2, Insightful

      If you can program in Pascal, you can program in C

      But if you can program in C you are wasting your time with Pascal.

    3. Re:So what? by Matthew+Dunn · · Score: 5, Insightful

      What's the big deal? One programming language is like the other, at least within the same paradigm. If you can program in Pascal, you can program in C. If you can't you learned a syntax and not "how to program". Basically, when I was a computer science student, we got one language taught for the concepts and the rest was just "swim or sink". That's the way it should be. I really have a problem with programmers who have problems switching from their preferred-language to another because it's unfamiliar. Well, no, it's not... It's the damned same thing with diverging syntax.

      Basically, the premise of the Exam Board is quite right: the goal of programming is to have problem solving skills. Whatever language conveys that is completely uninteresting to me.

      Oh, and just for the record: programming is just a small part of the computer science curriculum... or at least it should be.

      There's a lot more that goes along with a language Sure, if you know how to code OO, use iterators, understand switch statements and other language-related elements you can change languages and write an algorithm or two But Do I know best practice for everything? If I'm a c# programmer. Do I know important differences between Ruby 1.7, 1.8. 1.9? Do I know what the best inversion of control framework is? Or what the best ORM to use is? Am I familiar with how to use it? If I'm a Ruby developer am I aware that in a .NET language if I add two strings together in c# "Hello" + "World" It constructs a new immutable string. But if I do String.Format("{0}{1}","Hello","World" it is much faster and uses less memory? Will I know all the proper coding conventions, casing, tabbing, indenting styles. There are hundreds if not thousands of useful pieces of language, compiler, and environment specific knowledge which is useful and can be pretty obvious if you do not have it. I've been playing with c#, ruby, gcc. For around ten years commercially and I still need to invest significant re-education if I swap from say ruby to gcc or ruby to c# after a year.. There is a reason that people tend to stick with one or two primary languages.

    4. Re:So what? by Antiocheian · · Score: 2, Interesting

      But if you can program in C you are wasting your time with Pascal.

      Explain that to the programmers

      Linux, Windows, (Open)Office, Firefox, Nethack, Doom, etc, etc, etc.

    5. Re:So what? by Anonymous Coward · · Score: 2, Informative

      We're talking about A Levels here, two years of education between 16 and 18. To get hired into a serious position as a programmer a Computer Science degree is usually required.

      Disclaimer: I learnt Pascal during my Computing A Level and it didn't do me any harm!

    6. Re:So what? by multipartmixed · · Score: 2, Insightful

      > in a .NET language if I add two strings together in c# "Hello" + "World" It constructs
      > a new immutable string. But if I do String.Format("{0}{1}","Hello","World" it is much
      > faster and uses less memory

      REALLY?

      JavaScript engines -- with the exception of the one shipping with IE prior to version 9 -- have been cheating on this for performance reasons for a decade. It's a very important performance optimization, because of the html += "" idiom that is so prevalent on the web.

      A similar idiom to String.Format exists in javaScript as well: string = [ "Hello", "World" ].join();

      I think the lesson here is one of:
      a) .NET languages suck, or
      b) Premature optimization is the root of all evil

      Maybe both :p

      --

      Do daemons dream of electric sleep()?
  4. Ah, Memories. by daitengu · · Score: 3, Funny

    This warms my heart, the first language I learned was TurboPascal just so I could program Door Games for my BBS. I still run a BBS I still haven't written any door games.

  5. Oh yea. Teach them non mainstream stuff by unity100 · · Score: 4, Insightful

    to teach them hypothetical skills in watered down, obscure platforms so they can curse you for the rest of their lives when they start working in the industry.

    i was taught fortran and pascal. i dont remember shit, and i dont think i gained much from them.

    programming can be taught with any language. problem solving can be taught with any language. it is better to teach these using a language they WILL use when they actually get into industry, than with stuff they may rarely come up against.

    uk was going down the drain for some years. i see this as another absurd jacobinism.

    1. Re:Oh yea. Teach them non mainstream stuff by Rockoon · · Score: 2, Interesting

      When I was 17, that would have been me.

      By that time, 6502 and 8086.

      --
      "His name was James Damore."
    2. Re:Oh yea. Teach them non mainstream stuff by RegularFry · · Score: 4, Insightful

      Alternatively, if the first thing they learn is that they *will* have to learn new languages, and that they can't rely on a single skill-set to carry them through their career, that's got to be a good thing.

      --
      Reality is the ultimate Rorschach.
    3. Re:Oh yea. Teach them non mainstream stuff by unity100 · · Score: 2, Insightful

      yea. and we need bazillions of computer 'scientists' in the industry, as can be seen from the hirings ............. not.

  6. Visual Basic? by tagno25 · · Score: 4, Insightful

    Why are they accepting Visual Basic 6, but not C++, Ruby, or even LISP?

  7. University... by unts · · Score: 2, Insightful

    This is why we can't really use sixth-form qualifications in this area as an indicator of a candidate's ability to program - we have to assume they know nothing, and look to Maths & Science qualifications for indication of their skills.

    I learnt Pascal and VB6 back when I was at sixth form. Then I went to uni, was taught C and thought to myself "why didn't they teach us this!? I know NOTHING".

  8. Yes, and no by Mathinker · · Score: 2, Insightful

    When I took the introductory course to computer programming in college, we actually were exposed to other programming paradigms than the standard industry ones. It included Prolog and SNOBOL, for example. Even though I would agree that neither of those languages has any practical application in industry today, I still think that it was an important part of my education to see these kinds of extremes (no, that doesn't mean I think that the brainfuck language should be taught to high school students --- anyway, because of its name, that would be impossible in the US).

  9. Teaching logic, structures and algorithms I hope? by roman_mir · · Score: 3, Interesting

    I hope these courses are all about teaching the way to construct programming logic, to think about algorithms, to apply data structures correctly because that can be done in any language (depending on the paradigm that they choose to teach of-course, and it looks they are going with the most common, imperative one, of-course the choice of languages also shows that they are not going into declarative stuff.)

    Any one of these language can be used to teach normal structured programming with normal process flows, data structures. Object oriented stuff should not be taught until the students have basic understanding of the principles of programming.

    But it is too bad they are not including at least some Assembly and C. Actually they should do an overview of different languages and explain that there are different ways to program, they should explain the differences between paradigms, approaches, languages, they should explain computer organization as in how a machine sees the code, how does the code interact with the memory, processor, peripherals. I think it is important at least to know OF these things, if not actually completely knowing how to use them.

    I think before you teach anyone actual programming logic, structures, you explain how a machine executes the commands, so computer organization (state machines, memory, processors) + Assembly, even if only for a few hours this should be done first.

  10. Dumbing Down by bhunachchicken · · Score: 5, Informative

    "The board "highly recommended" switching to Pascal/Delphi because it is stable and was designed to teach programming and problem solving. Teachers planning to use Java are warned that many universities are considering dropping it from their first year computer science programmes, "as has happened in the US"."

    Okay, seriously - in London, where I work, I don't think any of these guys would be able to get a job once they had graduated. Job listings I have looked at demand the following skills:

    Java (with Spring, Hibernate, Multi-threading, low latency, Swing, Junit)
    C#
    C/C++ (financial organizations still turn to C for high volume number crunching)
    Unix / Linux (are they going to drop this next???)
    SQL (Oracle, Sybase, SQL Server)
    Subversion, Clearcase, CVS

    None of this stuff can be picked up quickly, so the earlier you start, the better. And, no offense, but I rarely - if ever - see a job listing requesting Pascal/Delphi.

    Is this a case of dumbing down or are students just becoming lazy(-er)..?

    1. Re:Dumbing Down by Anonymous Coward · · Score: 3, Funny

      Is this a case of dumbing down or are students just becoming lazy(-er)..?

      Maybe this can shed some light on the matter?

      Something is dumbed down and I don't think it is the students.

    2. Re:Dumbing Down by jareth-0205 · · Score: 4, Insightful

      Is this so surprising? There was a time when a University degree was supposed to be about learning concepts and theory, not specific skills. Skills were to be got as an apprentice at a company, companies used to train their new recruits. It seems that employers now just expect a University graduate to emerge with all the skills they need in their particular field and have to do no training. I can't help feeling extremely cynical when I hear companies complain about the quality of graduates when they've rescinded on their part of the bargain pretty completely.

    3. Re:Dumbing Down by Anonymous Coward · · Score: 2, Insightful

      Er, we're talking about A level Computer Science. No-one is going to get a programming job in London after "graduating" from that unless they already know how to program.

      Anyway, Computer Science is not a vocational subject. The importance is to use a language which allows you to focus on the bits you *want* to teach, rather than getting embroiled in a bunch of irrelevant pointer arithmetic or boilerplate class hierarchy bullshit.

      There are then a bunch of companies who will employ you and train you how to program *in a team* on the basis that you're a smart computer scientist. And it's the *in a team* bit that requires Java or whatever.

      But jobs that require knowledge of a specific source-control system are best avoided. Those kinds of jobs are looking for idiots who will barely pass muster, and they'll be dead-ends.

    4. Re:Dumbing Down by beh · · Score: 2, Insightful

      Sorry, but I'm going to disagree with you on your assessment:

      Yes, you are right that most job posts now demand the skills you mention.

      Yes, you are right that there is probably no Pascal/Delphi job post.

      Like you, I don't agree with their offered choices.

      But - you are forgetting a few things here:

      a) There are no Delphi job posts in part because there is no real supply of delphi developers - C/C++, C#, Java, SQL developers are a dime a dozen by comparison. Companies won't start large scale Delphi developments, if they feel it will be difficult to scale up teams for it due to the lack of candidates.

      b) It doesn't matter whether they're offering Java, C, OR Pascal, because they are teaching programming, not development. And that's my main problem with it - teaching some kid programming (as in the syntax of a language and very basic development skills) is no real help for them in the long term. A good developer can pick up new languages reasonably quickly - as long as the concepts behind the languages are well understood - after that, picking up a new language is primarily about the syntax and the libraries - still a potentially steep learning curve, but less so, than some kid who can program a very simple app in Pascal but has no clue about what else is involved - has no understanding of development patterns, of typing concepts, the differences between functional, OO, plain old structured programming languages, stack based systems (like machine code), ... Also, without an idea of those concepts, you may very quickly end up with a virtually unmaintainable piece of code - not there isn't enough of that out there already.

      c) Starting them off on a 'teaching' language like Pascal has the big advantage that it's something they can get the hang of programming on first - and if they feel that's their thing and then go on to start on a development career, they will learn a language actually used out there at the same time when they get taught about other aspects of development that would be way too much for an A-level course.

      Personally, the first languages I learnt were Basic (on a ZX Spectrum at home), and Logo (yes, the turtle graphics thing) at school (in ~85/86). I don't really want to picture the kind of code I would have written had I learnt C BEFORE learning about some more development constructs.

      I would compare it a bit to learning 10-finger typing - if you have been using a computer before, you probably learnt to type reasonably quickly using your index fingers and the thumbs for the space bar. If you then start being taught proper 10-finger typing, you start of being at the top of the class in terms of speed in the beginning - but are more likely nearer the bottom of the course at the end of the training because you're still mainly falling back to your index fingers most of the time. Personally, it took me several years after a typing course at school before I could type 'blindly' using 10 fingers. It took me that long to 'unlearn' the 2-finger typing methods. By choosing a 'throw-away' language you're not really going to use in your later career, you provide the opportunity for a clean break into a new language once you begin understanding things like time complexity, memory management/requirements, algorithms, etc.

      So, when it comes to teaching a programming language at school - I will gladly support teaching a 'teaching language' as opposed to a 'real world' language.

    5. Re:Dumbing Down by TheRaven64 · · Score: 2, Insightful

      There are two issues here. One is universities not teaching things. The other is students not learning them. I agree that a computer science course shouldn't be teaching things like source control or the details of a specific programming language, but that doesn't mean that the students shouldn't be learning them. If you're doing a degree in a particular field then you should be interested in it, and you should be motivated to learn more outside of the course. Universities aren't schools. They aren't meant to teach, they're meant to provide opportunities for learning. When I was an undergraduate, some of these came from my course, others came from the computer society.

      The course gave me a solid theoretical foundation, the computer society gave me some practical experiences. I learned how to admin a network of Linux machines, practiced programming in C and C++, learned how to use PHP (thankfully, I don't need to do that anymore) and a variety of other things via the computer society and other non-course-related projects.

      --
      I am TheRaven on Soylent News
  11. That's a travesty by jlebrech · · Score: 2, Insightful

    They should have dropped VB and PHP, maybe also drop delphi and introduce Ruby.

  12. Atleast they still allow Java by mwvdlee · · Score: 3, Insightful

    I'm not particularly fond of Java, but atleast hey have ONE alternative that is widely used in in the industry.

    VB6 and delphi are dying languages as far as employment opportunities are concerned and Python isn't nearly as popular as PHP. I think VB.NET could get you a low-paying entry-level job though.

    The common denominator of the allowed languages is that they do not allow low-level programming. C may not be the most common language in the industry, but it gives you a great foundation in understanding what actually happens inside all those object, libraries and frameworks.

    This move is endumbening students ;)

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    1. Re:Atleast they still allow Java by Rockoon · · Score: 3, Insightful

      C may not be the most common language in the industry, but it gives you a great foundation in understanding what actually happens inside all those object, libraries and frameworks.

      You are just another guy that thinks pointers are special (that's C's only low level feature.) Don't kid yourself.

      The last thing you need to know about is pointers if you want to understand the stuff you listed. What you need to concern yourself with is the algorithms and data structures employed, to that end references are as good as pointers.

      I am telling you this as an assembly language programmer, so don't for a second think that I am brushing off pointers as not useful. I just know that they do NOT offer insight into the things you listed.

      --
      "His name was James Damore."
    2. Re:Atleast they still allow Java by Rockoon · · Score: 2, Informative
      Why the restriction to Java? I don't know Java and suspect that if there is a problem doing it, its through artificial restrictions imposed by purism ("procedures shouldn't modify their parameters").


      C#:

      void swap(out int x, out int y)
      {
      int temp = x;
      x = y;
      y = temp;
      }

      And then there is VB.NET:

      sub swap(byref x As integer, byref y As integer)
      dim tmp As integer = x
      x = y
      y = tmp
      end sub

      If freaking visual basic can do it, what the hell do you think is special about C in this regard? Nice job cherry picking Java tho.

      --
      "His name was James Damore."
  13. Then why not C? by mangu · · Score: 4, Informative

    If you understand programming, picking up any given language is straightforward.

    How can you understand programming if you don't understand how it works under the hood?

    Teaching assembly (which CPU?) wouldn't be practical but C is the next best thing. I agree with you that any programmer should be able to pick up a new language without too much effort, but unless you know how the internal structures of the programs work you will never be able to write good code, at best your code will be painfully slow, at worst it will be outright dangerous.

    If only one language is taught, then it should be C for anyone who expects to be a professional programmer, knowing C they can easily pick up any other procedural language. A programmer who doesn't know C is like a doctor who doesn't know anatomy.

    1. Re:Then why not C? by Halo1 · · Score: 2, Insightful

      If only one language is taught, then it should be C for anyone who expects to be a professional programmer, knowing C they can easily pick up any other procedural language. A programmer who doesn't know C is like a doctor who doesn't know anatomy.

      I think you could say the same about Delphi-style Pascal. You can go as low level as in C there (and believe me, many people do, which is a pain if you develop a cross-platform Delphi-compatible compiler), and as a bonus you also learn an object model that's pretty much identical to Java's.

      --
      Donate free food here
    2. Re:Then why not C? by confused+one · · Score: 4, Informative

      First of all, I believe they're talking about a U.S. high school level course. Second, having learned on BASIC and Pascal myself, I can assure you that you can learn fundamentals and internal operations using those languages.

    3. Re:Then why not C? by seanellis · · Score: 5, Insightful

      Why not assembly language?

      Build up from the very bottom. ARM assembly (disclaimer - I work for ARM) is ubiquitous and pretty close to an idealised assembler. Dev kits are available for cheap.

      Then you build up through structured assembly, C-like languages (PASCAL?), and so on. Otherwise, it's like trying to build houses without understanding what bricks are.

      That's the way I did it, except being as how I'm old and crusty the assembly language I started with was SC/MP, and we also had a load of BASIC thrown into the mix.

    4. Re:Then why not C? by mangu · · Score: 2, Interesting

      I think you could say the same about Delphi-style Pascal. You can go as low level as in C there

      I'd say you are 99% right, but not quite. Pascal has a few abstractions that isolate you from the machine, like the set type for instance.

      Also, AFAIK, standard Pascal does not have function pointers, although I believe many versions, including Delphi, have implemented their non-standard extensions for this. Without function pointers it's very hard to do scientific programming, try writing a generic procedure to integrate a function, for instance.

      I learned Pascal in the early 1980s, when the computer I had was an IBM PC with a 4.77 MHz CPU. I did a lot of programming in Turbo Pascal version 3, but I ended learning C because there were some operations I couldn't do with Turbo Pascal. After I learned C, I never felt the need to use Pascal anymore.

    5. Re:Then why not C? by robvangelder · · Score: 5, Interesting

      I agree and disagree.

      My first programming language was Motorola MC68000 on the Amiga 500. I must admit, programming languages are easy once you know what the code compiles into.

      However, object oriented programming was very, very alien to me. There are some programming topics that can't be taught by learning assembly alone.

    6. Re:Then why not C? by Halo1 · · Score: 3, Insightful

      I think you could say the same about Delphi-style Pascal. You can go as low level as in C there

      I'd say you are 99% right, but not quite. Pascal has a few abstractions that isolate you from the machine, like the set type for instance.

      Yes, it has both high a low level abstractions. I meant that you can go as low level as in C. You indeed don't always have to though.

      Also, AFAIK, standard Pascal does not have function pointers,

      It does have them: http://www.moorecad.com/standardpascal/iso7185.html#6.6.3.4%20Procedural%20parameters

      although I believe many versions, including Delphi, have implemented their non-standard extensions for this.

      Delphi did introduce a lot of non-standard extensions to Pascal (and in fact, the way it implemented support for function pointers is different form the ANSI ISO way). Nowadays, Delphi-style Pascal is however one of the most popular variants around and sort of has evolved into a de facto standard.

      I learned Pascal in the early 1980s, when the computer I had was an IBM PC with a 4.77 MHz CPU. I did a lot of programming in Turbo Pascal version 3, but I ended learning C because there were some operations I couldn't do with Turbo Pascal. After I learned C, I never felt the need to use Pascal anymore.

      I also learned Pascal first, though it was in the 90's. I now also know both Pascal and C, but still prefer Pascal. Keep in mind that Delphi-style/Object Pascal is more than C. It's more like C with the addition of Java-style OOP.

      --
      Donate free food here
    7. Re:Then why not C? by Opportunist · · Score: 3, Insightful

      You want to frustrate our new students this early? :)

      I hold that doctor and anatomy comparison and raise a language comparison. You want to teach kids a new language by telling them the grammar rules while not giving them any encouragement by giving them a way to communicate in it.

      You start teaching programming by rote learning. Seriously. Yes, yes, it's all wrong and it teaches you so many horribly wrong ideas, but that's where you start. There is a reason why many schools in the past taught LOGO as a first language to school kids. Because that gives you immediate feedback while requiring very little knowledge of the language itself.

      You have to understand, they know nothing at all about programming. That's already where many teachers fail to teach properly, especially if they are good programmers. The idea of procedural programming and that a program is executed step by step is already alien to them, something that probably you and me grasped immediately. VB, as condemnable as it may be, at least teaches this concept, and branches, loops and so on too. All that is HORRIBLY hard to grasp for many kids starting into programming. Especially if they don't have the mindset.

      I know it might sound odd, but I noticed that there are people who instantly catch on, who immediately understand the way a procedural language works, and people who have an incredibly hard time wrapping their mind around it. We don't just all start on equal ground here. And for you and me, teaching ASM is probably the sensible way to start, simply because we do understand those concepts for some reason. Call it talent, call it whatever you like, but it's anything but the norm.

      So starting with some high level language (JAVA would be great, IMO, simply because it prepares you for the C syntax. Yes, yes, a good programmer knows how to program, not his rotes, but these ARE NOT good programmers, they're beginners!) is quite sensible. Let them get used to the idea of procedural programming before you toss overhead at them.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    8. Re:Then why not C? by elrous0 · · Score: 2, Informative

      I heard once that the A-levels are the Brit equivalent of the U.S. high school AP course levels. And your point is well taken. I learned BASIC in my AP course study in high school back when home computers were still a bit of a novelty. And, even in today's object-oriented world, I was able to adapt that knowledge much easier to modern languages than most of my peers who had never studied any computer language before.

      --
      SJW: Someone who has run out of real oppression, and has to fake it.
  14. C is a terrible learning language by anti-NAT · · Score: 2, Insightful

    No array bounding, no memory protection, casts all over the place without any errors, subtleties like '==' vs '='. C is a language for people who already know how to program (well), not those who're learning.

    I like C a lot, however I'd hate to have learned to program in it. Fortunately I'd learned and had a strong foundation in Pascal first.

    --
    The Internet's nature is peer to peer - 20050301_cs_profs.pdf
    1. Re:C is a terrible learning language by Anonymous Coward · · Score: 4, Insightful

      The point of C as a teaching language is that hardware does not bound arrays, it does not protect memory, all data is just bits and can be arbitrarily converted to anything (even if it makes no sense to do so).

      Basically, if you grok C then you are an effective programmer but if you can only program in a "safe" language then you likely don't understand how anything works and it all seems 'like magic' and there's already enough pseudo-science in the world.

      (Of course, whether you should choose to keep using C after you understand the concepts is a different question)

    2. Re:C is a terrible learning language by rmstar · · Score: 3, Insightful

      The point of C as a teaching language is that hardware does not bound arrays, it does not protect memory, all data is just bits and can be arbitrarily converted to anything (even if it makes no sense to do so).

      Basically, if you grok C then you are an effective programmer but if you can only program in a "safe" language then you likely don't understand how anything works and it all seems 'like magic' and there's already enough pseudo-science in the world.

      There is a fallacy in there. A safe language just tells you when you are doing crap, so that you learn not to do it or so that it doesn't shoot you in the foot. It doesn't make your errors go away, it just makes them explicit.

      If you are good at programming in Pascal, it is not a big problem to learn C.

      What is more, people who learn with C often develop a control-freak attitude that hinders them in the adoption of such sensible things as e.g. garbage collectors.

    3. Re:C is a terrible learning language by Fzz · · Score: 5, Insightful
      Unfortunately our experience teaching undergrad CS students Java first is that they build a mental model of what's going on that is completely abstracted away from the concept of memory. They then struggle to understand performance issues, and when we try to get them to learn C later, they struggle because they not only need to learn C's idiosyncracies but also unlearn their mental model, which is a lot harder.

      We're actually about to switch back to teaching C in the first year (via long low-level projects for which it is well suited), as we've concluded the Java-first approach we've been using for at least ten years isn't working terribly well. It's nearly impossible for students to understand the advantages of object orientation when they haven't written complex code and haven't made the mistakes that lead to spaghetti code. So they use object orientation by rote-learning, which means they don't really understand when a lighter weight approach or a different language is appropriate and when it isn't. We'll still teach them Java and a range of other languages, but only when they've learned the reasons those languages help.

      Having said that, I don't really care what they teach at A-level. A-level CS is pretty nearly worthless - any reasonable university CS department will prefer you didn't do it, and that you'd done more maths or science instead.

    4. Re:C is a terrible learning language by marga · · Score: 2, Interesting

      I work as an Assistant Teacher in my local CS University in Argentina (actually it's Informatics Engineering, but it's almost equivalent to CS).

      For a while we've been doing a experiment of teaching Python in the first semester and C in the second semester. Even though learning C is still tough, I think this order works quite well. In the first semester the students get to learn the basics of programming, without having to learn the quirks of memory managing and the like, while in the second semester they can focus more on that, having a solid base of programming knowledge. Java/C# are taught after that, in the third semester, when focusing on OOP, design patterns and the like.

      I think that this makes an overall better experience for the students that approach programming for the first time. With students that have learned programming at their high-schools we usually spend the whole semester getting them to forget whatever stupidity they were taught.

      --
      Margarita Manterola.
  15. Try Scheme, or Haskell by surelars · · Score: 2, Informative

    If you really want a language "designed to teach programming and problem-solving", try Scheme or Haskell. Those are truly stable languages that will help students learn sound computer science principles, basic data structures, and programming principles.

    Once that's in place, learning a "real-world" programming language is straightforward. No programmer should master only a single language.

    And, yeah - C wouldn't be my choice for a first programming language either.

  16. No more C? by RenHoek · · Score: 2

    People no longer learning C programming?

    More work for me! :)

  17. A-Level, not Degree by mccalli · · Score: 3, Informative

    For those who don't know, these are 16-18 year olds typically and they would normally be using these exams as a stepping stone to University. They wouldn't be computer science specialists at this point.

    At this level, I agree with the decision. You're looking for aptitude and interest at this stage, not machine specifics. Pascal is a good language for expressing and solving problems and was enough to get my attention when I was doing A Levels twenty years back - in Turbo Pascal.

    Cheers,
    Ian

  18. Remember this is only A-level by Nick+Fel · · Score: 4, Informative

    For those outside the UK, that's the two optional years for 16-18 year olds at the end of secondary school. They're not churning out qualified programmers, they're churning out people who have a basic idea of what programming is and might want to pursue it at university. When I did the AQA Computing A-Level we were taught QBASIC and VBA. It didn't stunt my career too much.

  19. Computer Science != Programming by mattsday · · Score: 4, Insightful

    I think the common interpretation of Computer Science is extremely misleading. It's not about programming stuff, that's more of an IT application of computers. Instead, it's about understanding the science behind computers, for example to understand the mathematical principals of computing, operational effeciency and move it on as a tool for scientific endevour.

    To this end, the choice of programming language really doesn't matter - it's a tool that the subject uses either as a proof of concept or a learning point. C is fairly good for this as it exposes a lot of the inner workings of a computer, whilst being high enough level to be more or less consistent across platforms at a university level. However, that doesn't mean that knocking up a quick proof of concept in python or perl is less valid - or even visual basic if it helps understand the science behind the problem.

    In other words, I see no real worry here. If they stopped putting mathematics in a CS course or made it in to a programming degree I'd be concerned. If it's about using various tools for the job then I'm all for it. Hell, I wrote a pascal compiler in pascal as part of my degree - it wasn't about the programming language, it was about understanding the fundamentals of compiler design and implementation.

    --
    Now there's one hoopy frood who really knows where his towel is!
  20. A-level == first year of study? by gnalle · · Score: 2, Informative

    I think that the article describes which language that students learn during their first year of study. They can learn C afterwards.

  21. Re:The lowest common denominator by Halo1 · · Score: 2, Informative

    You don't seem to be familiar with Pascal/Delphi. It has manual memory management, differentiates between the stack and the heap, has pointers, etc.

    --
    Donate free food here
  22. Re:A-level first year of study? by Grundlefleck · · Score: 2, Informative

    GP is almost right. A-Level is lower, or lesser, than the first level of study at university. It is the culminating level for high school students. Unless other posters here expect high school graduates (at approx. age 18) to enter the university graduate market (without those 3-4 years of university learning), then none of them have grasped this.

    --
    I accept I know nothing. Insulting my ignorance is wasted on me.
  23. Well that would be part of the reason to learn it by Sycraft-fu · · Score: 5, Insightful

    Part of being able to write good software is actually understanding how computers think. All these things like objects, and types and so on are all constructs for making things easier for people. They are how we think, not how the processor thinks. The problem is, if all you ever learn on is languages that hold your hand, you end up not being as good a programmer. I see types like that all the time come out of the university where I work, as Java is about the only thing they like to teach. They have little to no understanding of how a computer actually works and cannot deal with lower level languages.

    Now I certainly wouldn't say C should be the only language you learn on, but it should be one of them. Learn how a computer works, and learn the power, and problems, that can be had from getting closer to the bare metal. Also then learn about higher level languages, and the advantages and disadvantages they provide. Basically, try and give students the understanding of how programming languages differ, and allow them to be able to appreciate that there are tradeoffs using different languages.

    Having a program that gets too stuck in high level languages risks producing the myopic zealot type programmers that can only write in one language and write very bad code because they are used to having the language clean up after them.

    Also, universities should endeavor to teach on what companies want. While a university degree is a theoretical degree, not practical training, that doesn't mean they have the right to be arrogant and refuse to try and offer theoretical training on real world tools. At the engineering department I work for, we try to do that. The software we use in classes is the software you'd use to do that sort of thing in the industry, when practical. That way you learn not only the electronics theory being taught, but you get practical experience with a tool.

    Same shit for programming. Teach students on languages that companies want. Guess what? C++ (and even C) and C# and such are those languages. Pascal is not. I don't care if some old fossil of a professor loves Pascal. Suck it up, learn a new language. Your job is to keep up on shit. Any educator that themselves refuses to continually learn should be fired.

    Teach students on a good cross section of languages that are currently useful. Show them the advantages and disadvantages of different kinds of languages and programming, give them a good theoretical foundation in how this all works. While you do that, do it using tools that they will actually be asked to use when they go and get a job.

  24. Re:Insider information by somersault · · Score: 2, Informative

    PHP surprises me though perhaps the kids find writing an interface in HTML too challenging?

    I think you've got that the wrong way round. To use PHP effectively to build a web app, I think you'd need a good basic understanding of HTML to start with. Of course it's been years since I used PHP, and at Uni we just used to generate raw HTML rather than using any fancy formatting libraries.. which is often what I still do, when I started programming I was living in an offline world and I'm still used to thinking I have to write everything from the ground up rather than searching for libraries to do what I want.. I suppose I learn more about how things work that way, but it's not very efficient.

    --
    which is totally what she said
  25. Plus, Delphi is an awesome teaching environment... by Motard · · Score: 5, Interesting

    I taught a class on Delphi to a group of mostly non-programmers. It was very successful. Consider...

    First project:

    1) Open Delphi
    2) Press Run

    You've just written, compiled, linked and executed your first Delphi program. We'll get into the details later.

    Second Project:

    1) Open Delphi
    2) Drop a button on the default form
    3) Drop a slider on the default form
    4) Double-click the OnChange event on the slider
    5) Type Button1.Left := Slider1.position * 10;
    6) Run

    Now I can show visually show you what this does and talk about components, objects, properties, events, syntax, variables, assignment statements, build cycles, etc. - all in ways that you can see.

    Plus, unlike Java or C#, I can show you procedural (non-OO) console app or service programming. And we can go all the way down to assembly language if you want.

    For Linux see Free Pascal and Lazarus.

  26. It's before college, not college itself by Aceticon · · Score: 2, Insightful

    What they're talking about is A-level exams. These are taken by high-school graduates before college.

    It's not that Comp Sci students will graduate without having learned those languages, it's that candidates for Comp Sci higher education will not be expected to know them.

    As unfair as it seems to some old hands in IT, nowadays the industry rarelly hires people without college degrees for Programmer positions, so this does not mean we'll be swamped by a wave of "semi-literate" programmers.

  27. What's wrong with it? by luis_a_espinal · · Score: 2, Interesting

    People setting the syllabus should be recommending, a modern, clean, free, cross-platform language. That means something like Python, Ruby, or Java.

    First, how do you teach system-level concepts with those languages. I would grant you that you can learn the basics of programing, Python and Ruby would be fine (not Java since you can't express things procedurally if a problem requires so.)

    But you can't divorce the basics of programing from the fundamentals such as programming on non-memory-managed systems without having to face (and learn to deal with) portability issues. This has been one of the greatest fallacies of all, to think you can efficiently cultivate programmers with an exclusive or almost exclusive usage of extremely high-level languages.

    Second, what's wrong with Delphi, as a teaching programming language. It has many (if not all) the strengths of Pascal-like languages (Turbo-Pascal in particular) while at the same time introduces new programming concepts that did not exist when Pascal and Pascal-dialects were conceived (properties come to mind.)

    Yes, Pascal has been hacked away into multiple dialects, but all capture innate qualities. OO and advanced pointer manipulation is usually very similar from one another. So for the purposes of teaching programming, any one modern Pascal dialect will suffice.

    Delphi has been an industrial language (however, niche it might be), and Anders Hejlsberg, the chief architect of Delphi, is also the lead architect of C#. C# (the 3rd-4th most widely used programming language in industry) has a lot more immediate roots in Delphi than on any other C-syntax-like languages.

    When we consider these facts in addition to Delphi's qualities as a modern programming language, I would say these are more than enough reasons to use it as one of the modern non-gc-babysitted tools for learning structured programming in both procedural and object oriented paradigms.

  28. Re:Computer Science, not Computer Programming by LizardKing · · Score: 2, Interesting

    Firstly, the A level is in Computer Science, not Computer Programming.

    A-level Computer Science is supposed to be a grounding in computing theory and programming - there is no such thing as a Computer Programming A-level.

  29. Bad, bad move by Lisandro · · Score: 3, Insightful

    The exclusion of PHP is debatible (is not really different from a gazillon other interpreted languages out there), but the exclusion of C, is, IMHO, a gross mistake. C teaches basic low-level concepts that other languages, outside assembler perhaps, dont even touch - memory management being the principal. Nowadays every developer accustomed to Java seems to think garbage collection is the end of all memory handling issues...

  30. See signature. by RingDev · · Score: 4, Funny

    As it was said before: "never take software advice from a bug tracking system salesman" -AV

    --
    "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
  31. Yes, of course it's still true. by wonkavader · · Score: 4, Interesting

    If you're a good programmer, programming languages are easy. If you're curious about a language, you can learn the basics of it in a few hours and be adequate in the language in a weekend.

    (Now, being good in the language requires more than that -- it requires a project or two, some refactoring and some time, but that's beyond what the poster said.)

    Even mediocre programmers can pick up the basics of any language quickly. The focus on just a core of languages, and often, just ONE language, which we often hear from job candidates and young posters on slashdot are a reflection of the many graduates coming out of CS departments these days who exhibit a distinct lack of talent. There are still some great programmers coming out of our CS programs, but there are many, many more drones than came out of such programs 20 years ago.

    Somewhere along the line, a CS degree became a way of ensuring yourself a job in much the same way a degree in accounting did, and CS began to get people who didn't really give a shit. "I'll pay the money, go to the classes, get the degree, and get a job. Then I'll be safe and happy until I die."

    Talented programmers pick up languages when needed, and they do it quickly. Programmers have curiosity about computing. Missing either of those means a bad programmer. Not knowing the basics of such a simple language as C equals a bad programmer.

    If you're bothered by that analysis, surf a little, write a few programs, read a few to see how things are done, and the point will be moot. Unless you're a bad programmer, in which case you'll find C very difficult, take weeks to get anywhere in the language, decide you need to take a class in C to learn it, never be able to figure out why your simplest C stuff won't run at all.

    And ya know what? The same goes for FORTRAN!

  32. Re:"Computer Science" is not a trade by swordgeek · · Score: 2, Interesting

    Agree completely. However, the industry is demanding CompSci degrees for work as a tradesman (programmer), and the Universities work towards that goal.

    Eventually we may learn to put programming into a two or three year diploma at a college/trade school, and use comp sci degrees for development of the field. This model works in most other fields, but the problem is that computing is so young that until about 20 years ago, 'mere programming' _was_ developing the field.

    --

    "People who do stupid things with hazardous materials often die." -- Jim Davidson on alt.folklore.urban
  33. Re:Plus, Delphi is an awesome teaching environment by BitZtream · · Score: 4, Insightful

    Just for your future reference, while technically you can call what you did 'programming'.

    By any acceptable definition of the word what you did was show how to use the Delphi gui, not teach programming, and that is a BIG distinction. You haven't taught anything but how to point and click.

    --
    Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager