British exam board removes C and PHP from Comp-Sci A-Levels
theregister.co.uk
theregister.co.uk
"The Computing A Level is not intended as a programming course but a course that covers the fundamentals of computing of which programming (and problem solving) form a key component."
I'd say that C is a key component of computer science; it is the closest thing to the hardware withholding assembly and machine code.
I think schools should teach C, Lisp, and Python. Paul Graham tells it well in his "The Roots of Lisp" essay (http://www.paulgraham.com/rootsoflisp.html), where he asserts that C and Lisp are the two clean programming constructs in which languages of the future will be based off (and this has held true in my opinion). Python falls in the middle of C and Lisp and thus is a useful comparison (and everyday-living) language.
No CS curriculum can ever both touch the whole spectrum of what there is to offer and be reasonable to mandate for all students. Inevitably, some students will want the minimum necessary for practical work and others will want to explore as many avenues as possible. The importance is in striking a good balance: exposing students to enough different paradigms to produce good computer scientists without requiring so much that they never get enough real experience with specific languages to be good programmers.
Using Common Lisp provides the option to do that, but there's still plenty from the realm of programming languages that would be left out. It might me a mistake to try to do too much at the high-school level though; C, Lisp and ML would allow access to a very broad range of programming concepts - far more than any three of the approved languages.
I don't think that it's an accident so many good programmers got started in BASIC then graduated to 6502 assembly. There's something powerful in that combination. We can go it one better with Python, followed by assembly on an emulated simple processor. Follow that with writing a simple compiler targeting the same processor. (In Python, perhaps.)
C is nice, but I've seen too many C programmers who really just think of the compiler as magic and have no idea what is happening there. To produce top-notch CS people, you should get as close to the machine as assembly.
Its a shame Lua isn't more widely used / known that would be an even better fit. Because its far more of a middle ground between those 2 than Python in my opinion, it gives you very little that you can do a lot with - for instance compare the singular Lua table with the wide choice of data structures Python offers.
Theres a great paper by Robert Ierusalimschy that goes through the multi-paradigm / extensibility that Lua offers:
There isn't enough time to learn C. We spent more time learning about cable types than actually programming.
The institutions choosing the languages to teach to students are crazy if they think choosing Delphi, Python, or VB will provide them with better opportunities in the future than C, C# or PHP. And if practicality isn't concern #1, then why not pick a language that's really well-suited to a CS education, like LISP/Scheme?
There certainly are some places where Java is on the outs, but this makes it sound like US universities have entirely moved away from Java, which is completely untrue.
In case you were curious, the intro class will be python, and then later classes will be ML and a new language that is a typesafe C (currently in development at CMU). After that, they'll learn C.
Of course, CMU is just one school, but it definitely represents a departure (and the lack of any mandatory OO-focused languages (yeah yeah, Python HAS classes, but you don't HAVE to use them) is weird).
I would argue that any teacher not comfortable enough with C to teach it at the high school level should not be teaching computer science fundamentals.
VB is a horrible language to learn, but the UK system of learning computing is the worst I've ever seen anywhere; I took it as a GCSE and at the same time as getting through a fair amount of Google Code Jam, Getting a job building web apps I managed to fail the web design module - was my site valid? yes, did it follow the spec? yes. I failed because I didn't submit my write-up as a .doc; instead I used a valid open .rtf format.
Now, let's look at the languages with momentum. MS has bet the farm on .NET and C# is the primary vehicle. The Mono project is going strong. The most important web programming language (if brain damaged) is PHP. And the language underlying ALL OF COMPUTING AND THE INTERNET is C and C++.
Um.
If we went with "the most important, even if brain damaged" then VB would've been the language of choice years ago. I'd rather go with, "whatever will produce the most savvy programmers." In this light, there are good reasons to pick Scheme. Before that, I would also opt for a simplified assembly language, with a simple compiler targeting that language. For the first intro course, Python isn't a bad choice. Look how many programmers in their 40's got started in BASIC, then graduated to 6502 Assembly.
The computing a level is a massive mess, though. The extent of programming taught is practically an afterthought and the curriculum is polluted by massively outdated stuff - i had to learn a textbook definition of baud rate and how to do binary subtraction on paper. The whole thing is in need of an overhaul.