|
|
| Computer Programming Educational Software 20 Questions: |
|
nonnus29
Member #2,606
August 2002
|
A while back David Brin wrote an article lamenting the fact kids don't program nowadays because MS no longer ships Basic with it's OS: http://www.salon.com/tech/feature/2006/09/14/basic/ I'm pretty sure we've talked about this before. As a response at least one Basic oriented toward kids was created: http://kidbasic.sourceforge.net/ One company makes a product call 'EasyC' that supposedly has a drag-n-drop interface and includes the novel ability to create flow charts of functions. EasyC is meant to create code that is downloaded to a robot of some sort: So what are your thoughts on software for teaching programming to kids? It seems to me that the most valuable thing a student can do is type in a FOR...NEXT loop and print their name X times to the console. This is an immediate example of what programming is all about: making the machine execute a step by step sequence of instructions. Educational software should allow the student to do this easily. Programming a robot is pretty cool, but do you think game programming or a rudimentary 3d world would be more exciting to kids? Then the other question is that of language. Which language should kids learn first? A Basic, or something like a subset of Java (since Java is used in the AP exams and will most likely be taught in the high school curriculum). What do you think of the automatic generation of flowcharts? Would you have found that helpful when you where a kid? Has anyone taken computer programming in Highschool? What was your experience? What language was used? Did you use an IDE? Cookies are available |
|
Thomas Fjellstrom
Member #476
June 2000
|
Quote: Has anyone taken computer programming in Highschool? What was your experience? What language was used? Did you use an IDE? I didn't get around to the Pascal part of the Class. The entire class was pretty pointless though. They didnt get to C till the third year? wtf? -- |
|
Matthew Leverton
Supreme Loser
January 1999
|
I was going to write up a long autobiography post because my experiences as a young child are quite relevant, but I'll just say it in brief form. There's a big difference in being excited about programming and being excited about seeing results. Even as a child, I was in the first category. Two of my brothers in particular were in the second category. The others didn't really have any interest about doing either. One would spend hours on "Adventure Construction Set" (C64) making his own Ultima-type games. He had no interest in programming. He just wanted to write a story and have it play out. (He ended up majoring in journalism.) Another liked editing levels of games using level editors. He'd use a code to enter the debug mode for Sega's Sonic games and "create" his own levels. He too had no interest in programming. So my point is if you show a kid a level editor or C++ they are going to take the former nearly every time. And who cares? Let them do that. No kid needs to be programming anyway. Now if by "kid" you mean a high school student, then they ought to have the discipline and desire to learn basic programming using something like a scripting environment with a gaming engine (higher level than Allegro). It could be a fun way to learn about how computers and games work at a very high level. The big thing here is that most high school educators are going to be TERRIBLE at computer science at any valuable depth. So you don't really want them teaching programming anyway. Anything else can be saved for college. You have four years to learn how to program there. And any good programmer is going to be self taught anyway (or self-motivated in the least), since learning how to solve and debug problems is the most important thing. |
|
nonnus29
Member #2,606
August 2002
|
Just to clarify; I'm looking at this from a business stand point: I have a language already (NASIC: adding {..} syntax would be trivial) and using something like Qt to create a flow chart generating IDE based on QtScintilla is (seems to be) very doable. So I'm basically doing a feasibility study Keep the comments coming, cookies still up for grabs! Edit: and the age range I'm looking at is early high school, middle school. Edit2: and integrating with a 3d engine is doable too: Irrlicht for example. Lots of details to work out there of course (api to expose and what not). |
|
Matthew Leverton
Supreme Loser
January 1999
|
Business standpoint from what perspective? Selling it to parents? Selling it to schools? Giving it to whomever wants it? I think an event based graphical gaming engine would be the easiest way to engage the 12 to 16 year-olds. I think the language behind it is the easy and trivial part. (I think there would need to be a level editor; a fairly advanced engine capable of various modes of 2d or 3d; etc... There shouldn't be any need for if (left) player.x++ type of logic.) |
|
Thomas Fjellstrom
Member #476
June 2000
|
I'm not sure if theres any room for something like this. Maybe if its "that much" better than what else is out there. Also, if you haven't beaten RealBasic on its language features, you need to go a little further I have a "Basic" language brewing in my head (or did, I havent worked on it in ages), based on a mix of RealBasic and some perl idioms (no perl syntax though If you think back to the past, things like LOGO were very popular, where you "programmed" a "robot" (what was it called, a turtle?) around the display. As for flow charts, skip them. I don't think many/any kids will even grok them, unless you can simplify everything down into cartoonish levels of simplification. edit: If I was to try something "educational" it would probably be a drag & drop oriented event based wysiwyg type program. With the ability to customize events if you happen to want to get into the code at all. -- |
|
nonnus29
Member #2,606
August 2002
|
Schools would be the ones most likely paying out the money I think. Quote: There shouldn't be any need for if (left) player.x++ type of logic. What do you think of a Logo type api for entities? Edit: Quote: As for flow charts, skip them. That's kind of what I thought too. I do think auto flow charts could be a BIG selling point though. It's not something I've seen, ever. |
|
SiegeLord
Member #7,827
October 2006
|
A general comment. The discussion in this thread will probably be moot, since in the end you have to do studies with kids themselves. Armchair arguing or planning will definitely not translate well to the real world. So, don't ask us. Ask the kids. Also, people consistently underestimate the intelligence of children, and instead feed them drivel that the adults think is 'basic' enough for them to understand, while they are actually capable of doing so much more. In my opinion, give them C or C++ with allegro and STL and be done with it. In the end, it's not the language itself but the way it is taught that what will matter the most. And in that case, why start with something obsolete like BASIC, when you can just start with the end goal. I guess you could start with C# instead, to keep things modern, although doing manual memory management should be done at least once in one's life. "For in much wisdom is much grief: and he that increases knowledge increases sorrow."-Ecclesiastes 1:18 |
|
Thomas Fjellstrom
Member #476
June 2000
|
Quote: In my opinion, give them C or C++ with allegro and STL and be done with it. Depends on the Child. Many need a little extra proding and attention, while others could probably manage full on C++ with no real problems. I was in the former group. When I was shown an old Atari 2000 computer, and tried to get into its variant of basic, I just couldn't do it, and I kinda just ignored computers for a few years after that. I like to think I'm pretty decent now, but imagine where I might be if I had a 5+ year head start? -- |
|
Matthew Leverton
Supreme Loser
January 1999
|
My main point is that there are many general purpose scripting languages that can easily be paired with a gaming library/engine to create a "beginner's programming environment." If that's basically all you are going to offer, then you might as well stick with main stream stuff (e.g., Lua) and focus on selling a concept as opposed to your own labor. [Edit: Basically what SiegeLord was saying.] That said, to continue with my previous statements, I would think that the engine would have things like "entities" already built-in. One usage example: You add a character to the level and in his properties you say he is neutral (enemy: false). Then you add a built-in event called onHit() and add a snippet of code like: IF $attacker = $me THEN $char.enemy = TRUE END IF Of course most things would have natural defaults. So if you were creating a 2D platformer (assuming the engine supported that), you could just add baddies to the level and say this is a "flying baddie" and default movement would already be set. But by double clicking on an event, you could modify the flight code, etc. The above example is not well thought out, so don't bother discussing the details of it. But that's the general idea of what I'm talking about: Something that's basically visual, but with snippets of code that can be changed. That way the kid can quickly put stuff together in "level editor" mode but then do something crazy by experimenting with the code behind it. And obviously if the idea is education (as opposed to production value), then you can limit yourself to some relatively small niche. |
|
nonnus29
Member #2,606
August 2002
|
Quote: When I was shown an old Atari 2000 computer, and tried to get into its variant of basic, I just couldn't do it One of the things I spend time thinking about is: how can computers make me smarter? One aspect of this line of thought is 'usability' and 'human factors': how do people use technology? How would people use technology if they could, but it's just not designed that way? So, getting to what Thomas is saying; what about the programming experience on the Atari 2000 held you back? Was it lack of documentation? Lack of someone to explain the fundamentals? Lack of interest in the subject? How can technology address any of these shortcomings? I know from my own experience, I would've been coding 6510 assembler at age 13 if I could've found the documentation and an assembler. Today the internet makes things like this (finding information) trivial. But not all kids (people in general) learn from reading, some need to hear or see. Technology can help these people too with screen casts and on line video tutorials. I tend to think theres an oppurtunity here. I could be wrong though. Edit: and I agree with SeigeLord/Matthews/Thomas point about 'reinventing' the wheel with a new language. Any language would essentially do. My thought on that is a Basic or a limited (Basic like subset) of an existing language could be more accessible and/or easy to teach. I think if a kid is ready for object orientation they should move on to a 'production language'. |
|
Thomas Fjellstrom
Member #476
June 2000
|
Quote: So, getting to what Thomas is saying; what about the programming experience on the Atari 2000 held you back? Was it lack of documentation? Lack of someone to explain the fundamentals? Lack of interest in the subject? How can technology address any of these shortcomings? I think we had documentation. What I think I lacked was something simpler to start with, that I could see "work" as soon as possible. I got frustrated rather quickly from not seeing any real progress. Mind you I was mistaken for having ADD as a kid, which had much to do with my frustration, I had no patience or attention span. Quote: I tend to think theres an oppurtunity here. I could be wrong though. Theres always an opportunity in something, its just a matter of the difficulty level in pulling it off. edit: In my opinion, you need to provide something the kids can keep interested in. Allowing each kid to procede at their own pace. -- |
|
Matthew Leverton
Supreme Loser
January 1999
|
I was writing my own little C64 programs when I was 8 with no help from anything except magazines. I was coding games on a PC when I was 12 in QBASIC with no help from anything except its built-in manual. I had no internet. I didn't know anybody who could program. Technology wouldn't have helped me learn any faster. A teacher would have. But I also got my satisfaction by learning by myself. And that's what makes me a good programmer today. It's not that I started when I was 8. It's because I'm self-motivated and self-educated that I know how to analyze, design, program, debug, etc. An easier interface wouldn't have made me any better. It's like suggesting that VB6 makes you a better Windows programmer. It doesn't do anything like that. It just lowers the amount of skills needed. To me the bottom line is if you need a screencast or a friendly interface to understand something because you couldn't roll up your sleeves and figure it out yourself, then you aren't the type of person I'd ever want to hire or work with - except if you are only ever working within the confines of that nice and fuzzy warm environment. (And in that case, I wouldn't care since I'd be a 100 miles in the opposite direction.) You say "I tend to think theres an oppurtunity here." Of course there's an opportunity. There always is. You can sell anything if you are good enough at selling. I'll never argue that. Is something like this going to produce more (in quantity and in talent) programmers? Never. |
|
FrankyR
Member #243
April 2000
|
My first real programming experience was in grade 10 with Turing and then in grade 11 with plain C (all taught at school). By the time my younger brother got to high school the school had started introducing kids to programming using Delphi. I remember he was so frustrated by all the 'magic' involved in his programs. The teacher was showing them stuff like adding a button and hooking up handlers, etc, but they never explained how any of it worked. I still think that one of the most important things to keep kids interested is to let them have a feeling that they're creating something from scratch. Give them a 'main' function and say that it's the program entry-point. Let them see that if they put a print statement in main it will do something and then the program will quit. Let them see that they can put a loop in main to make the program keep doing something until a condition is met. Then tell them that that is how all computer programs work. One of the biggest sources of encouragement is showing them how nothing the computer does is magic and that it's just varying levels of complexity built up using some very simple building-blocks. |
|
Thomas Fjellstrom
Member #476
June 2000
|
Quote: One of the biggest sources of encouragement is showing them how nothing the computer does is magic and that it's just varying levels of complexity built up using some very simple building-blocks. Again, that depends on the person. some care, some don't. -- |
|
FrankyR
Member #243
April 2000
|
Quote: Again, that depends on the person. some care, some don't. Good point, I guess I should say all my points apply only to me any my brother (and people like me). Because people learn in different ways it's going to be hard (impossible?) to make a learning language that suits everyone. Like Matthew said above Quote: There's a big difference in being excited about programming and being excited about seeing results. Which type of person are you targeting? |
|
Johan Halmén
Member #1,550
September 2001
|
Quote: There's a big difference in being excited about programming and being excited about seeing results. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Years of thorough research have revealed that what people find beautiful about the Mandelbrot set is not the set itself, but all the rest. |
|
Edgar Reynaldo
Major Reynaldo
May 2007
|
I started out with GW-Basic maybe around 12 years old or so , the fact that I could draw on the screen was one of the coolest parts. I didn't stick with it too long and until I bought a book on C++ and found Allegro , a year or two ago I couldn't even imagine how to write graphics programs. Just prior to taking up C++ I was working on learning some Windows Script so I could re-parse some log files into a useful form and that got me hooked again. I plan to stick with it now and I spend most of my free time programming and studying math and programming. So don't think that a simple introduction to programming won't encourage anyone to take it up in the future. Of course I did the work of learning the GW-Basic myself but if I hadn't had the manual for GW-Basic that shipped with the computer I would never have known that I even found programming interesting not to mention enjoyable. Which language should kids learn first? Well , it should be any language where they can learn only a few functions and a few syntax rules and immediately put something together with it to get a feeling of accomplishment and intrigue going. I would go with C/C++ (because you only have to learn a few things to get started using it , although this probably applies to a lot of languages) , maybe BASIC but I don't know what it's like these days , and a nice graphics library like Allegro to give some visual feedback to what's going on inside the program. My Website! | EAGLE GUI Library Demos | My Deviant Art Gallery | Spiraloid Preview | A4 FontMaker | Skyline! (Missile Defense) Eagle and Allegro 5 binaries | Older Allegro 4 and 5 binaries | Allegro 5 compile guide |
|
James Stanley
Member #7,275
May 2006
|
Quote: Depends on the Child. Many need a little extra proding and attention, while others could probably manage full on C++ with no real problems.
In hindsight, I would much rather people showed me real C/C++ first, even if I was then showed Basic. I spent loads of time programming in Basic, partly because I couldn't make the C book I got from a library work, partly because it took me forever to get a compiler (the first one I got was MSVC which I got from a pirated disk from someone at school who was using it to steal Visual Basic), but mostly because I had this idea that C/C++ were what proper programs were written in and would be far too difficult for me. That was much more of a long-winded rant than I intended it to be. Sorry. EDIT: Quote: Schools would be the ones most likely paying out the money I think.
Nice plan. I can't think of any other entity that would pay for programming tools. |
|
Slartibartfast
Member #8,789
June 2007
|
Quote: Nice plan. I can't think of any other entity that would pay for programming tools. Like those ancient Borland C++ "programming environment"s we were instructed to download for free, and used in class and at home. Though to be fair, when we switched to VB.NET (:() we used Visual Studio 2003, until they decided to switch to 2005 (a horrible decision, since their computers couldn't handle it). ---- |
|
James Stanley
Member #7,275
May 2006
|
What. The. Fuck? EDIT: |
|
bamccaig
Member #7,536
July 2006
|
nonnus29 said: Then the other question is that of language. Which language should kids learn first? A Basic, or something like a subset of Java (since Java is used in the AP exams and will most likely be taught in the high school curriculum). IMO, the first language should be C and/or C++. Partially because that's what I first learned and I loved it. They also offer a lower-level understanding of the program and offer more control, which for a beginner is useful in learning (you could even throw some assembly in there). C# would be my second choice because it's a very nice language to learn. D is a another nice language. nonnus29 said: Has anyone taken computer programming in Highschool? What was your experience? What language was used? Did you use an IDE? In grade 12 I took a grade 11 level computer science course. In grade 11 I didn't even know such a thing existed. I don't even remember exactly how it happened, but it probably paved my way to a career. The actual course used C/C++, with an emphasis on C++, and we used Visual Studio 6 (it would have been nice to use MinGW or GNU tools so that I wasn't reliant on Visual Studio for so long, but now that there's a freely available express edition it's not such a big deal). Matthew Leverton said: The big thing here is that most high school educators are going to be TERRIBLE at computer science at any valuable depth. So you don't really want them teaching programming anyway. Anything else can be saved for college. You have four years to learn how to program there. And any good programmer is going to be self taught anyway (or self-motivated in the least), since learning how to solve and debug problems is the most important thing. In my high school computer science class the teacher did nothing more than assign chapters to read and examples to do. That's all he had to do. If somebody had a problem with something he would explain it, but mostly we did it ourselves. We're talking about HelloWorld and GuessTheNumber programs! If by grade 11 you can't follow simple instructions in a textbook without the teacher holding your hand then you're in the wrong class (and a lot were, but most still managed to get the credit). A lot of people complained because the teacher didn't do anything most of the time, but I preferred it. He stayed out of the way and let me learn on my own. It was great preparation for college. nonnus29 said: Just to clarify; I'm looking at this from a business stand point: I have a language already (NASIC: adding {..} syntax would be trivial) and using something like Qt to create a flow chart generating IDE based on QtScintilla is (seems to be) very doable. While it might be possible to market, I wouldn't personally encourage it. If it's going to take a lot of work it might not be worth the time. A better approach, IMO, would be to write a textbook that was basically a tutorial for simple game design with something like C++/Allegro that provided the art and sound and walked them through putting it together to make simple games. However, I think jumping straight to game making would be extreme and it's more beneficial to learn about programming instead. I don't personally see high schools offering a game making course because learning to program would be a prerequisite and there is only so much time in high school. A WYSIWYG system doesn't really prepare students for the game industry (since things don't work that way IRL) so it would only be useful for fun (elementary school, perhaps?). Something event driven that's WYSIWYG sounds basically like Flash, which high schools already offer, so I don't really see this QBASIC venture as being successful. SiegeLord said: Also, people consistently underestimate the intelligence of children, and instead feed them drivel that the adults think is 'basic' enough for them to understand, while they are actually capable of doing so much more. QFT. -- acc.js | al4anim - Allegro 4 Animation library | Allegro 5 VS/NuGet Guide | Allegro.cc Mockup | Allegro.cc <code> Tag | Allegro 4 Timer Example (w/ Semaphores) | Allegro 5 "Winpkg" (MSVC readme) | Bambot | Blog | C++ STL Container Flowchart | Castopulence Software | Check Return Values | Derail? | Is This A Discussion? Flow Chart | Filesystem Hierarchy Standard | Clean Code Talks - Global State and Singletons | How To Use Header Files | GNU/Linux (Debian, Fedora, Gentoo) | rot (rot13, rot47, rotN) | Streaming |
|
TestSubject
Member #8,989
August 2007
|
I'm finishing up 10th grade now. I would have really liked to have some sort of computer class, one that wasn't a worthless piece of crap. Fifth, sixth, and eighth grade we had computer class with Mr. Monar. It was all super intense things, like making a folder. And stuff. I had been expecting something slightly interesting...but no. I know it was middle school, but this was not at all what interested me in programming. Or computers at all. The teacher was not very good, certainly not good enough to be teaching a course. As for high school, we have absolutely nothing. A new science building is being built, and a computing class has been talked about. If it happened, the class would be started when I was a senior. By then, it will probably be way below my skill level unless it is in a language I know none of (Lisp, Perl, Python, etc), and even then I would probably learn it pretty fast. I'm not saying I'm great at programming (I'm not), it's just that starting something that late is no help. I can't remember what they were going to teach the class in...I think Java or VB. I think VB.
|
|
Thomas Harte
Member #33
April 2000
|
I think that a potential problem here is that you're asking a bunch of programmers what value they see in kids learning programming. I think it's pretty obvious that none of us are going to say "there's no value, forget about it" and, inevitably, most of us are going to find a reason to justify whatever route we took. Because objectivity is hard — really, really hard. My personal experience is similar to Matthew's. I started at age 8 on an 8bit computer. When you switched it on, you'd instantly get a menu with four options. One was a calculator with variables and stuff that was essentially a stripped down version of the BASIC, another two went into BASIC in different configurations, and the fourth loaded other software from tape. So it wasn't really like an OS that shipped with a BASIC, it was a BASIC that shipped with the bonus feature of being able to load non-BASIC software. The manual that came with the machine had a full documentation of the BASIC language, and we had a pile of magazines with type-ins. I learnt from those. Everything subsequent to that is not really relevant to the question you're asking — i.e. what sort of thing we think should be first presented to spark an interest. Maybe as a result of starting off in an incredibly simple environment on an incredibly simple computer, my interest in programming has always been trying to understand a system from top to bottom. The fact that the system I first tried to understand was an entire computer is neither here nor there. I think that whatever you present to the kids should have enough background functionality to allow them to express creativity relatively quickly (which, in my case, was provided by the line/circle drawing commands, text output stuff and keyboard input stuff) but not have so much hardcoded that the child cannot reach a point where nothing that is happening is 'magic'. That all said, if you're really just trying to spark an interest then your system need not be an end in itself. If you implement some sort of simple game engine (and, please, don't do a side-scrolling tilemap game — they're about as relevant to today's children as introducing them to television production by making them record a three-set drama live to 425-line black and white tape) to start them with scripting, then make sure they can elevate as far as seeing your code for that engine and compiling it in whatever you used. [My site] [Tetrominoes] |
|
nonnus29
Member #2,606
August 2002
|
TestSubject and bamccaig illustrates another point: At a certain level the software can not only help the kids, but also help the instructor who is not a computer science person in the first place. Maybe it's a math or biology teacher who got 'volunteered' to teach programming and who is completely unprepared. For this type of teacher using Visual studio effectively to teach a class is probably not going to happen. Edit: @Thomas - I agree, I personally think software development is a horrible profession to get into: sit in a cube all day and try to be miracle worker and read peoples minds to try and determine what they really want. The only good thing about teaching programming effectively is to give kids the choice; "hey this programming is pretty easy, I could get a job doing this or... be a Lawyer! Yeah!" |
|
|
|