Reading, Writing, Ruby?
itwbennett writes "A BBC article outlines a push to make software programming a basic course of study for British schoolchildren in hopes that Britain could become a major programming center for video games and special effects. Can earlier exposure to better technology courses reverse the declining enrollment in university computer science courses and make coding cool?"
Assuming they do this the way public schools in the USA teach programming, don't bother. They've managed to suck all creativity and wonder from the process by making every activity copying code from a textbook without teaching the theory behind it, or mentioning the possible applications. I've seen so many people take high school level programming courses and come out not knowing how to program. This isn't because they're dumb, this is because it is taught in the same way you make someone memorize a poem they don't want to read. College courses are fine, but public school courses need revision. Creativity and real world applications of programming concepts is completely missing there.
To offset political mods, replace Flamebait with Insightful.
Information Science is a basic science, like any other, and in our world has a lot more immediate practical applications. It should be taught. Why can my son, very bright, in the 8th grade, tell me the layers of the atmosphere and the earths crust and evolution and basic physics, but can't tell me the difference between a bit and a byte? That's crazy.
"He who would learn astronomy, and other recondite arts, let him go elsewhere. " -- John Calvin, commenting on Genesis 1
With a good teacher there is no need for whiz bang fancy pants hook'em when their your graphics.
They need good teachers. Invest the money in training/sceening teachers properly. Cirriculum and all that other stuff is fluff from the people that want to sell text books and hardware.
Especially if paired with more math.
I was lucky; my dad taught me BASIC and algebra in grade school. I was too young to realize that math was supposed to be hard and un-fun; as a partial result, all these years later, I make a good living off both.
Check your premises.
I was under the impression that computer science was a bubble degree: the latest degree that people with any shred of scientific acumen and no clue where they wanted to go in life acquired as their ticket to an upper-middle class paycheck. So what's surprising and disastrous about the bubble bursting? Isn't that what bubbles do?
I always hear people on slashdot bitching that half the youngsters getting computer science degrees today are incompetent code monkeys at best, and yet then I read stories the next week about the problem of declining interest or falling numbers in comp-sci education.
Which one is the truth? Shouldn't you be happy to see enrollments decline? Aren't you glad to see fewer incompetent, bobble-headed lemmings graduating and going out to make a bad name for all of you self-proclaimed 'competent' computer scientists?
High school intro to programming should fill the same niche as shop class -- to get students interested in creating stuff.
Reading and writing is not enough for the regular mortal to be defined as literate nowadays. Programming is becoming ubiquitous in all modern activities and jobs.
As Douglas Rushkoff puts it, "Program or be programmed".
...Back in the 1980's when the programming I did caused a small robot to draw complex shapes on the floor. I crunched through an insane number of projects in four years, from mathematical problems to friezes for musical productions and outlines for stage sets.
I still remember how to program the Turtle, though the real-world applications of such a skill, I've since found, number precisely zero. It was and is still fun, though.
Operation Guillotine is in effect.
That is the real reason for declining enrollments. Also the reason that the smarter students are avoiding CS/IT.
Why go through all that trouble only to have your job offshored, or to end up training your H1B replacement?
If you want to make it cool, ban learning about it.
Say what? Is this what average people think programmers and software engineers do? Do they think the kids won't catch on that the reality does not look anything like that?
I have nothing against programming as a part of standard education. It is likely beneficial on multiple levels, not just because it teaches a useful skill but because it forces you to reason about and analyze systems in a somewhat rigorous way.
My issue is that they are apparently faking the real rewards at a very superficial level which generates little value in practice. You won't train a generation of great computer scientists by doing a bait and switch, and history suggests that really great computer scientists are rarely motivated by their ability to do parlor tricks for the adoring masses. Like with many other technical disciplines, the deep elegance that makes it rewarding requires long and serious study that most of society will never really appreciate except in a very indirect way.
Forcing students to take courses that 'teach' them things that they are unlikely to ever use because there is a chance that they will use them and/or it might have a tiny impact on their intelligence.
If it's optional, I don't have a problem with it. But I doubt most people are going to actually use this knowledge.
Filthy, filthy copyrapists!
It's not just about game theory. Space invaders will teach concepts such as blitting, game loops, event driven programming, arrays + for loops (with arrays, lists, etc), and the use of threading/timed while loops. It will probably be a great example of implementing object oriented programming, and requires support skills such as the creation of sprites in an editor such as GIMP, and sound effects in things like Audacity. It's not a big project, but it does cover a broad spectrum of topics in a very short span of time, and the student will have fun doing it.
To offset political mods, replace Flamebait with Insightful.
Why not just require every student study engineering, so that England can become an engineering leader? It's an equally simplistic proposal to solve a problem as the "require everyone to study something only a few will ever work with to solve a vaugely-defined non-existant problem"...
Ken
Actually, nothing beyond one link was "echoed". And the link was to a BBC interview they contributed to, so I'm sure they are ecstatic that slashdot picked it up.
If you haven't noticed, this has never been a site for investigative journalism and hard hitting original reporting, it's mostly blog that posts links to other articles and lets people comment on them.
What programming languages do many generic algorithms textbooks use? Pseudocode! Why? Because real code is 1) still full of useless boilerplate that has to be there for the benefit of the compiler/interpreter, not the software engineer, 2) overcomplicates the syntax, again for the benefit of the compiler, and most of all, 3) still stinks up code reuse!
Back in the day, Pascal was the teaching language of choice, and BASIC was the default option for amateurs. Pascal started as an improvement on Algol, which is perhaps the original structured programming language. Pascal has quite a number of ugly design decisions. First, it's too verbose and English centric, using "begin" and "end" for blocks. C's curly braces are much, much better. Pascal's data types are very limited. In at least the Turbo Pascal compilers, Pascal's string type was limited to 255 characters because they used a single byte to store the length. Strong typing may be good for keeping novices out of trouble, but it's simply a puritanical limitation for experienced programmers.
As for C, what I mean by boilerplate is stuff like "int main(int argc, char **argv)". And that also demonstrates what I mean about overcomplicated syntax. We know main takes 2 arguments. Why do we have to put parentheses around them? We don't put parentheses around an operator just for that. It's ugly to have to do something like "assign(&c,add(a,b))" instead of "c=a+b". Then there's the redundant requirement for a semicolon. In school, we pound on students to use proper indentation, and to put statements on separate lines. But most languages still require that extra bit of punctuation. May sound like trivial issues, but these little things matter. There's also the pointer nastiness, with those ugly '*' and '&' symbols everywhere. At least C++ cleaned that up a little bit, with the use of '&' for variables named in function prototypes, and Java went a bit further yet. But it all adds up to making programming more tedious than necessary.
The LISP proponents might be feeling a bit smug and superior by now. But you know what? Lots of Idiotic Single Parentheses also blows it on these issues. To do that simple bit of math, have to say "(= c (+ a b))" Make the programmer do it in prefix order. The advantage is that unlike infix, no parentheses are required to unambiguously state a mathematical formula, but then the language requires the miserable parentheses anyway! Ok, so you can have variable numbers of parameters, and say stuff like "(+ a b c d)", but that little compensation is not worth being required to use parentheses everywhere.
The humble command line has its own issues. It has become customary to flag all the parameters with letters of the alphabet, instead of requiring all the parameters be passed, and passed in a specific order. I always struggle to remember inconsistencies like the stream parameter being the first parameter in fprintf, but the last parameter in fputs. They messed themselves up with that one. I suspect they wanted to put the stream parameter at the end to be consistent with fputs, but could not because fprintf is one of the few library functions that takes a variable number of parameters, and the ad hoc way they enabled that meant the stream had to go at the front. This is not an issue with the command line. Scripting has had a revival of sorts, but is still looked upon with contempt. Perhaps Perl is the current scripting language of choice. It has many improvements over bash. I really like the built in hash data type, and everyone likes the regular expression syntax. But it sure borrowed a whopper from shell scripting, requiring these funny glyphs ($, @, and % mostly) for every single use of a variable name.
As for code reuse, look at the mess we have with libraries. OOP couldn't solve this problem, wasn't good enough. I think where OOP really missed was the entire idea of imposing a hierarchy on classes. Ideas such as CORBA didn't cut it either. C is perhaps the clo
Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
"College/University is not a trade school"
Yes it is. Of the people who go to college, only a tiny minority will say it is because they want to learn for the sake of learning. Likely, because learning no longer requires attendance at a physical university. What a university provides is a sort of certification. Everyone with a serious goal in life goes because they more or less have to go, in order to be allowed into certain fields. Getting into those fields makes a better life.
I might agree with you somewhat, so far as college does not teach a trade. It is a costly exercise in bureaucracy and wasting of 4-6 years of everyone's time at taxpayer expense for people who do not want to be there (for good reason). Of course, the source of that problem is opinions like yours - that college has some kind of intrinsic value. It somehow makes you better, hence, it is not a "trade school" which teaches you a trade. If this is the case or not is fairly irrelevant; it is not how it is seen by those in it, so it is not how it is treated by them.
Then, of course, there are those who use college as a buffer of party time between highschool and work. I'd dare say they make up a bigger portion of college population than either learners or goal seekers...
Great Intellect...
With a good teacher there is no need for whiz bang fancy pants hook'em when their your graphics
Speaking from own experience here
There was no one in my own country who could teach me what I wanted to learn
99.9% of the programming I learnt, I learned from many online Gurus
I am not from US nor Europe. I was just an Asian geek who fell in love with technology
When I started to go online, it was something known as "Fidonet"
I graduated from 400 baud to 800 baud to finally 3200 modem.
Then the 3rd world Asian country that I was from started offering "Internet", on 64Kbps broadband.
I posted questions, many many questions, and was helped by the many gurus that generously shared their knowledge with me and others
Step by step I learned. From basic to Pascal to C to Assembly Language
Muchas Gracias, Señor Edward Snowden !
My guess is that corporation fights, messy and confusing APIs, software patents and changing standards should drive most intelligent and creative people away from programming. Calling it "technology" doesn't help either.
Exactly to the point. Interest-based education would be the best option.
Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
First and foremost, programming isn't for everyone. I had to learn this the hard way, by many frustrating experiences of trying to teach people what is natural for me. Some, actually most, people just don't make good programmers. Yes, you can teach them how to do it, but they'll never be able to come up with sensible code themselves. They will know the functions and commands, but they will never grasp the mindset necessary. They will eventually maybe get the how, but never the why. And that simply isn't enough. That way you get rote programmers who will spend their time hunting for code someone else wrote and do some crappy copy/paste programming job. The only thing you accomplish is that this kind of "programmer" will muscle into the work force, push salaries down to the point where even people who could do some great programming stop aiming for the trade and would rather spend their paid hours in some idiotic number pushing job, simply because it's better paid. Like, say, me turning to IT security management rather than IT security development. I'm a far worse security manager than I was in secdev. But it's better paid. WAY better paid.
Then, coding IS already cool. For those interested in coding. I spend my spare time coding now, think I'd do it if I didn't think it's cool and it's fun? And you'll never make it cool for people who don't get an orgasmic rush from nifty code that works, from an optimization that shaves off 20% of runtime, they don't care. They don't bother. They will create code that "does somehow" what it's supposed to do to get over it. For them, it's not a passion but a burden. You get the kind of output that you get from anyone who has to do work he doesn't really enjoy, the one with the least effort necessary.
And finally, to rephrase the first paragraph and explain why people would rather go for BA majors than for engineering: Salaries. The crappiest BA number pusher gets more money than the best IT engineer. People follow the money, it's that simple. And as long as it's better paid to administrate than to actually do something productive, this is where people will go.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
In high school... I went to a special one called W.T. Clarke in Westbury New York... I had four teachers which were really amazing. The principle of the school decided that to teach computer programming, he'd hire a programmer. To teach electro-mechanical engineering, he'd hire a robotics engineer. To teach architecture, he'd hire an architect and to teach electronics repair, he's hire a TV repair technician. Oh... did the same for carpentry and other things as well.
He believed that if he could find these people with a love for what they do, who felt that it would be more productive to teach 30 new kids each year than to do the work themselves. The initial pay was that of an entry level person of the field which they were specialists in and the costs to cover tuition to the university to become a certified teacher as well. Upon completion of their degree, they would gain the additional money that had been paying for their university classes as salary. The end result was, nearly every person on my friends list on FaceBook from those classes are now working high level positions in those fields..... or as teachers. That's about a 70% success rate.
A key thing to understand about these courses is... they were elective courses. You had to do well in your normal classes or you'd be dropped from these courses. So, the students in these courses actually did better in their other classes than the other students as well. It's like forcing an athlete to pass their other classes or no football for them.
This system worked incredibly... the problem was, the principle had to fight for this. He demanded of the school district the funds to make this happen. He probably interviewed 50 people for each position before choosing someone. After all, with the investment he would need to make in a person like this, he didn't want to have to do it every 3 years. So he picked the right person for the job. Of course, in that school, he did pretty much the same for nearly all his teachers and in a school with 1500 students, that's a huge job. But, the end result was one of the best schools in New York and possibly the whole of the U.S.. He didn't piss away money on fancy landscaping projects like they do in California. Whenever he got the money to do anything, he improved the academics of the school first and if there was any money left over, he bought a lawn mower. He would even attempt to convince the football team and cheerleading squad to run fund raisers for those things to avoid having to use the normal budget for those things.
Mind you this was in the 80s and 90s. He set aside an area of the parking lot for kids to smoke. He felt strongly that he'd rather keep the students at school even if it meant letting them smoke on school grounds as opposed to having them skip classes to avoid getting caught smoking. These days, the parents almost certainly would lynch him for such a decision. Unlike other schools where the principle was some loser who deal out punishments. He let his subordinates take care of punishments. He on the other hand would take personal interest in any student he felt was going the wrong way. He understood that the kids who looked like "The wrong kind" could often simply be trying to define themselves as nonconformists. If some kids needed a "tough guy" reputation, he'd even pull them across the school and into his office by their ear for everyone to see, then sit down and play a game of chess with them and talk about things. Fact is, we as students didn't fear him for punishments. We feared that he would be disappointed in us... a raised eyebrow from him was enough to put nearly all the students in line.
I can go on and on about him. But the important thing more than anything else is that he made the school what it was. He built a team of the right teachers. He sacrificed new paint in the hallways for better text books. He focused on what was important in a school. People always talk about "The right teachers" and "Higher pay", but in retrospect, I must admit that the key to success is great leadership. Start with that.
Python has an attitude that little should be hidden. Ruby has lots of automagic and can be confusing for professional programmers let alone beginners. At the same time most important things are available in python. For a first language python would seem to be obviously better
=~ s,(.*),<sarcasm>$1</sarcasm>,g if any_point_you_wish();
This is probably going to end up as a grandpa Simpson style ramble. The important thing was that I had an onion tied to my belt, which was the style at the time...
I can see a lot of reasons that Britain developed a software industry.
In the 1980's British schools were encouraged to buy computers. The BBC Micro - made by Acorn, sponsored by the BBC. These allowed kids to start programming immediately. BBC's BASIC had move/plot style drawing routines which allowed kids to create something easily. So some kids were taught to program by being given ainstructions to write a program to draw a square. Most kids followed the instructions, copied the programs but didn't learn anything. A computer program was seen as basically an incantation. The lessons made no attempt to encourage you to work out how to draw, say, a different shape. However, some of us did (or at least I did) see how this simple program could be made more interesting.
Most kids when I was growing up had a home computer. Acorn and Sinclair had both launched in their home territory first, and the major consoles (Sega Master System and NES) were released a couple of years later than in the US. This gave home computers a lot of time to establish a very strong niche. In my middle class area, everyone had a Commodore 64 or a 48K Spectrum by 1987. 8-bit home computers were amazing for experimental kids. You could turn them on and start programming immediately. and they were good for games!
I think as a result of these factors, those kids who were actually interested in computers had plenty of encouragement to learn. The option to program the thing was staring them in the face!
A lot of kids won't learn programming. It's hard work and they find it dull. School lessons on the subject do nothing to reduce this impression. Programming mainly appeals to those nerds who like pure logic puzzles. These ones will learn to program when they realise it's an option, but most of them will get into it largely by accident.
That is quite a cynical view of higher education. What do you regard as a "serious goal in life"? An economic one?
Maybe things are different here in Europe, but in my experience, there is a substantial percentage of people doing CS out of genuine enthusiasm for the field. I don't see how being around bright people for a few years has no intrinsic value. I'd go as far as saying that it does make you better in the sense that you come in contact with ideas and concepts you wouldn't have seen in a trade school, as they - shockingly - cannot be monetized directly.
Of course, many of the same kind of people tend to choose jobs in research and education. I sometimes suspect that there might even be a little more to life than birth -> work -> death.
As someone who uses both, I probably wouldn't choose Ruby for the following reasons:
Lambda functions versus list comprehensions. Ruby has about 60 of the things attached to arrays. Python just has if/for/in and the same set of clauses found elsewhere in the language. Or to put it another way, far less keywords (ok, member functions aren't really keywords, but..).
Speed. Ruby has its uses, unless performance starts to become an issue, where you'll find yourself having to use something else
The indent thing. Here comes the flame war! Alas, the original intention for this is to force people to indent properly. Something which beginners fail to do.
Easier to extend with C. Via things like weave
Very clear syntax. The whole "there should be at least one obvious way to do it" motto is a good one. The sometimes optional but not always ? operator after function calls in ruby... why? Either make it obligatory, or get rid of it. The do |var| syntax is a bit misleading as well.
I wrote my first program at the age of six, and I still can't work out how this website works.
Programming is already cool. It's programmers that aren't, and most people don't want to become a programmer in order to get to the cool programming part.
We're like a colony of Leper Wizards. Everyone's in awe of the fact that we can create fire, but no one really wants to hang out with us long enough to learn how to do it themselves.
I find that, in any profession, there are very excellent people who do the job because they love it and there are other excellent people who do it because it pays well. I feel like you need both kinds of people.
Incidentally, there are also really bad people who do it because they love it, and there are plenty of mediocre people who do it for the money. Those people give both groups negative associations.
As for money, it is true that one can be very happy in life with the basics covered. It is also true that more money insulates you from disruptive events... if a new roof only costs a month of take-home pay, you are in much better shape than someone who has to scrimp for a few years to pay off the loan they took out for the new roof. I wouldn't want to give up too much time for money, but I also won't discount the value of more money. Even marriages are statistically more stable if money is not a recurring problem.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.