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."
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.
It's official. Most of you are morons.
What a shame. C is an important foundation.
what is nailchipper?
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)
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.
Read radical news here
Why are they accepting Visual Basic 6, but not C++, Ruby, or even LISP?
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".
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).
They should have dropped VB and PHP, maybe also drop delphi and introduce Ruby.
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?
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
if you can't write c, you are not a programmer.
Wealth is the gift that keeps on giving.
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.
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!
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
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.
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.
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.
Sean Ellis
Follow OfQuack's antics on Twitter.
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.
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.
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
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
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.
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...
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