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)
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.
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).
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.
You can't handle the truth.
"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)..?
THE HONOUR OF THE KNIGHTS - CC Licensed Sci-Fi Novel
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?
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.
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 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.
People no longer learning C programming?
More work for me! :)
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
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.
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!
I think that the article describes which language that students learn during their first year of study. They can learn C afterwards.
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
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.
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.
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
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 := Slider1.position * 10;
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
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.
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.
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.
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.
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...
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
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!
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
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