Do Kids Still Program? 1104
From his journal, hogghogg asks: "I keep finding myself in conversations with tertiary educators in the hard sciences (Physics, Astronomy, Chemistry, etc.) who note that even the geeks—those who voluntarily choose to major in hard sciences—enter university never having programmed a computer. When I was in grade six, the Commodore PET came out, and I jumped at the opportunity to learn how to program it. Now, evidently, most high school computer classes are about Word (tm) and Excel (tm). Is this a bad thing? Should we care?" Do you think the desire to program computers has declined in the younger generations? If so, what reasons might you cite as the cause?
No there's MySpace (Score:5, Funny)
Re:No there's MySpace (Score:2, Funny)
Only the lucky ones.
Re:No there's MySpace (Score:4, Funny)
The rest get too excited about majoring in some science or engineering in college and end up at schools without females, let alone sex
Re:No there's MySpace (Score:4, Funny)
Re:No there's MySpace (Score:3, Interesting)
Yeah, it seems as most kids involved in computers are gamers or myspace addicts. Then there are the "script kiddie" wannabe criminal hackers.
It does remind me back in the day of the Amiga (late 80's,) a friend of mine and I had a dispute about C versus Basic, so we decided to have a programming contest on who could write a clone of Pong the fastest. Well, to make a long story short, my Basic friend won by about 15 minutes on something that worked, (I think it took us a little over an hour) but I still m
Re:No there's MySpace (Score:5, Insightful)
Re:Computer Classes (Score:3, Insightful)
Our school prides itself on being one of the best public schools in the state, and we have no notable programming/computer science classes. I believe our school had one when I entered in the 7th grade, as I seem to remember being excited about it, but it's since been dropped. We offer a class called "IMS", but, despite it being in the course description, I don't believe they've done any real programming.
And people still aren't any better off - I've fooled people into thinking
Re:No there's MySpace (Score:4, Interesting)
I haven't been in school in a decade, so I don't know how much worse it may have gotten, but things have been on the way downhill since before I was in school myself.
I've recently become a fan of Richard Feynman, and he has some scathing things to say about the teaching of Algebra when *he* went to school. I'll relate one of his stories as best I can from memory, but I do highly recommend reading his "memoirs" such as "Surely You're Joking, Mr. Feynman" even if the lectures he gave on physics do not interest you.
He talk about when he was learning mathematics himself, as a kid -- I believe he was about 10-12 and he'd taught himself algebra from a book called "Algebra for the Practical Man" or some such -- at any rate, his cousin (I think) was learning Algebra in school at the same time. And he told Richard he was having a hard time with some problem, say 2x + 4 = 8, solve for x and Richard said, "Oh, you mean '2'?" and his cousin said, "Yes, but you did it by arithmetic; we have to do it by Algebra."
Feynman then makes the claim that this is evidence of how the school system is in decline; he knows the important thing isn't how you get the answer, it's understanding how these things relate and (he explains all this much better than I do) that schools had invented this "process" called "Algebra" where you could follow some rote steps and arrive at the right answer with no understanding whatsoever of what you were doing.
Tell me if that last part doesn't ring true for the education YOU received in Algebra. It certainly does for me.
-Chris
It's not just programming... (Score:3, Interesting)
kids 20 years ago, is the total lack of
curiosity. About anything.
When I was a teenager, we talked about what it would be like to live in Alaska;
tried to figure out how to buy a sailboat so we could bum around the islands; bought motorcycles and made road trips to California.
If you mentione such ideas now, kids will just shrug and say 'whatever'.
There's no sense of adventure there anymore. No curiosity whatsoever about
anything. Includin
WTF? Ponies? OMG! (Score:3, Insightful)
Please attempt to increase your vocabulary and knowledge of literary references. In that way, you can avoid using vulgar, overused expletives to express your emotion. Cuss words certainly do have an impact, and are quite "edgy," but they are used as a substitute for learning a variety of strong vocabulary. I think in the coming years, you'll probably beg
yes, they do! (Score:5, Interesting)
they're programming calculators like the TI-83 Plus and TI-89
not only that, but they're learning C, ASM, and BASIC... wow!
Re:yes, they do! (Score:5, Interesting)
And it's a shame because pretty much any science degree you are going to be doing some programming for data analysis (MATLAB, python, etc....).
Thinking back I remember programming the Apple II's in our computer lab during lunch in 6th grade instead of playing outside. The neat thing about those computers is you had a very simple easy to use programming environment built into the computer. I'm not sure what computers are like now in schools, but my guess is they are heavily locked down and only include office applications and a web browser. That's just too bad.
Re:yes, they do! (Score:5, Insightful)
The school they are in now is much different. It's a mix of Macs, Windows, and Linux with no lockdown at all. No real net connection, but the research machines in the library have them. Ironically, even though the Windows machines are fully loaded with MS Software and games all the kids are clamoring to use the aging Mac G3s and the one old G4. I find it amusing, my self.
-WS
Re:yes, they do! (Score:3, Funny)
Re:yes, they do! (Score:3, Insightful)
-WS
Re:yes, they do! (Score:5, Insightful)
Yes there won't be any formal instruction. Is that a problem? Would any self respecting slashdotter posting at midnight on a friday admit that they needed to be taught programming by a teacher? How much formal teaching did you need to learn the Apple II's built in language?
Re:yes, they do! (Score:5, Insightful)
Well it's not so much that gifted kids need a teacher to tell them how to program. They need a teacher to encourage them, and that is what's missing. When I was in school teachers didn't mind me spending my time in the computer lab during lunch. And they thought it was really neat what I was doing. Now days I think they just care to put all the kids in a neat rows of seats and bore them to death with lectures.
Re:yes, they do! (Score:4, Insightful)
Re:yes, they do! (Score:4, Interesting)
I think many teachers already have a hard time anticipating what the computer is going to do. The thought of letting the kids make it do something different must be terrifying for them. At least, that was my experience.
Every so often, you find a clueful teacher or two. Problem is, as computers get more complex, the bar for cluefulness keeps rising and all the clued get jobs in industry.
--JoeRe:yes, they do! (Score:5, Insightful)
For the most part, I was lucky, though. It is the one way I can think of that having out of date equipment was a boon. Most of my schools had machines running windows 3.1, and therefore a full copy of dos including the qbasic.exe binary. That always excited me, being able to add functionality to a machine with something I created. Then again, I'm most of the way through a computer science bachelor's degree now...
Re:yes, they do! (Score:3, Insightful)
Re:yes, they do! (Score:4, Insightful)
Also 'back in the days', computers were cool but couldn't do anything so to say. You had to develop software you wanted yourself. What you did with computers was program them (and play a few games). Nowadays an abundance of cool applications is already available in many flavours. Why program?
Re:yes, they do! (Score:3, Interesting)
But, like many people have said already, the problem is one of initiative. I had the initiative to pull out my TI-82 and fiddle around with it enough so that, when I got the laptop, I had a decent
Re:yes, they do! (Score:5, Informative)
Mine did. Applications -> Utilities -> Terminal.app; % python.
Re:yes, they do! (Score:3, Insightful)
Now I've been using Linux for 9 years or so, and getting paid well to do it.
Kids can and will learn on their own if they want to
Re:yes, they do! (Score:5, Interesting)
In my school the computers are very very very locked down. If you right-click the desktop and go to Properties, there are absolutely no options. The screen is all fucked up to be blanked out of options. So we can't have roaming profiles (which baffles me, I cannot stand that shitty blue taskbar and crap like that). Also, by using network booting, they force Windows XP to load on some really really really old computers, which baffles me as well. Why is this bad? Because kids can't tell the difference! One girl was working on a video project (in shitty WMM) on an old computer. She then wanted to finish it off and get it encoded and when she hit encode the computer just froze entirely. She said she didn't save at all either (her fault). I had to tell her that she had to do it again and that if she saved it would be okay but then I had to tell her that these computers she was on are not made for video encoding and if they didn't freeze on encoding they would take a year to encode anything at all. She was then all confused because I used the word "encoding" and pissed off.
My only hope for not using that piece of shit IE at my school is putting in my flash drive (USB 1.0 on the old computers that have USB so I never try) and running Firefox off of it (which works okay). I can also run several other apps. Otherwise, I wish my school would use OpenOffice also instead of buying a million licenses for M$ software (Office) (Right now I have to keep OO and M$ format on my flash drive). Whenever there's a legally freeware alternative to anything, it's like they completely ignore it. Firefox would be great on the systems, along with the teachers using Thunderbird instead of Outlook, etc.
As far as programming, schools get a huge discount when they join some kind of thing with M$ and then they get Visual Studio and the license also allows students to take it home and install (I pirate mine for now). My school has not done this and I don't think they plan to. Since I'm taking the online course in AP Computer Science next year, I have yet to figure out how one would do programming without a compiler installed.
Staying on topic, I guess I am a kid (17 about to turn 18, started doing shit at 11). I have experience in HTML, C, C++, and Java. I have not mastered any yet, but still working on it. At age 11, my parents got me a decent computer (although it was a Compaq
Pretty much everyone else at my school has no clue (there are a few that do). They have no idea how computers work and they recently learne
Re:yes, they do! (Score:5, Insightful)
Are you dumm??? :) You don't talk to girls about encoding!! Seriously ... watch some more TV and a bit less PC's :)
Jokes aside, I don't think that the whole world needs to know how PC's are working. I don't think that the majority of people need to know that. As long as you know how to operate a word processor and a spreadsheat program, maybe some software to create presentations (notice how I am using generic terms).... I think you can be considered computer literate. To be able to program in C++ in notepad and compile it using a command line interface, I THINK goes beyond the purpose of computer literacy. I don't think that locked down computers are a bad thing. In fact from what you've been saying (software loading off pen drives, accessing external proxies...) I don't think you computers at school are actually locked down enough. Keep in mind that computers at school are not you computers at home. It's there for public use and has to cater for mostly kids. I don't think that schools should make it a priority on their schedule to allow 12-13 year olds change their desktop picture, color of the taskbar and access porn!
Re:yes, they do! (Score:5, Interesting)
Cool. The thing is, learning languages isn't really the most important thing to consider when programming - languages can be picked up depending on requirements at any time. Once you know the fundamentals of one it's easy to pick up another.
The real art of programming comes from an understanding of algorithms and complexity. You can know every feature of a language but without the ability to apply it in an efficient manner that works it's not going to get you far. The focus on filling people's heads with syntax is a serious failing of many college courses. There should be more time spent on the fundamentals of programming theory with a single language being taught alongside to show how this theory is put into practice.
When you familiarise yourself with common methods for every day problems you'll start to notice ways to make your own solutions more elegant and efficient. You'll be able to tell which algorithm takes more operations to process some data set or which one requires more RAM... then you can implement it in any language that takes your fancy. To me, that's the important stuff in programming. You have all the time in the world to learn languages, but without this stuff it won't come to much.
I learned this the hard way. I say it here so you don't have to
Luckily there is as much free help on algorithms out there as there is on any programming language. I just found a decent looking algorithms tutorial collection [oopweb.com] and there's also the Dictionary of Algorithms and Data structures [nist.gov]. Hmmm... looks like I found some weekend reading material!
Oh, and there's no shame in designing on paper... the day will come when you don't need to do it, but until then it does no harm. Jees, I sound like an old fart here. I'm in my 20s, I swear!
syntax vs algorithms (Score:3, Interesting)
Back then it was BASIC and I'm sure I wrote some pretty crappy code. The good thing was that by the time I hit university i had 12 years of learning syntax and programming in basic, C, pascal and assembly. That meant I could focus on algorithms and not be dragged down by the dull stuff like making code actually compile.
I think, from observing my classmates, that those who learned syntax + algorithms at the same time performed significantly worse th
Advice to the young (Score:5, Interesting)
Just so you know, computer science has almost nothing to do with programming. You'll write some code to explore compsci concepts, sure, but no respectable college will make that the focus of your degree. I mention this because there were a lot of surprised freshmen at my school, and I'd like to help you not be one of them.
I have experience in HTML, C, C++, and Java. I have not mastered any yet, but still working on it.
Apprentice: "I still have so much to learn..."
Intermediate: "I know this language inside and out!"
Expert: "I still have so much to learn..."
If you think you've mastered a language, you haven't. Don't let yourself forget that.
If you haven't mastered the language... (Score:3, Insightful)
C can be mastered.
Re:yes, they do! (Score:3, Funny)
Re:yes, they do! (Score:5, Funny)
What? screwing up the XML file?
Game modders (Score:2)
Re:Programming (Score:3, Insightful)
"Scripting" is making funky text documents that need another program to do something. PHP, HTML, and Perl are technically scripting.
But a JIT compiler is "another program." For that matter, so is an operating system.
The distinction between "programming languages" and "scripting languages" is becoming sillier every day, as erstwhile scripting languages become increasi
Re:Programming (Score:5, Insightful)
So if I write something in Perl it is a script ?
When I write the same functionality in Common Lisp and run it using clisp, it is a script ?
When I compile it with CMUCL or SBCL, then it suddenly becomes a program ?
I hate this bloody artificial division between 'programs' and 'scripts'. They are all a way of automating things, be it for embedded applications or data processing, and I use Perl daily for data processing, from starting up external applications, gathering data, process results, store and retrieve data from a database and generate reports.
Re:yes, they do! (Score:3, Interesting)
Honestly, I doubt it matters much, most all programming languages differ mostly in syntax. I mean sure, theres some real differences, but nothing that you need to care about.
Shit I started with applesoft basic, talk about a good way to pick up bad habbits. However, aside from lisp, I think it was the most unique language that I played with.
Perl just uses a rather extended and idiosyncratic C syntax. no seprate compilations, makes it nice to learn with, and
Re:yes, they do! (Score:5, Insightful)
There is a certain rightness about Lisp same as with *nix. No other language I'm aware of even comes close in the ability to expand programmers minds. It's like comparing budwieser to scotch or absynthe.
Smalltalk is another 'right' language. Pick up the original manuals for Smalltalk/80 and the sense of rigour and completeness is abundant, no silly syntax add ons.
Likewise C. I defy any programmer to pick up Kernighan & Ritchie and not be impressed by the sheer brevity of the language.
Now pickup Stroustrup, or a Java book or Perl or Python. What hits you is the cacaphony of discord, the single pure note lost amongst the poor orchestration.
When C++/Java/Perl/Python have long since been consigned to the garbage colletor in the sky Lisp/Smalltalk/C will still be used to solve problems. I rather think the current period of programming will be seen as the dark ages before the re-birth.
Re:yes, they do! (Score:5, Funny)
(((((((Hopefully(the))(result(of(the))car)(cdr)(r
Re:yes, they do! (Score:5, Insightful)
> intelligent people have this irrational phobia about parentheses?
> What is it about them that causes people's minds to lock up? I can
> understand complaining about other aspects of Lisp, but this?
It's quite simple, really. Each parenthesis has a slightly different function in the context of the larger program, yet you cannot tell this quickly from looking at them. I mean, look at the above joke sequence, and tell me if there are 7 or 8 parentheses at the opening left side of the sentence (by glancing, without counting). And yes, you can use a program that does parenthesis matching to avoid having mismatches, but it is about more than having the numbers balance, because an infinite number of different configurations of parentheses can have balanced numbers but different behaviors.
Control structures more like the C style have been significantly more popular because there are visual markers indicating function. { and ( are used in different contexts, as are ", ',
So it's not that people are afraid of the parentheses, it's that the parentheses are cumbersome to visually parse into meaning whenever complexity rises. In C style code, a single routine which is becoming more complex tends to simply get longer sequentially. In LISP, a single routine which is becoming more complex tends to get more depth of parentheses, and you start getting structures that look like: ))) (( in the middle. Let's take a piece of example code:
(cond
((< x 400)
(cond
((< x 100)
(prin1 'XC) (decf x 90) )
(T
(prin1 'C) (decf x 100) ) ) )
(T
(prin1 'CD) (decf x 400) ) ) )
I now take a working piece of code, change only a few parentheses, and the behavior has changed. In this case, it should crash, but there are less trivial cases where code will actually run but do something different. Either one is of course bad, since in an ideal situation, a human programmer should be able to discern the function and behavior of a program easily by visual inspection.
(cond
(< x 400)
(cond
(< x 100)
((prin1 'XC) (decf x 90) )
(T
((prin1 'C) (decf x 100) ) ) )
(T
((prin1 'CD) (decf x 400) ) ) ) )
And I'm sure any reasonably competent LISP program can look at the simple code example above and figure out what is wrong with it, but this isn't the point. The point is, the language hinders this process with its symmetry, rather than helps it. For most tasks, languages shouldn't be chosen for their reductionist beauty, but instead, for their ease of use for forming complex structures with human psychology in mind.
I hope that clears it up.
Re:yes, they do! (Score:3, Insightful)
Python is one of the cleanest and easy to program in languages ever designed. It's extremely descriptive, enforces readability, and as an added bonus contains functional programming tools that let it do pretty much anything you can do with LISP. In my opinion, Python is what students should first be taught. It lets you get straight to the high level
Re:yes, they do! (Score:3, Insightful)
Re:yes, they do! (Score:3, Interesting)
No; Python requires you to use a programmer's editor. Got vim? You're fine. Emacs? No problem. Notepad? Problem.
If you're really a programmer, your editor already solved this issue for you.
Re:yes, they do! (Score:5, Funny)
Define Program (Score:3, Insightful)
Re:Define Program (Score:2)
I think a lot of these coding kids get involved in opensource projects too and it'll increase as web programming gets more powerful. Firefox, Thunderbird, etc and even AJAX web-based apps.
I think what's declined is the number of kids writing C, assembly, Basic, etc. Projects that require those kind of tools have gotten to big and complex to jump into so easily and
Re:Define Program (Score:5, Insightful)
I know this is heresy, but bear with me for a moment. No, HTML isn't Turing-complete, and anyone who's done any kind of dynamic content work with Javascript, PHP, etc. is well aware of HTML's limitations. Nonetheless, writing a web page in plain HTML is much, much closer to "real" programming than it is to the way most people interact with computers.
Most people do something on a computer that gets an immediate response. Hit a key in a word processor, see the letter you typed appear on screen. Click a mouse button in a game, shoot the bad guy. Type a URL into a browser, get a page.
OTOH, writing a page in HTML (using a text editor, I mean) even a page that just says "Hello, world" on a colored background, requires understanding the concept of code. Instead of action-and-response, you have text that makes the computer do something that does not follow immediately from the text at the time you enter it. This may seem trivial to techies, but it's an enormous conceptual leap for most users -- and once they've made that leap, programming as a concept is no longer nearly so mysterious.
This is the way it worked for me, as an adult. I was the kind of user whom non-techies think of as "computer-literate," which meant I could use all kinds of different programs and do some low-level troubleshooting, but I simply had no understanding of what programming was, and in fact had a kind of mental block against it dating from when my Dad tried to teach me C when I was a teenager in the 80's. It wasn't that I couldn't learn it, but I had convinced myself that I couldn't learn it, and that amounted to the same thing.
In the 90's, I decided that I really wanted to at least learn how to make a decent web page, so I started doing "view source" on every page I liked, and got reasonably competent at reusing other people's HTML. Next I started writing my own. Then I realized that a lot of the stuff I wanted to do would be a lot easier if I learned this Javascript thing people were talking about, and, well, off I went. By the time I found my way back to C (and C++, and PHP, and Java, and Perl, and MATLAB, and Python, and R, in roughly that order) I realized this programming stuff wasn't so mysterious and scary after all.
During my academic CS career, I saw a lot of people go this same route. Don't sell HTML short.
Re:Define Program (Score:3, Informative)
Re:Define Program (Score:3, Informative)
Reread the parent's post. HTML is not a programming language; it is a markup language. However, you still have to markup your document, kind of like how you would code a program (just without the variable setting, looping, etc.).
As a personal sidenote, I learned HTML back when I was in 3rd grade. I was always very interested in computers, and my family just got an Internet connection. (This is in the mid-90s; keep this in mind). I got interested in creating web pages, so I scoured the Internet to lear
Re:Define Program (Score:3, Informative)
Comment removed (Score:5, Interesting)
Answers (Score:2)
Should we care? Eh, I don't really know if I care or not, as long as I'm not stuck with the "geeks" who don't understand anything about computers.
Do you think the desire to program computers has declined in the younger generations? Yes
If so, what reasons might you cite as the cause? I don't know. When I was a kid. Video games were all the rage, but not that hot. I had a computer that, essentially, all you could do with it was program it, when I was about 5-6 (well, m
Its still taught in some places (Score:2)
In my final years I took an elective, IT Systems which was learning VisualBasic and programming theory, I loved it, although there was only 12 people in the class.
Everyone uses a computer, but programming can be a bit of a distraction when you have 30 of your friends asking what your doing on Friday night on what ever IM program you have open.
Yep, they are. (Score:5, Interesting)
The main issue here is that programming isn't necessary anymore for kids - whatever any kid wants to do they can rush out and buy a bit of software for, or find a utility online. All the functionality they'd want is at their fingertips already, so programming is left to the tinkerers.
And I rarely program anything for fun anymore because I'm overscheduled. Too many classes, too many bloody standardized tests, and programming itself isn't rewarded at the HS level because of a refocus on reading, 'riting, 'rithmetic. Out of the set of dedicated students, the more well off kids burn time at prep schools and cram classes, the less well off burn time studying. Few chances to program 'for fun' - I've got a really old RPG engine that I add bits and pieces to every now and then, but there's no way I can finish it anytime soon.
Re:Yep, they are. (Score:3, Funny)
Wow, you've got all that below your belt ... you must be a real hit with the ladies.
Re:Yep, they are. (Score:3, Funny)
With all of that programming knowledge, once he learns some AI and some robotics (and advance both fields substantially; create some field called "biorobotics" or something), he can program a lady. Problem solved for him and all geeks like myself worldwide.
Who could teach it? (Score:5, Insightful)
Work in an environment where pay and job security is according to seniority, not competance. Work with lazy and dumb students who disrupt class, yet can not be kicked out or even (except in Texas) spanked. Get stuck doing odd jobs like minding the bus loading/unloading area and trying to stop food fights.
Work in a cubicle for $40000 to $150000 while surrounded by fairly intelligent nerds and all the Mountain Dew you can drink.
Gee, I dunno...
Re:Who could teach it? (Score:5, Insightful)
Bad working conditions and low status (Score:3, Interesting)
Yes and no (Score:2, Interesting)
To phrase it another way, if you are interested in some other hard science and not a do-it-all genius ty
Different skills needed nowdays (Score:2)
Well, back in the early days there was no Word or Excel for people to take classes on...
Back then, there weren't the number of applications we have in everyday use today, so there wasn't a need for classes and books on how to use them. Instead, due to the lack of applications, we needed to learn to program so we'd have something to run.
Plus computers were such a new thing, and it was something not
Comment removed (Score:5, Insightful)
Precisely (Score:3, Insightful)
Logical Conclusion (Score:2)
Well, coming from... (Score:4, Informative)
It's Too Hard!!! (Score:4, Informative)
Re:It's Too Hard!!! (Score:5, Insightful)
Now let's look at the one continuity there, they were ALL Command Line environments. Sure I had Win 3.1 but I never did that much in it. And when 95 came out and I wanted to program MFC it seemed like way too much trouble for what I was trying to do. I was eventually able to come up with a patern for setting up the window and everything, but it was kinda more a pain in the ass than it was really productive. And I come to the last part... Now I program in linux. Sure you can do X-windows programming in linux (which I think is easier than MFC and Visual WhatEver++), but I've always gravitated towards simple things like kernel programming and utilities.
Back to my point, the command line based OSes were easy to learn to program with. Minimal setup for your program (heck, include and you're pretty much done.) output is exactly what you want (it's all just text anyway), it's easy to visualize, it's easy to learn, it's easy to get results quickly. Kids have short attention spans in general, so you want something that allows them to be somewhat productive quickly, so they can do a few things and see the fruit of their labor and think "Wow! That's cool! I just made that!" instead of some random windows error. That'll Hook them and they'll want to do more and learn more... sitting down to read a book to figure out the best windowing setup or if they want a DirectX window or a menu bar is kinda a pain and isn't going to grab many kids.
Re:It's Too Hard!!! (Score:4, Interesting)
My school doesn't offer any classes in programming, so I teach myself, but sadly, I'm not sure how many people would take it if they did offer it. Most kids my age are just lazy sheep; programming isn't required to graduate, and it isn't 'cool', so people don't take it, sans geeks.
Geek to sheep ratio is low though
Re:It's Too Hard!!! (Score:3, Interesting)
That strikes me as hilarious. No disrespect, I know you guys mean well. I just can't picture kids diving right into a professional environment and language as complex as C# (or god forbid C++). It's not that they can't start with the basics, it's that the basics don't let them do anything interesting. You have to learn a huge number of syntax rules and complicated APIs to get anywher
Re:It's Too Hard!!! (Score:3, Insightful)
Every minute a student spends with Visual Studio 2005 Express Edition is one less minute spent learning how to program, and one more minute spent learning how to use Visual Studio 2005 Express Edition. Microsoft IDEs are enormously complex tools. They're quite useful in the hands of professionals who know how to use them, but they're an impediment to actually learning how to program. Students need to learn how the n
Re:It's Too Hard!!! (Score:3, Insightful)
If you haven't tried it lately, writing a tr
Re:It's Too Hard!!! (Score:4, Interesting)
Re:It's Too Hard!!! (Score:5, Insightful)
Learning curve of linear vs OO? (Score:5, Interesting)
When I was in elementary school we had this GREAT program called 'LAMP' (logic, art, mathematics, programming) where they took the smart kids out of class every once and a while and had us do extracurriculars in the above-mentioned subjects. The 'programming' aspect consisted of nothing but logo and some linear BASIC on TRS80s, but it at least got me interested in futzing with my Commodore 64 to the point where I could make rudimentary text programs and dream of mastering the 'poke' command.
Without an easy-to-learn language like BASIC where do you begin to teach the fundamentals of programming? The syntax, class structure, includes, etc of modern object-oriented programming languages are a huge barrier to picking up the basics. Would you start a third or fourth grader out on Java? C++? I certainly wouldn't be able to handle that - I had a difficult enough time making my LOGO turtle move around. Perhaps the best solution would be some sort of drag-and-drop IDE, like visual basic for 6 year olds, where children could understand the concepts of programming without being overwhelmed by the syntax all at once. Anyone know of one? I seem to remember something similar using java beans demoed by Sun while I was in college . . .
Good point, but maybe solved. (Score:3, Interesting)
Python/Tk and Perl/Tk are also good for the same reason - simple(ish) scripting language, very analogous to BASIC, that is multi-platform, cheap & easy to obtain, and can be programmed without a Master's and a bunch of GUI screen designers and rapid development tools.
Java applets were, not so long ago, very popul
Re:Learning curve of linear vs OO? (Score:3, Insightful)
Understanding how dynamic linking works; understanding what syscalls are, which ones there are and how they operate; understanding how virtual memory is implemented at a hardware level; understanding the processor as something other than a black box -- all of these are necessary if you're going to be the dude who comes in whe
Yeah... (Score:2, Informative)
But I mean, you don't need a school to learn programming. I started in elementary school with the second edition of Kernighan & Ritchie's C programming language book and I've been hooked on coding ever since.
No more GWBASIC (Score:5, Insightful)
I'll take a stab at this ... (Score:5, Insightful)
He was hanging out on various web sites with all of the other cool script kiddies. In his mind, getting stuff from the web without knowing what it was; or designing web pages with a WYSYWIG HTML editor; or using a level-editor to make a new map -- all of that WAS cool. He just couldn't grasp that he wasn't doing anything difficult, and certainly not worthy of his haxor belief about himself. In reality, he was running other people's programs and using interfaces to do stuff.
Kids today either don't fully understand what it is they're doing, or think something utterly trivial is l337.
They can accomplish a whole lot of 'meaningful' tasks with the software which is readily available for free. They don't *need* to try and cobble together little wee programs to achieve minor tasks. Back in the day, we were happy to achieve tasks which are, nowadays, stinkin' trivial. Because the computer didn't do much unless we made it so.
Kids nowadays don't find themselves confronted with the need to program -- they're not staring at a blinking cursor trying to figure out what to do. They go onto teh intarweb and download it. They're not trying desperately trying to figure out how to write something to make the creation/management of D&D characters (or, whatever). They're downloading free (or pirated) software which already accomplishes what they need to do.
People aren't programming out of necessity anymore, they're running software on the magic box which has always been there. They don't need to think about how software gets made in the first place. The generation before them have filled in most of the gaps for them.
Re:I'll take a stab at this ... (Score:3, Insightful)
I wrote another post [slashdot.org] on the topic, so I won't repeat myself.
As a kid... (Score:5, Insightful)
For three years, I taught myself through online tutorials here and there. Freshman year of high school I did a lot of programming, because I wanted to show my stuff off the the computer programming teacher (the class is only offered to sophmores and higher). Last year, once I was in the class I discovered how terrible high school is. In a one semester class, the other students only had a rudimentary knowledge of functions and no idea what OOP was. Basically it was a study hall for me, though I did write a tic-tac-toe game in C using SDL to show I did something.
I'd have to say that my knowledge of C++ is pretty rough. I may know syntax, but I sure as hell don't know how to use it for anything complicated. That said, sophmore year, I competed in the National FBLA competition for C++ programming and got 6th! This absolutely surprised me. Surely there must be more people who know C++ than this?
I'm disappointed in the US, in my teachers, and the school board. I've tried as hard as I could to learn in high school, but I end up being a slacker. Even classes at the local technical college (I've taken C# so far) have been a disappointment.
In general, students aren't encouraged to do programming at all. Math books have logic cicuits, boolean logic, and tons of example BASIC programs, but teachers skip over them. Educators need to educate, not push kids through school.
Re:As a kid... (Score:3, Insightful)
Why are you disappointed in them if you admit to being a slacker? There is a certain level of competency that is taught in school to make you a functioning citizen so that you can file your own taxes, hold a regular job and balance a checkbook. Programs that go beyond that few and far between. Why do you expect public high schools or technical colleges to te
Kids have moved beyond the computer as a tool. (Score:5, Insightful)
Kids are instant messaging and emailing their friends, creating articles on MySpace, creating nifty Flash movies, modding their favorite fps game and distributing their effort over the Internet for 1000s of others to enjoy. They are actually using computers for a purpose rather than as quirky, nerdy obsession
This is WAY more productive and creative than what my friends and I were doing with our computers in the 80s. Kids are not only creating (and hopefully learning along the way) but they are connecting with LOTS of other people in the process!
Perhaps us oldbies view the seemingly lack of interest in actually programming a computer as a problem because we come from a background where the computer was more about what it could potentially do for us rather than what it could actually do at the time. Programming was a necessity to fill that gap, often in relative seclusion and obscurity.
I'm sure our dads say the same thing about us young whipper-snappers not knowing the first thing about the cars we drive and nod knowingly to each other about what a tragedy that is.
Instant gratification (Score:3, Interesting)
I think there's also the problem that so many of today's kids are so used to getting instant gratification (i.e. - they're spoiled) that the sustained intellectual effort necessary to learn programming is simply beyond them.
I came to this realization in a (mandatory) Intro to Programming course I had to take at the local state college. 3 1-1/2 hour sessions a week, and half the class had disappeared before the end of the 3rd week; in the hall before class, I heard many of them complaining that they didn't 'get' the concepts behind programming: AND vs NAND, OR vs XOR, NOT, and so on. Non-decimal arithmetic (binary, octal, and hex) threw them completely. Boolean logic might as well have been Swahili for all most of them understood it. It was, as I said, a mandatory course; they were going to HAVE to take it to the end, sooner or later - yet most of the drop-outs simply didn't want to be bothered. The (very) few of us that already had some experience programming cruised through while the rest (including some taking it for the 3rd or even 4th time) applied whatever mental effort was needed to learn the subject.
I heard one of the disappeared comment to a friend "What do we need this crap for, anyway? All the programs we need are already written; you just have to know which one to buy or download!"
Some do... (Score:5, Interesting)
Now, enter open source software. Guided by the right people and articles, anyone can learn to program. Guidance is the key word here. Most kids aren't going to go off and buy textbooks just to learn how to Do Cool Stuff.
A lot of programming is a mystery and there needs to be better education earlier in schools about what programming is. Programming is just like Math or Chemistry these days- it is required for many B.S. majors and can turn out to be hell if someone did not know what they were doing. In order to prepare kids for college, programming in a language like JavaScript would be a good starting tool. There is no barrier to learning JavaScript- the compiler exists in (almost) every web browser, which students should have access to.
Some of the problem is that few people how to teach at the High School level very well. VB is not a good language to learn on, and it causes awful headaches for students who later decide to learn Java and C. VB, though, seems to be what is taught, even though most students do not have access to a VB compiler at home. Learning in school is not enough- it is homework that is also important. I advocate teaching kdis HTML and JavaScript so they can make a cool web site with image rollovers, calculators, and other various algorithms.
Not only does this introduce the concept of programming, but it also gives students a great tool for publishing resumés and marketing themselves as an intelligent young people who have something going for them.
A nice web page can do a lot, even if it is just a little.
Comment removed (Score:3, Interesting)
For Newbie Coders: Python (Score:3, Informative)
The tools - overly complex, buried or don't exist (Score:3, Insightful)
As far as I know, Windows does not provide a free and easily accessible programming environemnt. Apple does (xcode) as well as a number of open source tools like Perl, PHP, Python, etc.
I have a Mac, so let's see what it would take for my son to start tinkering around as I did when I was his age. Let's say he wanted to start in on Python. He has to first know that he has to go find a shell, which is found in Applications->Utilities->Terminal and then type "python" to bring up the interpreter. This assumes he already knows that python is a language and is one he wants to tinker around in. This is not intuitive.
What about XCode? He has to have a basic understanding of the Unix filesystem and go back to the root directory to find a directory called "Developer". Within the developer directory are the subdirectories ADC Reference Library, Applications, Documentation, Examples, Extras, Headers, Java, Makefiles, Palettes, Private, Tools. He's bright - he chooses Applications. He is then faced with Audio, Graphics Tools, Java Tools, Performance Tools, Utilities, Interface Builder.app and xcode.app. Again, he's smart (or lucky) and doesn't go deeper and follow the subdirectories and chooses xcode.app. He's now faced with a series of screens. First being building with the options "Put build projects in project directory", "Separate location for build projects", "Put intermediate build files with build projects", "Separate location for intermediate build files". At this point, he gives up and moves on never reaching the screen asking him if he wanted to build on of 53(!) types of programs. God knows what other screens are after that.
Anyway, you get the point. A free IDE does not inspire a kid to jump in and make 10 print "my name is Colin" 20 goto 10. Python, Perl and PHP require knowledge that they exist, what they do and how to invoke them before you can even begin to write your first line of code.
It doesn't surprise me that kid don't take up programming as readily these days.
Kids do still program (Score:3, Informative)
- keyboarding, aka typing
- computer literacy, aka word processing, productivity applications, etc.
- introductory programming,
- intermediate programming,
- AP computer science
The first two in the list have little if any programming component. I say little, though the second course may cover a number of use of spreadsheets and through that the use of formulae, conditional expressions, etc. [ I should note that there is a online journal dedicated to documenting the various ways in which spreadsheets can be used to teach various concepts - see http://www.sie.bond.edu.au/ [bond.edu.au] for more details. ]
The introductory and intermediate courses may have widely differing names depending upon when they were introduced into the school system; a local public system calls the second course "Data Structures", most likely because it was introduced during the Pascal heyday. Even though these two course sound like a close-knit progression of coursework, they actually may be quite different. Two of the local systems teach a different language (Java) in the second course than is used in the first course (VB.Net). The reasons for this choice are not entirely clear. Pascal was introduced into high school classrooms largely via the Apple II series; even the emergence of the IBM PC and its clone still gave access to Turbo Pascal. Not to imply that VB.Net is a step backwards, but the return in the high school classroom to QBasic, VB 6, and then VB.Net seems driven more by the availability of textbooks than other factors. I welcome a more informed explanation.
Originally Pascal was chosen as the AP Computer Science language of choice. { Here A.P. means Advanced Placement, high school courses with an associated standardized exam; many colleges and universities recognize exam scores and award credit towards degree programs. } For whatever reason, though, that choice was relatively short lived - perhaps driven by a 'pragmatic' crowd that wanted a 'real programming language' to be taught in the high school? At any rate, Java is now the language used in the the AP Computer Science exam. There is talk of changing the exams again to use a more language agnostic format.
A great many other tools and languages are taught in addition to or besides these, obviously. A smattering of ones that I know of or have used:
- The TeachScheme project http://www.teach-scheme.org/ [teach-scheme.org] exists to provide resources for those who wish to use Scheme in introductory high school and college courses. { And DrScheme rocks.... } I personally know one high school instructor who went through their workshop and adopted their approach and who had good things to say about it. { In fairness, though, he is currently teaching Java due to his participation in an NSF-funded grant. } For those looking for a natural follow-on to Java or more 'traditional' OOP programming, might I suggest having a look at Proulx and Gray's work in
How To Design Classes and ProfessorJ
http://www.ccs.neu.edu/home/vkp/HtDCH/ [neu.edu] http://www.drscheme.org/ [drscheme.org].
- Alice http://www.alice.org/ [alice.org] is getting a lot of well deserved buzz, especially in light of the recent announcement that EA will be funding the development of their next major version (3.0), which will include features from the popular Sims game series. Caitlin Kelleher's work in extending Alice into a storytelling environment has also produced good results, esp
Programming is not as accessible as it was. (Score:3, Insightful)
Kids 20 years ago switched on their machine, and after a few seconds they typed:
and the program run.
Today's kids switch on their machines, wait for Windows or Linux to boot, log in, open their IDE and write:
then hit the compile & run key.
In other words, programming was then much more fun (even in its primitive form) and much less 'serious' than it is today. Getting a few sprites to run on the screen was a few lines of code (mostly sprite data) and a few instructions to generate those sprites on the screen, whereas todays it involves a huge effort of device contexts, video card drivers, DirectX, C++/Java, pointer handling, class hierarchies, interface design etc.
No Programming Tools (Score:3, Insightful)
Furthermore, there were interesting things to program on early computers. It was fun to learn how to write programs to display sprites, move said sprites around the screen, and maybe play some bad music on the SID chip. There is no easy way to do this on Windows. Hell, I have no idea where to even start! It's not documented well enough for a kid to get to want to take a stab at such a thing.
HTML is bad, bad, bad for a kid to learn to program with. It's waaaay too forgiving. You can write crappy code and it will still render in browsers. That teaches kids to be sloppy.
It's not a matter of exposure. (Score:3, Informative)
At the slightest mention of a technical sounding term, a torrent of insults, "Shut up", and "What the hell is he talking about?" comes at me. The point is that it's not that these kids haven't been exposed enough to computers, it's just that they're not willing to accept teaching. A kid will gladly spend 4 hours playing piddly flash games and browsing MTV.com, but if you ask that same student to take 15 minutes to read a tutorial on HTML, they'll blatantly refuse, and say how that's too geeky.
Now, I'm not going to deny that computers haven't been made boring in schools, because they have. This is due to the fact that the computer teachers and network admins at the schools are ignorant dumbasses. I once asked the admin at my school why they didn't use Linux on the school's servers, to which she replied "What is Linux?". At that point I almost lost all hope for humanity.
And, don't even get me started on so called "Computer" class. All you do in there is either a) do math games, or b) play childish typing games. No where in that class do you learn anything about actually making use of a computer.
Not only dot he students refuse to make use of any technical knowledge, the teachers won't let them. I once had a project I had done, and I had no blank CDs, so, I did the smart thing and emailed it to myself, only to find out the next day that you're not allowed to download any files, at all. So, that was fine, I went home the next day, went out and bought some CD-Rs, only to find out the next day, that you aren't allowed to put any discs into the school computers.
So, in a nutsheel, kids these days are ignorant,and resist learning, the computer classes in schools are only acceptable for "special" children, and teachers refuse to let students exhibit their technical ability.
Re: (Score:2)
Re:Degrade of Education (Score:2)
2) I don't think that that's changed so much. I never got into the school gifted program, but got into the John's Hopkins Center for Talented Youth, and am now pursuing my PhD. I guess that the county gifted program criteria wasn't so hot.
As far as not amounting to anything. When I was a kid, they were pushing vocational computer skills like it was crack. They seriously thought that this crap would make you successful.
As for amounting to anything. For the most part, you really don't ha
Re:Degrade of Education (Score:3, Informative)
Like other posters have said, if there is something you are interested in, go buy a book and use the Internet to teach yourself. Formal education limits your ability to be creative and develop your skills in the directions that you want to take them.
If you really want to LEARN something and be able to apply it, you have to work outside of the classroom. You'll be working outsi
Re:Advice to smart people (Score:3, Insightful)
Re:Advice to smart people (Score:5, Insightful)
Better advice for smart people (Score:5, Insightful)
But what if you want to be this person [wikipedia.org] or this person [wikipedia.org] or this person [wikipedia.org]? These people did very wonderful things, but those wonderful things require that they have the education to do them.
My advice to smart people; don't drop out. It is possible to do wonderful things without a degree, but a degree will open much more doors, which makes doing those wonderful things much easier than without a degree.
Re:Entry Barrier (Score:2)
Furthermore, if you really want to get into things, Perl, Python, and many other versatile and powerful dynamic languages are readily available on the web for Windows. You can use them easily at a console (which is the same thing you were doing with QBasic) or you can jump right into GUI programming. Furthermore, given how readily available libraries like SDL and OpenGL are (even for interpreted languages), you can jump right into
Re:BASIC still rocks! (Score:3, Interesting)
Although unfortunately it doesn't come with every MS Windows box, Tcl is a language that could easily serve this purpose. The syntax is simple, it is very high-level, you can write it interactively in tclsh if you want to, and it has a nice, simple but powerful windowing graphics library (Tk). And its free. You don't have to worry about object orientation (which I think is a an impediment for beginning programmers) but there are various object-oriented extensions if you want them.