Ask Slashdot: Best Strategies For Teaching Kids CS Skills With Basic?
beaverdownunder writes We're currently working on developing a teaching platform based around our BASIC interpreter DiscoRunner, and we would love to hear from Slashdot readers as to what methods they've used in the past to teach kids computer science concepts — which worked, what didn't, and why? This will obviously be invaluable to us when it comes to working out the lessons that will be taught in our fight-to-save-the-world-from-evil learning environment, and we would be eternally grateful for any scraps of wisdom you could toss our way.
That, and give them a problem to solve. Better yet, let them find a problem to solve.
If there is no drive (i.e. "I just want to learn how to 'program'") they will learn nothing.
My kid is 7 and is getting pretty darn good with Java... Not because he wanted to learn to program, but because he wanted to mod minecraft. Programming was a side-effect to solving a problem. Now he loves it for what it is... He made the initiative on his own and he's much more appreciative on what he accomplishes.
GOTO is well-known as a beneficial logical statement. I suppose in this day and age, we're going to need something like this:
Thanks to the War on Drugs, it's easier to buy meth than it is to buy cold medicine!
My daughter took a programming class using Basic during her freshman year. I encouraged her to take it, so she could see that there are multiple ways of solving problems. Unfortunately the teacher was having none of this. He dictated to his students exactly how he wanted them to write the programs. This was very disappointing and incredibly discouraging for my daughter. Let the students struggle a little bit, and let them find ways to complete their assignments. When they're done present some of the students' solutions to the class, and talk about how they solved the assignment and discuss alternatives. You'll need to be respectful. People that are new to programming can be pretty sensitive about their code, so make sure you take that into account. You don't want to make somebody feel stupid, especially when they probably worked very hard on completing the assignment. Lastly, maybe you should consider a different language. Maybe you should consider Python or even C++.
People have been saying this for 60 years, and the reverse has happened. As programmable devices continue to propogate the need for programmers only grows. It's becoming standard for all medium to large sized businesses to have a software department, so they can get the software they need to run their business developed. I don't see that trend reversing anytime soon.
Firstly, don't confuse the students by telling them it's Computer Science, if it's only simple programming.
I think I owe everything to this book:
http://www.amazon.com/Brain-ga...
26 short (1-2K) games/puzzles - you have the source, can you solve the puzzles?
Implement a turtle-based drawing API and build a curriculum that introduces programming concepts with turtle graphics.
I am becoming gerund, destroyer of verbs.
That, and give them a problem to solve. Better yet, let them find a problem to solve.
So much this. Programming is a practical skill, not unlike juggling. There's ultimately very little beginners need to learn, the bulk is merely practice and experience.
Good beginner problems, unfortunately, are really difficult to find. My go-to problems are "math quiz", "triangle", "pyramid and diamond", "NIM two-players" and "NIM one-player". "Math quiz" and "NIM" are self explanatory. "triangle" and "pyramid and diamond" need a bit of explanation. Essentially the student is challenged to accept a height as input and output a right-triangle (made of asterisks) to the console. The pyramid is a more advanced variation of that, where they output a pyramid instead of a triangle. As a second part of the pyramid puzzle, they're tasked with outputting a diamond (essentially two pyramids with one inverted, forming a diamond.)
Required reading for internet skeptics
By the time these kids grow up, "programming skills" will be obsolete
The essential skills are the same now as they were 60 years ago. What makes you think that will change in the next 10-15 years?
Required reading for internet skeptics
"If there is no drive (i.e. "I just want to learn how to 'program'") they will learn nothing."
One should not discount the motivations of others. "I want to learn how" can be just as effective as "I want to mod minecraft" (if not *more* so).
A.
...bringing you cynical quips since 1998
This is what I leaned on when I was 10 - and I can't think of anything better to teach kids basic programming skills. This was a operating system that had basic built in, and you just programmed right into the OS, and ran right from the OS. I can't think of anything simpler. The simplicity of it also allowed for the learner to just focus on logic and programming. I truly think it's the best possible learning tool. Even graphics were simple - nothing fancy - just lines and set/reset statements, paint statements... All this stuff was on a single page - the same one that the text was written on. I loved it - and I still do, perhaps for nostalgic purposes. But I swear by it. You can run it in an emulator, you just need the ROM, which is pretty easy to find. Get the "Extended Basic one". The real key here would be to find those original books - those things were gold and they taught in a step by step manner. Those - I have no idea how to find. I'm gonna look though, and if I find it, I'll put a link to it up here. I might even have the original books in my old bedroom at my parents' house. If I can find them, I'll scan them page by page and post a link to those as well... Anyone else think this is the ultimate tool for leaning programming or is it just me?
Step 1: Show them the BASIC interpreter
Step 2: PRINT, INPUT, IF, GOTO, END
Step 3: Show them Python, C++, or even JavaScript, if you hate them
I know it's not really what a platform-builder wants to hear, but please use BASIC only for purposes for which it's the best tool. It's ideal for highlighting the often-missed initial concepts, such as the facts that statements are executed in order, variables can store information and change, and that certain statements can change the program flow. Those core ideas are so internalized by experienced programmers that they often won't understand how students could be missing them. From the student's perspective, it's perfectly reasonable that once statements are made anywhere in a program, the computer should pick which one to run based on what would make sense. It's also reasonable that a variable should be set once and never change, or should be usable before being set because "it's set right there!"
BASIC has one major advantage over every other language out there: absolutely no boilerplate, and absolutely no hidden intelligence in the interpreter. Everything that makes the program run is visible in the code, and everything in the code does something lesson-related in the most minimal programs. Contrast with C, which requires defining a main() function before the student knows what a function is. This simplicity and obviousness makes BASIC the perfect tool for demonstrating simple and obvious programs, but it's inelegant for learning any actual computer science concepts like memory management, design patterns, or data structures.
Those concepts are best covered in another language, which also highlights another important CS concept: The functional equivalence of all Turing-complete languages, but the effects of language choice on the difficulty of the project.
You do not have a moral or legal right to do absolutely anything you want.
Are you actively trying to make them future TERRIBLE programmers?
Who logs in to gdm? Not I, said the duck.
http://gvr.sourceforge.net/
Why reinvent the wheel. Check out Guido van Robot, a programming language that teaches all the basics of programming (problem solving, sequence, iteration and decision making).
Best yet, it already has fun progressive lessons that are perfect for teaching in the classroom.
http://gvr.sourceforge.net/les...
Whatever you do, remember, start with sequence, then iteration, decision making and ultimately wrap it up with problem solving.
1. Drop the Applesoft BASIC clone.
2. Create a programming language that natively interfaces with Facebook API, Minecraft API or whatever other software project they actually care about.
3. Show them a "Hello world" example.
4. Wait five minutes.
5. Classroom full of programmers.
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
While your saving the world idea sounds exciting, it won't appeal to a large segment of your audience. Give them a choice of some other options, maybe something more social.
Perhaps - before you even attempt that:-
Fix those point and you'll have a product that stands head and shoulders against the competition. Which isn't hard - most of the edutainment market is utter crap (I work with a large number of schools that buy utter shit on the basis of "social-networking" merit points)
Until then it 'seems' like you (Melody and Anne?) are just spamming Slashdot to promote a 2 month old project.
Not that the idea isn't without merit - it's just that the "edutainment" market is overcrowded with "outsourced" get-rich-quick, all-froth-(and social marketing) and-no-beer closed-source schemes knocked-up-in-an-afternoon that leave a trail of broken promises in schools already hard pressed to do the bare minimum with their tiny budgets
Good luck
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration" ~ Edsger W. Dijkstra
Slide rules are an excellent example because they went from a must have to a nice to have to a wtf is a slide rule.
The demand for fortran programmers is a lot lower than it was 40 years ago. And yes, the problems have changed, and the old solutions no longer work in new problem domains. Nobody is developing web sites or apps in fortran or with a slide rule.
The simple fact is that software development will continue to be off-shored to wherever is cheaper, until such time as it is automated and all those coding jobs implode.
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
Hint - she only started to get set up over the last few months. This article is a slashvertisement for her business.
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
It's Melody Ayres-Griffiths. She's promoting her new (started setting ip up in December) pixelwitches, which will teach you "training in graphic design, music / audio and videography on Macintosh and Windows-based PCs for $97 per hour." And let's not forget drupal and wordpress work.
But from the look of their discorunner site (hint - she used to do music stuff) she needs someone to tell her that the '90s wants their butt-ugly wordpress theme back.
Archive org shows that the original owner of discorunner.com let it expire in the spring of 2014. It was taken over by the new owner on January 15th of this year. The previous site had to do with ... wait for it ... jogging.
Slashvertisement, pure and simple.
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
Isn't it easier to just take a question at face value?
While you might be right about the motivation, if you're correct then perhaps it's something to be taken up with the editing staff? You could add your voice to the other commenters headed in that direction.
(Aside, the market will ruthlessly sort out whether they provide a service worth the prices they're asking. Me? I find watching the futile struggle from a distance can sweeten that bilious taste in your mouth. But be warned - it can backfire if they succeed.)
I wish you peace.
In The Netherlands the standard installation in classrooms nowadays is "Gamemaker". You can teach kids a lot about the first steps of programming while they get a game up and running. Takes them at most an hour for a basic tutorial, and then they can add stuff.
Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
I see a lot of negative comments pertaining to teaching basic as a first step in understanding how to code. I respectfully disagree. I believe that basic removes all of the complexity that gets in the way of learning pure logic skills. I don't see any sense in teaching kids to program and having pointers or even compiling and linking when the best thing for them to learn is the purity of understanding how to create simple algorithms to solve problems. If they show an interest, they can figure out more complex things like compilers, and the complexities of lower level languages like C. I stated in another comment, I learned how to code on a TRS80 color computer, and I think it was invaluable to master that before moving on to more complex and real-world things...
... by trying to teach them the worst abomination of a programming language under the sun. Even a good macro-assembler is better. I also strongly advise you to stay away from Java and JavaScript. These languages are only for experts that already have serious skills, all other develop very bad habits using them. Possible candidates if you really want to teach them are Python, Ruby and maybe Lua. But seriously, CS concepts are not something you teach with a language, that would be like teaching them to use a pen of a specific color instead of teaching how to write.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
As I pointed out, "This whole 'OMG if my kids can't code they'll be disadvantaged for life' stupidity has to be called out for what it is." And that includes those trying to profit from it in various ways - and not just the big boys either.
This is a blatant slashvertisement - that doesn't mean that it's in any way approved by the editors. It means that it's an article that was submitted by the submitter with the express purpose of pimping her new project.
So, submitting it, it's fair bait for getting whacked. Same as all those stupid "Look KICKSTARTER OMG" articles.
They're both binspam. While I usually down-mod them in the firehose, (same as those I want to learn how to code so I can make a zillion bux because my career sux), every once in a while I bump a really bad one up in the hope that it will make it to the front page for the shellacking it deserves.
Haven't been disappointed yet :-)
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
It's Melody Ayres-Griffiths.
I wasn't sure if it was Melody, or her partner April. I know 'of' them (I have a voluntary position on a community funding body, so I've seen previous "software" by them) - so I chose my words carefully when describing the "market", the nature of some (many?) of those trying to, um, mine it - and what I'd want to see before I'd vote in favour of funding it. Melody(?) has previously promoted this latest 'project' on /. celebrating 1000 downloads (by who?).
Whois showed the current registration was recent , hence my comment about, um, young code.
DiscoRunner is different because:-
Yes, I'm a jaded cynic (and Australian).
I used to joke with my wife that when I turned 40 I'd have to grow a ponytail to still be considered relevant as a programmer. My 40th birthday was a decade ago and I haven't had to grow the ponytail yet.
The book "Decline and Fall of the American Programmer" was written in 1992. The author got it wrong because he didn't understand how the Internet, smart phones, and now "smart everything" were going to push software into so much of our lives. He was wrong in 1992 and you can find slashdot articles saying pretty much the same thing in the early 2000s. They were wrong too.
How long will software people be in demand? Who can say? Based on the last 50 years or so the demand has been pretty good (with some downturns here and there). Yes, ageism is a danger and yes you may find yourself with skills no longer needed, but looking forward there aren't many vocation choices that don't involve some sort of risk.
If you're good at it, keep your skills fresh, and pick good companies to work for, you can make a career out of it. Having other skills doesn't hurt either.
While I don't think that a huge emphasis on coding for kids (who aren't otherwise interested) is a good idea, they should definitely get some exposure to it. Just like they should get exposure to art, music, literature, or even robotics. I also believe that there are huge opportunities for those who can combine programming with expertise in another field.
I have a son who is in his early teens. He really has no idea what wants to do for a living yet and that's fine. He has a vague notion that he might want to do something with computers. He's a reasonably smart kid but I don't think that's his calling. He's kinda sorta interested in electronics and will mess around with Lego Mindstorms with some prompting. He's had a little experience with programming but doesn't have nearly the excitement over it that I did at his age. Still, I've encouraged him to take a one semester course at his high school. I think that will tell him if coding is something he wants to pursue further or not, even as a hobby.
Before that I had a significant experience writing programs, at least for a 13 years old in the nascent PC world. The problem was that it was very mechanical. The problem is that most kids in the 9-12 year old range do not have a great deal of abstract thinking skills, so can't really program computers, any more than they can do algebra. Yes, they can do some coding, but not the analytical work. Yes, some kids can do algebra at 10, but not many.
So this is why things like Alice are used to teach the concepts to pre-teens and children. Using heavy scaffolding, which means I wrote most of the programs myself and just let the kids type it in, I have taught 11-13 year old kids to make games in python as a web based application.
For pre-teens with minimal abstract thinking skills, the most interesting thing that can be taught with programming is cause and effect, a critical skill for children. This leads directly to more abstract skills as the child ages.
"She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
While we're on the subject, that should be "needlessly pedantic".
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration" ~ Edsger W. Dijkstra
1975 called and they want their very out of date quotes back.
And you're still banging the BASIC is good - oh, look it's now in 256 colours drum? I guess in your fanboi haste you missed where I linked to the Wikipedia page on BASIC - but don't let it stop you from spewing realms of your BASIC trivia creds (you forgot the beauty and joys of VisualBASIC). BASIC has new features and Barbie does IT. Grow up and eat your own dog food - 'cause 1988 wants BASIC back (and it can keep it). Maybe try getting children interested in any version of BASIC when they can choose from modern scripted languages (call it - testing your beliefs, I have and I know the answer). Unless you're committed to the 90's (the high point of your life?) when music was good, and Linux and life was simple (for simple people in a land of lollipops and unicorns).
>shudder<
I really don't like Gamemaker. The presence of a GUI doesn't immediately make something "visual". They failed to abstract away the most unnatural parts of code, and then hidden away crucial parts of the logic. Why do you have to use a "score" object for your lives? Renaming numerical variables as "score" has no benefits whatsoever, because the default action (set) runs counter to our understanding of scores. Scores may be increased, they may be decreased, and they may be set to zero. The idea of arbitrarily resetting a score to any old number doesn't fit with our intuitive understanding of what a score is.
Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration" ~ Edsger W. Dijkstra
1975 called and they want their very out of date quotes back.
Actually, this is only one from a series of "definitions" Dijkstra made for a humorous glossary of computer languages on an old mailing list.
Seriously, that comment was made in 1975, when the state of the art in BASIC was more or less "goto". By 1982, BASIC variants with proper named functions and procedures existed. It also reduced the impact of line numbers drastically with the "RENUMBER" command which renumbered and tracked gotos and gosubs (excluding computed gotos). That was BBC Basic.
By 1988 QuickBasic 4.5 was released (later adapted to be qbasic), which contained proper nested blocks, and made line numbers completely optional. I'm sure there were earlier versions doing such things (certainly earlier versions of QuickBasic), but many people here will be familiar with this one and its derivatives.
The system alluded to in the summary/question is an Apple ][ BASIC emulator. It is not BBC BASIC. It is not QuickBasic. Apple ][ BASIC. With emulated Apple ][ display hardware. This is not something that will grab kids' attention.
Besides, there comes a point when either you've changed BASIC to such a point that it's not BASIC any more, or it's a clumsy morass of different tagged-on paradigms.
Is BASIC still BASIC if you add an INCLUDE keyword? The fundamental paradigm of BASIC was that of the monolithic code block. Even GOSUB subroutines didn't have a fixed entry point -- only a fixed RETURN point.
Doing stuff early on with maps and filters is a better way of getting kids' attention, as all of a sudden, you're doing a lot of work in next to no time at all.
Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
You haven't identified the problem you're trying to solve. At least you made a huge mistake of asking here since you're asking for opinions from an extremely opinionated community without taking the time to actually identify what it is that you're actually having problems with. It seems you just haven't even bothered thinking about it.
1) Are you trying to teach CS to children? Is this the goal? Have you considered asking whether people with legitimate pedagogical sciences experience and studies have identified methods of teaching children topics of this type?
2) Are you asking if there are other tested methods of teaching children computer science which have proven effective that can be adapted to the tool you want to use?
3) Are you in love with a certain tool and while it has almost no practical value to anyone else, you considered it might be a great way to teach kids and now you want to see how you can justify the existence of such a tool (which should simple be, it was fun to make) by trying to use it in CS education of children because "Hey back in the 80's I used AppleSoft Basic and learned from that!"
4) Have you stopped for a minute to decide whether you're narrowing your scope so much by choosing a specific tool and language that your first goal should have been "How do I teach kids CS?" and then "Are there any learning platforms already available for this?" and then "What are the benefits of making a new learning platform using a language like BASIC when the rest of the world, using well funded pedagogical studies have chosen alternative approaches?"
5) Why are you trying to choose a language as a tool. You want to teach principles and things like linked lists and design patterns just are damn near impossible to implement in your language. Any form of real math is also shit in BASIC. Yes, we managed to do these things back when a PASCAL compiler cost $400 and a cheese burger cost $2 and BASIC was free. We have moved on.
6) What are you actually hoping to teach with BASIC? Are you trying to teach them how to draw a line on a screen? Are you trying to teach them to do math? Teach them to do something more applied? What kind of tasks do you actually plan on teaching them? Did you honestly put any thought into this at all.
I know I'm tearing you up here, but I hope you'll consider it tough love. You're trying to mess with children's minds. This is more than just a fun toy... you need to consider the implications of things like "If I teach them BASIC today, will it actually assist in building interest in kids that otherwise would have never programmed or will it chase off the kids who thought it might be fun but were scared to try and now will never try again because it was too nerdy."
There are people who spend decades researching how to introduce topics like this into schools. They don't just say "Hey wouldn't it be great if we made them play with this for a bit!". These people instead are educated not only as engineers but as school teachers. Most of them have at least one masters and one bachelors and they think in terms of "How can we most productively introduce a topic like programming and CS to children" and then they research it with teachers, parents and children.
I think you are very cool for being interested in getting involved.... I hope I gave you some food for thought and I really hope you take your ambitions further and accomplish your goals... once you figure out what they are.