4 ms·
I'm not from the UK, but I think this is silly. Consider their goal: "The Computing A Level is not intended as a programming course but a course that covers th
by elbenshira 16y ago
I'm not from the UK, but I think this is silly. Consider their goal:
"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 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.
- daeken 16y agoIn addition to C, some Lisp, and Python, I'd say that a strictly typed language would also be good. Some ML derivative would probably be good. At that point, you've at least touched the whole spectrum. (Well, outside of assembly, but as much as I love it, its usefulness is dropping every day...)
- rntz 16y ago"Touched the whole spectrum"? Hardly. What about logic programming languages (eg. Prolog), stack-based programming (eg. Forth), concurrent programming (eg. Erlang)? And that's leaving out more esoteric ideas like FRP (Functional Reactive Programming), the funky type systems needed for efficient purely functional languages, and the less-well-known OO constructs (multimethods, metaobject protocols, etc). 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.
- Zak 16y agoand the less-well-known OO constructs (multimethods, metaobject protocols, etc) 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.
- stcredzero 16y agooutside of assembly, but as much as I love it, its usefulness is dropping every day... 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.
- MarkBook 16y agoMy tuppenceworth Some high level language VB, C# or Java then the first half of Code by Charles Petzold then The elements of computing systems by Schocken and Nisan followed by the rest of Petzold's book
- _Lemon_ 16y agoAfter actually taking the course (okay, a few years ago now). I would say Python was the most useful in that list and then Java. There isn't enough time to learn C. We spent more time learning about cable types than actually programming.
- xenthral 16y ago"Python falls in the middle of C and Lisp and thus is a useful comparison (and everyday-living) language." 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: http://www.inf.puc-rio.br/~roberto/docs/ry09-03.pdf http://www.inf.puc-rio.br/~roberto/docs/ry09-03.pdf