Slashdot Mirror


A High School Programming Curriculum For All Students?

jonboydev writes "I know there have been many postings on what kids should begin programming with, but I have a little different perspective: I am a software developer looking to help my brother, who is a high school teacher, develop a programming curriculum. The catch is that it is a class for all students to take, not just those interested in programming, and therefore will focus heavily on teaching problem solving. This class would follow after a class using Lego MindStorms, and we are planning on using Python. I'm sure many of you would agree that everyone can benefit from learning to program and any help would be greatly appreciated!"

214 comments

  1. Good luck with that by munrom · · Score: 1, Interesting

    You're going to have a mandatory programming class? Christ it's hard enough teaching the kids to save Office 2007 files as 2003 and you expect them to comprehend programming? It'd be like trying to force everyone to do physics, a complete waste of time.

    1. Re:Good luck with that by Anonymous Coward · · Score: 2, Insightful

      But i have heard of a lot of people that after programming for the first time loved it so much, they changed their future career plan.

    2. Re:Good luck with that by dkleinsc · · Score: 1

      The better approach would be to make programming a part of, say, the pre-calculus course, or maybe make Algebra II a prerequisite. If you do that, you end up with students who have a good background in math and logic (in theory at least) and are ready for a bit of applied discrete math.

      That said, I've taught the basics to bright and motivated 12-year-olds.

      --
      I am officially gone from /. Long live http://www.soylentnews.com/
    3. Re:Good luck with that by MongolJohn · · Score: 1

      Welcome to Modern Bureaucracy-Driven Education. We now try to teach to the highest common denominator. I have to teach Algebra 2, including matrices and determinants, polynomials, logarithmic and rational functions, series, etc. (i.e. college-prep curriculum) to kids who don't plan on going to college, and never plan on leaving the farm. To more directly address the problem at hand, Guido van Robot is a fun, engaging, interesting intro to programming. And it is written in Python.

      --
      Personally I'm always ready to learn, although I do not always like being taught. -- Sir Winston Churchill
    4. Re:Good luck with that by BrotherBeal · · Score: 2, Insightful

      I concur - the same happened to me. Of course, programming had the sizable advantage that a Latin degree isn't worth nearly what it was 1,000 years ago.

      --
      I'm disabling ads until because I choose not to reward redesigns that are less usable than "view source".
    5. Re:Good luck with that by N3Roaster · · Score: 1

      Really? I had a (completely useless) mandatory programming class in the 7th grade (it was in BASIC on an Apple //e and I had already been offered programming jobs at that point [not that they could have hired me, but they didn't know how old I was]) which if memory serves, all in the class managed to pass. I also managed to teach most of my 4th grade class basic HyperTalk (on an Apple IIgs) when weather made outdoor recess unappealing. The problem here isn't that the students won't get it (assuming the class is kept accessible and the teacher is engaging). The problem here is that high school is pretty late to start doing this. By that time, students interested in this will have already learned the material of the class (if the class is mostly kept to basic concepts and problem solving) or students who have not previously been exposed to programming will get lost pretty quickly (if students who have already figured out the basics are going to stay engaged). My advice would be to keep things basic so that those who haven't been exposed to programming can still get some value out of the class while being flexible enough to let students who can demonstrate that they don't need that develop more advanced skills (perhaps separate them off, toss them a reference manual, and give them a moderately challenging project to do instead).

      --
      Remember RFC 873!
    6. Re:Good luck with that by SatanicPuppy · · Score: 1

      I missed the logic part of Algebra II. Maybe you meant Geometry?

      Having actually majored in Logic and Comp Sci at different times, I can safely say that the 2 paltry logic-ish courses, and three proof-free math classes most compsci students have to take are no substitute for a hard-ass class in deductive proofs.

      Since logic and reasoning are hardly ever taught at the high school level, it might be better to just have an "applied logic" class with a programming element. Make 'em program in Prolog, and do first order (non-modal) logic problems.

      That would be a cool class.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    7. Re:Good luck with that by jgtg32a · · Score: 3, Insightful

      It didn't work like that for me. In high school I was very happy to take a programming class using C, technically C++ but we never got to objects, but when I got there it quickly started to suck.

      Our teacher was a bastard, all of our assignments were text processing, using functions that we had to write our selves. I could do it but it sucked and wasn't fun so I basically swore off programming for the next two years of high-school.

      In college we had to take a programming class which I wasn't overly happy about. The language we used was Perl, and there was a good amount of text processing in that class also but it didn't suck for two reasons.

      1. We used a language that was appropriate for the type of assignments.
      2. The class was well ordered, we had an end goal, we were given a project at the beginning of class and every assignment was designed to help us complete the project.

    8. Re:Good luck with that by Anonymous Coward · · Score: 0

      Or, you know, you could have a class that doesn't put off students not already interested in maths.

      Seriously, what do you think Jo average would like more:
      A programming class that lets you write little games and apps or a programming class promising to lead him on to harder math than he does now?

      Give a gentle, fun for all approach and Jo average might find out that how he thinks of math and logic changes rather than putting him off at the start.

    9. Re:Good luck with that by HTH+NE1 · · Score: 1

      My high school's computer programming class was also AppleSoft BASIC on Apple //e computers. For awhile it was a mandatory class. Eventually they created another class called Keyboarding, which really was just typing but using a computer instead of an IBM typewriter, and it counted as computer science credit.

      Programs in the BASIC class were writing a database program (which I'd rewritten the original spaghetti code one year to use GOSUB instead of GOTOs, which then became the standard that was taught), a graphics program (make an interesting picture using BASIC, by formula or read from DATA statements), and finally a program using shape tables (to introduce binary and hexadecimal numbers and their conversion to decimal).

      I'd spend at least a half hour every day in the high school's computer room while my mother finished for the day (a teacher in the same school) even before taking high school classes. I'd find myself writing other students' programs for money, teaching myself assembly language and the basics of how games were written for the platform, while at home I moved on from the Apple ][e to the IIgs and started applying what I learned to its capabilities.

      Senior year, when it came time to take the course, I was just given credit and an extra free period as, during the previous summer, I'd already taken enough classes to have more college education on the subject than the teacher.

      --
      Oh, say does that Star-Spangled Banner entwine / The myrtle of Venus with Bacchus's vine?
    10. Re:Good luck with that by Austerity+Empowers · · Score: 2, Insightful

      You are probably the intended audience for the "general programming class". This is the crowd that wants to solve a really big problem, and doesn't want to get bogged in the details. Someone is going to write the compiler for you, write the functions which do something you need, etc. You just want to integrate packages, think big and are happy to hack and slash bugs as they crop up. I suspect that most people who use computers to accomplish a task, want to know simple ways of automating mundane tasks, etc. Programming as taught in school doesn't do this for you, because it's not programming, it's "computer science", the class title "Intro to programming" is what misleads. This is in my mind what the poster really wants to do.

      I agree that #2 is how all applied math/science classes should be taught period. But #1 is the same as "shortcut for hard problems". For "general programming", this is acceptable. For professionals and for those interested in computer science, it's absolutely not. And this is the source of your frustration.

      For those of us into the science of it, this represents the core of our art. Strings are just a simple instantiation of the abstract concept we deal with. Strings are easy to print, observe and debug...but they're just a metaphor. After 20 years of reading them, we can spot problems and patterns very quickly, so they're convenient.

      As for using languages that simplify your problems for you, this poses issues to professionals for many reasons. First, because depending on your line of work, using an interpreted language and in fact using anything other than straight C/C++ may be problematic at best, forbidden or impossible at worst. Second, because in the real world, you still end up having to do a lot of string processing even if you're doing something relatively invisible like device driver development. Third, when it is possible and desireable to use specialized languages, you often need or want to understand them more fundamentally than by surfing the web for documentation. At some point you can learn perl, python, ruby, javascript, etc. in mere days because you know the fundamental elements of the language, you can scan a manual for syntax and the few differentiating factors and quickly apply them. In a sense, you have been taught how to think about them. Fourth, and most important, because the skills, algorithms and implementations you use in doing that string shmooing are essental to pretty much everything else, which is why your curriculum was taught that way.

      So maybe you didn't like your programming class because it wasn't what you were looking for. You took the course because you thought you needed something but computer science wasn't it. You needed a tool, not understanding. High school does seem like the most appropriate place to teach people how to use tools. That's what I think the curriculum for a "general programming class" should be.

    11. Re:Good luck with that by denarii · · Score: 2, Insightful

      Since when? I graduated HS in '04 and they were definitely teaching to the lowest common denominator at the time. Good ole NCLB. I wish they were teaching to the highest common denominator. It's better that the kids who are actually going to go on to higher education get a good foundation in high school than to set the bar low so that those who are just going back to the farm/McDonalds don't fail at anything.

      I was a classic underachiever, none of the curriculum from elementary school onward was challenging enough and I never took school seriously because it was so dull. I got by with a C average by acing all the tests as I tended to skip school constantly and not bother with homework.

      I really regret it now. Obviously, it's not just the school system's fault. I should have taken it more seriously, but I was a bored teenager. If the curriculum and been more engaging and challenging, I might have looked up from my books for more than correcting my teachers.

    12. Re:Good luck with that by retchdog · · Score: 1

      Even the schools (which are colleges in my experience) which offer the class you're talking about, call it as "shell scripting".

      Although I was surprised that anyone had even enough clue to offer the class (the elite designing curricula have human shell scripts called "grad students"), it's a shame that it has such a crummy name. It should be called:

      "Getting shit done, by exploiting other people's hard work."

      That'd be a draw!

      --
      "They were pure niggers." – Noam Chomsky
    13. Re:Good luck with that by retchdog · · Score: 1

      As someone who was tricked into a math degree, and is only beginning to see its practical benefit, I wholeheartedly agree.

      It's funny; in high school I didn't see the point of memorizing all these tricks, when a computer could do quadrature (even some of my "superior" classmates didn't realize this). Now, as a stats Ph.D., the integrals are too fucking hard to do (closed forms don't give you much...), and I use a computer to do stochastic integration (MCMC). There's something wrong here...

      --
      "They were pure niggers." – Noam Chomsky
    14. Re:Good luck with that by jgtg32a · · Score: 1

      Again it was a high school programming class

      The Perl class wasn't a Comp-Sci either, and I have fiddled around with the programming a bit since then. My senior college project was a programming one and I was a cookie cutter for you're fist paragraph.

      More recently I was reading about the OpenSSL vulnerability and I ran into this article
      http://research.swtch.com/2008/03/using-uninitialized-memory-for-fun-and.html

      I'm now getting serious about learning software engineering aspect.

      As for my line of work I do policy and a bit of auditing, no programming involved.

    15. Re:Good luck with that by Austerity+Empowers · · Score: 1

      Last I checked, most high school programming classes are Advanced Placement Comp Sci. They're intended for college bound CS/EE types, not necessarily for anyone else.

      The sad truth is that in HS you usually still learn metalworking, woodworking, or mechanic type jobs...but you can't learn how to use a computer beyond "file->save" on a word document.

    16. Re:Good luck with that by jgtg32a · · Score: 1

      Not at mine it wasn't, private, we had about 6 or so different computer classes.

    17. Re:Good luck with that by Anonymous Coward · · Score: 0

      The best thing in the whole WORLD for this is Visual Basic. Get them doing some simple stuff first, then show them multimedia programming, graphics, and game programming. If that does not set their heart on fire for programming NOTHING will.

  2. How about Alice? by KingSkippus · · Score: 3, Informative

    Disclaimer: I haven't actually tried this, so this isn't an endorsement, but...

    Have you considered taking a look at Alice? It's the free system worked on by the late Randy Pausch to teach programming without jumping straight into coding. From the site:

    Alice is a freely available teaching tool designed to be a student's first exposure to object-oriented programming. It allows students to learn fundamental programming concepts in the context of creating animated movies and simple video games...By manipulating the objects in their virtual world, students gain experience with all the programming constructs typically taught in an introductory programming course.

    1. Re:How about Alice? by BigMike1020 · · Score: 3, Informative

      My father teaches a college course using Alice. It's sort of a programming for non-computer-science majors class. I've sat down with him a couple of times and played with the program. I suspect that for someone who doesn't have any programming experience Alice is really fun (creating movies, making things move onscreen), but for someone with any experience its all just a hassle. Too many mouse clicks and drags are needed to get simple things done, and sometimes the natural-language style of the program isn't as natural-language as you want it to be.
      But if it's a free program it can't hurt to try it out yourself.

    2. Re:How about Alice? by fermion · · Score: 1
      I have used Alice in an informal setting with about 2 dozen adolescents. It does teach some basic programming concepts like loops and conditionals. It is OO based, so students get into the habit It is very engaging. Average students will use it with minimal prodding. The two books that I use, Learning To Program with Alice and An Introduction to Programming Using Alice are very good. A motivated student can go through the book and learn a great deal about programming concepts.

      The Alice tutorials introduce the program to the point where the student can start some initial concepts.

      I think Alice has some applicability in the world of visual based programming where the level of abstraction is not as great as in traditional code based programming. For instance, Alice will likely not teach a student to truly abstract a concept into variables or how to swap values. It might teach high level architecture concepts, but probably not actual program design. It is probably the closest we have to programming for everyone, simply because it does not require the abstraction that makes coding so difficult for so many people.

      --
      "She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
    3. Re:How about Alice? by mc5809 · · Score: 1

      I teach an Introduction to Object Oriented Programming course at the university using Alice and have found it to be a good tool for introducing these concepts visually while providing a foundation from which students can draw when they start writing code in Java, C++, C#, etc. There are some bugs in the program, but version 3.0 is forthcoming and will be used in some Sims games. Hope this helps!

    4. Re:How about Alice? by brainvat12345 · · Score: 1
      I have been teaching my 9-year-old nephew programming for about 8 weeks using Scratch (from MIT), a free system built on Squeak. It is a great system, very engaging and fun, and a good place to start before moving up to more sophisticated systems. My plan is to graduate him out of Scratch into either Alice or Lego Mindstorms, with possibly scripting in Smalltalk when he gets a little older.

      I am very much bought into the teaching philosophies supported by Scratch and Alice--particularly that learning program ought to be more about learning core computer concepts and problem solving than worry about syntax. These visual systems do this quite well and I would recommend them even for adults--particularly those new to computers--before moving into traditional languages where you can quickly get frustrated by the syntax well before you learn the concepts.

    5. Re:How about Alice? by dark42 · · Score: 1

      NOOOOOOO!!!!
      Alice was the worst software I was ever forced to use. I hated my programming class during that period. The class got a lot better when we started learning Java, but I would recommend Python to any beginning programmer. However I don't think it's such a great idea to be forcing all students to take a programming class, I think a keyboarding/office class and basic network security would be a lot more useful for the majority of students.

    6. Re:How about Alice? by ooooli · · Score: 1

      I was a TA for a class that used Alice a while back ("Computer Literacy" -- intro to computing for non-majors). My impression based on teaching 3 labs a weak is, and I really can't put this strongly enough: Alice is misguided, it's counterproductive, and it's lame. Alice sucks.

      Alice is a very snazzy graphical system that seems to try as hard as possible to keep people from learning anything whatsoever about what programming is, how it's done, and most of all what it's good for and why it's fun.

      One underlying principle of Alice seems to be that, instead of exposing people to important concepts directly, we should make it all easier by sugar-coating everything with an elaborate GUI that lets you do everything by pointing and clicking and picking options from convenient pull-down menus. "Look mom, I created my very own virtual method by dragging the gum drop onto the candy cane!" Ok, I made that part up, but it definitely feels like that.

      In the end, the reality is that coding is hard, and some concepts you just have to wrap your head around. Alice doesn't help with that; it tries to make things easier and ends up teaching nothing at all.

      A good introduction to programming should not pretend that programming is easy. It should show students that it's hard but it's not magic. It's hard, but it's not so hard that everyone can't learn it. Most of all, it's hard but it's worth it, so students need to see real and useful and cool things you can do -- and this is, I think, the most important way in which Alice fails.

      With Alice, instead of doing something that could conceivably have any connection at all to real problem solving, students learn how to manipulate graphics objects in a virtual world. So basically, after the first class, they'll be able to make a badly rendered turtle spin around three times and then suddenly get very big, or something. Whee.

      Sure it's done using OOP concepts, but how is anybody supposed to understand what's useful about them by manipulating turtles? Also, do you expect students to get excited about that and stay after class to keep playing?

      So please, for the love of God, stay away from Alice. Python is simple and elegant, it doesn't force you to use advanced concepts early on (but they're there if you want them later), and you can do really cool things with a few lines of code. Perfect.

      Java is probably ok too -- although, do you really want the first line of code you ever see to be "public static void main(String[] args)"?

      Anyway. Thanks, I feel better now :) Good luck!

    7. Re:How about Alice? by Anonymous Coward · · Score: 0

      At Brown (cs.brown.edu), we've tried teaching with Alice in intro classes, and it's gone terribly. Have you considered TeachScheme or How to design worlds?

    8. Re:How about Alice? by usman_ismail · · Score: 1

      How about MIPS assembly? Its simple enough syntax wise, has lots of emulators and online tutorials and unlike high level languages it actually gives you a feel for how computers work.

    9. Re:How about Alice? by Anonymous Coward · · Score: 0

      Here at Slippery Rock University in Pennsylvania, we use Alice as the fundamentals of programming course (CPSC 140). It's a great tool for teaching the foundations of programming. Everything is based on objects, it's easy and fun to learn recursion, stacks and other basic data structures, functions, control structures, etc. Not to mention studies show that it has the ability to attract more females into the programming world. There are other schools that use alice for their 400 level classes to teach difficult topics easily.

  3. JavaScript? by mgkimsal2 · · Score: 1, Interesting

    I'm a bit biased, but JavaScript might be something worth teaching in addition to Python. It's in everyone's browser already, so no need to download anything. Can more or less work well on server-side or client-side (I'm not a SSJS guru, so I don't know if there's any major gotchas). It has a moderately simple syntax, and whitespace isn't as important as in Python.

    1. Re:JavaScript? by pmarini · · Score: 1

      It's probably better to learn with tighter rules first that can be relaxed later... otherwise you'll never convince someone that a camelBump may not fit in a NeedleHole (case sensitivity) or that you need to type a semicolon at the end of each line when a BASIC dialect was your best friend...

      --
      Can I put a spell on those who can't spell?
      Your wheels are loose and they're losing their grip, good you're there.
    2. Re:JavaScript? by grumbel · · Score: 2, Insightful

      If the job is to teach programming to people who don't care about it, I'd probably start with plain HTML and CSS. Thats of course not exactly real programming, since not Turing complete and all, but it teaches you the basics of how a computer works, that data and presentation are seperate and all those very basic things.

      Understanding those basics about how a computer works is much more helpful in the long run then something very abstract like sorting a list, since it applies to almost all daily computer use.

      Moving on to Javascript later on would of course always be an option. However one thing i really like about Python is its interactive interpreter, which allows you to get started in no time and gives you clear cut error messages, with Javascripts always a little obscure what exactly went wrong.

    3. Re:JavaScript? by techprophet · · Score: 2, Insightful

      +1
      I totally agree. I do both JS and python programming.

      python for server side, JS for client side, and python errors are much more human-readable/understandable IMHO.

      And the interactive interpreter is a godsend for fiddling with a messed up class function (ie temporarily redefine it)

    4. Re:JavaScript? by mackil · · Score: 2, Interesting

      I'm actually teaching a high school class on the basics of programming using Javascript for that same reason. I chose that language because their network is so tied down with restrictions, we never would've gotten the network admin to allow us to install a compiler, let alone an IDE.

    5. Re:JavaScript? by msuarezalvarez · · Score: 1

      HTML and CSS do not teach you *anything* about how a computer works. At all.

    6. Re:JavaScript? by grumbel · · Score: 1

      They don't teach you the low level details about bits and bytes, they do however teach you the whole thing about structured data, which pretty much what any program today uses in one form or another.

    7. Re:JavaScript? by msuarezalvarez · · Score: 2, Informative

      There is absolutely no need to teach about bits and bytes: they are only incidental in actual programming. Programming is reasoning about actions, evaluation and transformation. HTML and CSS simply do not help with that.

    8. Re:JavaScript? by grumbel · · Score: 1

      Programming is reasoning about actions, evaluation and transformation.

      Programming is in large part the manipulation of structured data and HTML/CSS can help quite a bit to get the 'structured data' part understood, add Javascript or Python when you want to go into the manipulation part of it. My point is simply that learning how to sort a lists has zero application in everyday life, understanding how pretty webpages you see on the screen are represented as structured data on the other side is quite a important thing, because thats how pretty much all software works and because thats a thing most non-computer people do not understand.

      Of course when the students already get those basics right, feel free to move on to hard CS teachings or do some fun project with Python and Pygame or whatever.

    9. Re:JavaScript? by krondell · · Score: 1

      Completely agree. IMO, web development is exactly the right technology to teach in school. You've got freeness and ubiquity - as noted, you can start with nothing but a browser and a text editor. You've also got great motivation on the part of the kids - they all have online lives, so generating web content interesting to them. And you've got instant visual gratification. In only a few minutes you can have kids displaying graphics. If you put that together with an advanced class about PHP (another C-like syntax) and SQL, by the end of it you'd have semi-competent LAMP developers. Very useful general skills.

    10. Re:JavaScript? by tannsi · · Score: 1

      If people actually bothered to read the error messages. I've had teachers (note: plural) that couldn't decipher Python error messages simply because if its in red and says something about an error they click it away and go try to troubleshoot manually. Kids are even worse this way.

      Of course I am in Iceland so I can't state this for native English speakers but I don't think it has anything to do with that.

      But yes, I agree with you on HTML and CSS because if you're going to try and not kill all curiosity you best give them results as soon as possible.

  4. My experience... by Smidge207 · · Score: 1, Insightful

    Graphics is what got me interested in programming. I remember my high school Pascal classes. Unfortunately they were pretty boring. We did do some simple EGA graphics at one point but that was really the only interesting thing we did in class, though I did end up learning the fundamentals.

    Thing was, to do anything cool you had to do all this VGA initialization stuff that was forever out of our reach at that level. Not to mention the computers were pretty obsolete even at that point.

    I know there's a lot of (mostly unreasonable) hate around here for Flash, but I'd say get them into Actionscript3. It's really easy to do graphics in without having to setup windows and rendering contexts or getting to know huge APIs. It will introduce them to object oriented programming, but won't involve pointers or memory management or any of the more esoteric aspects of something like C++. Another thing is they can easily share whatever they produce with most anyone else who has a browser. If they are at all into social networking online (all that myspace bullshit) they can make some pretty interesting stuff for their friends' pages. Using Actionscript could also lead they to branching out into other web technologies, something probably more important in today's world than ever. It also has a similar syntax to Java or C++ if they want to go in that direction. And as far as help and tutorials, there's really one of the richest communities around Flash, being a technology that was practically born in the middle of the blogging phenomenon.

    The best thing about Actionscript is how quickly you can put something visual together and how little setup it requires. Graphics is definitely the way to go, and nothing in programming has a more immediate "wow" factor than throwing something pretty up on the screen.

    =Smidge=

    --
    Is it just my observation, or is eldavojohn an idiot?
  5. Whoa there... by KingSkippus · · Score: 2, Interesting

    The catch is that it is a class for all students to take, not just those interested in programming...

    I read this as, "It is a programming class available and accessible to everyone, not just geeky programming students; it is 'programming for normal people.'" Not, "All students must take this class."

    Could be wrong, though. Maybe the submitter can clarify...

    1. Re:Whoa there... by Jurily · · Score: 1

      I read this as, "It is a programming class available and accessible to everyone, not just geeky programming students; it is 'programming for normal people.'" Not, "All students must take this class."

      That wouldn't be a catch.

      Who the hell banned non-interested people in the first place? And why?

    2. Re:Whoa there... by jonboydev · · Score: 1

      The idea is to have most if not all students take the class although this is not totally concrete yet. The current curriculum tries to teach the students critical thinking skills, and the programming class came about as a way to develop those skills

    3. Re:Whoa there... by Anonymous Coward · · Score: 0

      The catch is that it is a class for all students to take, not just those interested in programming...

      In High School, ANY programming class is going to be "just for" students who are interested. Those who are not interested will A) not sign up for it and B) be better off with a general computer usage course.
      A good rule of thumb, is that if a kid hates story problems in Algebra they aren't a good candidate for a programming class.

      Personally, I would recommend using something like Java. There are a lot of public resources for it, so any interested students will be able to continue their education outside class. IDE's are available for many platforms, etc.

      There are, of course, many other options, but if you're going to be doing a programming for "everybody" you'd probably be better off not even implementing anything & stick to pseudocode entirely.

    4. Re:Whoa there... by Anonymous Coward · · Score: 0

      Often, python code is the same as psuedocode.

  6. I love Python, but... by mongoose(!no) · · Score: 1

    If you're teaching them programming, and they might not all use it, maybe you should think about using MS Excel. It seems everyone uses Excel in some form, but the people who can really get into the nitty-gritty of it can do some really useful stuff. Excel is on just about every computer these days, or some similar spreadsheet, and while it's not a traditional programming language, it does require the use of logic to figure out how to set up a series of cells with different commands to give you the answer you want.

    Python on the other hand, is much more traditional, and might be a bit more straightforward to teach, but I still think more students would find useful skills they can use everyday in Excel rather than in Python. If they were all going towards engineering or comp-sci, Python would be good, but for the future business people in your class, knowing how to use Excel, and use it very efficiently is a huge plus in the "real world".

    1. Re:I love Python, but... by techprophet · · Score: 1

      Excel is NOT programming. Excel is a spreadsheet program. You probably mean using Formulas and VBA.

      Formulas are just Algebra-style equations, and VBA is hellspawn that will only work on MS Office software (certain VBA scripts are not even workable between versions of Office)

    2. Re:I love Python, but... by papna · · Score: 1

      The class is about problem solving, not problem creating.

      Seriously though, spreadsheet programs make it too easy to start punching crap in, and makes it too easy to write something that you haven't thought through. If you realise there's a better way later, it's hard to refactor compared to a traditional programming language.

      Python seems like a good enough idea to me (if the teacher is proficient). It is high-level enough to focus on the problem solving element, you don't typically go through a separate compilation and execution procedure, and can even run the interactive interpreter and play with stuff. There are libraries so that students can do all sorts of things they can imagine, and especially enthusiastic students can do *really* cool stuff.

      OP, if the teacher has few requirements on the course, break it down into several-week projects that solve different kinds of problems using the same language. Do some screenscraping with BeautifulSoup. Do something mathy at their level with math, numpy, or sympy. Do something cool with PyGame. The key part is the same in all of these--breaking down a problem into its various essential chunks.

    3. Re:I love Python, but... by chthonicdaemon · · Score: 1

      Excel is programming as much as Prolog or Haskell is programming. It is declarative and functional, but it is still programming. I would bet that, given an infinite spreadsheet, you would find Excel is Turing complete. I don't like Excel for big programming jobs myself, but you have to realise how much it is being used.

      --
      Languages aren't inherently fast -- implementations are efficient
    4. Re:I love Python, but... by techprophet · · Score: 1

      I don't deny it has a huge install/usage base. But Excel in and of itself is not a programming language. It is a program. VBA/VB is a programming language. The Formula functionality in it is not programming per say...but it does have some functions that some would call programming.

    5. Re:I love Python, but... by grumbel · · Score: 1

      Excel is certainly not your average programming language, but it can be used for programming. There are even some that have used it to write a 3D renderer in it.

    6. Re:I love Python, but... by techprophet · · Score: 1

      OK, you win. Excel is a programming environment. Formulas+VBA is the language.

    7. Re:I love Python, but... by AceofSpades19 · · Score: 1

      Most programming skills you learn in python you can use in any language, presuming you don't focus on teaching syntax and more of how to use basic programming constructs like loops and functions.

  7. anyone can benefit from learning anything by Anonymous Coward · · Score: 0

    Why force this crap down peoples throats? This is what must have happened a few hundred years ago when people thought I would benefit from learning British Literature.
    I'm a programmer, and I'd never use this crap outside of...programming?

    1. Re:anyone can benefit from learning anything by cromar · · Score: 1

      If it weren't important to me to lead an enriching life, I could agree with your sentiment here. Unfortunately it is important to me; I loved my British Lit. classes. If they didn't make me a better programmer, they certainly made my life better and more interesting.

  8. Labs by swimin · · Score: 1

    I would create a list of labs, and spend significant time on each one. On Monday introduce the problem of the lab, and maybe one new programming concept that can be used to help solve it. Then from Tuesday to Thursday give students time in class to work on it, and help students that are confused, finished students should help the ones who are really far behind. Collect the programs at the beginning of class on friday, and go over the example of a correct program, answering questions along the way.

    I think you'd find the best success with a program like this spending as much hands on time as possible.

    1. Re:Labs by hplus · · Score: 1

      None of the finished kids would want to help the kids who weren't done. I sure as hell didn't.

    2. Re:Labs by Fulcrum+of+Evil · · Score: 1

      finished students should help the ones who are really far behind.

      Finished students should work on something more advanced.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  9. Mindstorm by internerdj · · Score: 1

    (All my hatred of Labview aside.) Don't the latest Mindstorms come with some hobbled version of NI Labview or did that fall through? It is both circuit-esq and programming-esq. It is also easier to understand to laymen because it is a gui, not text. I have colleagues that use Labview and VB for the sole reason their customer demands they be able to understand all the code they are paying for without formal training in CS.

  10. Please don't. by Jurily · · Score: 3, Funny

    The catch is that it is a class for all students to take, not just those interested in programming

    What the fuck is wrong with the educational system again? Teach those who are interested. Or those who have any chance of not being a retard at it.

    Teacher 1: "Hey, I heard that computer-thingie makes people smart."
    Teacher 2: "Okay, let's force it on every little prick we have here! That'll teach 'em to touch one ever again!"

    Christ. What's next? Quantum physics in ancient Sumer dumbed down so everyone can pass?

    1. Re:Please don't. by Em+Emalb · · Score: 1

      It's a damned shame that you were modded troll. The troll moderation is NOT for modding down something you disagree with people.

      That said, your actual post is a little harsh dude.

      --
      Sent from your iPad.
    2. Re:Please don't. by cromar · · Score: 1

      This idea that there is no call for well rounded education makes us, Americans as a whole, dumber. It would be better for us as a whole if high schoolers were exposed to subjects such as quantum physics or ancient history.

    3. Re:Please don't. by Anonymous Coward · · Score: 0

      Although I don't agree with the previous harsh comments, I do agree with not forcing students into something they aren't interested in. I'm a programmer by trade and had some exposure in high school to C++ and Java and I was good at it. Programming in general takes a certain level of logic and math, things not everyone is good at.

      I always found it was unfair to force a kid into something and when they found out they weren't good at it say, "Oh, I guess you're stupid. Oh well, you can always try again next year if you want to graduate.". However, I can't think of a better way to motivate a kid into at least trying.

      One of the Schools I went to required you to have a music course to graduate, fine and dandy I like music, but I'm tone deaf and have no sense of timing so I can't sing or play an instrument. I put effort into the course, but ended up with a D because I sucked. I'm glad I moved to another school before I had to graduate because a C was required. I had straight A's in everything else. My older sister on the other hand excelled in the music course, but ended up not doing so well in the programming stuff. Now I'm a programmer and she's a cop... and I often wonder what went wrong.

    4. Re:Please don't. by tverbeek · · Score: 1

      "Teach those who are interested."

      And what about those who'd rather go home and play Wii? Don't teach them anything?

      --
      http://alternatives.rzero.com/
    5. Re:Please don't. by not+already+in+use · · Score: 1

      Aww, a trendy dissenter. How cute. All the righteous indignation in the world won't make your points relevant.

      Guess what? Our educational system offers advanced placement classes for students who are so inclined to take them. No one is being forced to take a dumbed down class. Fortunately for those folks who are not as enlightened or smart as you, a dumbed down class might offer a more cushy introduction to a topic that can be a bit intimidating to a lot of people.

      There is no reason a introductory programming course shouldn't be a mandatory part of a curriculum. Giving more students exposure to it would certainly not be a negative thing. Go take your nerd rage elsewhere.

      --
      Similes are like metaphors
    6. Re:Please don't. by Anonymous Coward · · Score: 0

      Now try to calm down, and show us on this doll where the educational system touched you.

    7. Re:Please don't. by Reality+Master+101 · · Score: 1

      There is no reason a introductory programming course shouldn't be a mandatory part of a curriculum. Giving more students exposure to it would certainly not be a negative thing. Go take your nerd rage elsewhere.

      No reason, other than there is a finite amount of time. Teaching someone programming takes away from something else, such as history, math and science. Programming is a trade skill, like learning to arrange flowers. But most people would say that there are more important things to learn than arranging flowers.

      --
      Sometimes it's best to just let stupid people be stupid.
    8. Re:Please don't. by ClosedSource · · Score: 1

      "The troll moderation is NOT for modding down something you disagree with people."

      In practice all moderation on Slashdot is about what you agree or disagree with. Why try to challenge a good argument when you can just bury it?

    9. Re:Please don't. by not+already+in+use · · Score: 1

      Considering our reliance on computing in every single industry, in our personal lives -- fuck it, literally EVERYWHERE, it could easily be argued that mathematics, history and science are more appropriatly considered trade skills than basic computer programming. A little bit of javascript knowledge or HTML, or the ability to write simple Excel macros is *far* more practical than understanding photosynthesis or finding the derivative of a function, because, ironically, the latter knowledge has a much smaller scope than basic computer programming.

      --
      Similes are like metaphors
    10. Re:Please don't. by Reality+Master+101 · · Score: 1

      Considering our reliance on computing in every single industry, in our personal lives -- fuck it, literally EVERYWHERE...

      You can say that out about a lot of things.

      "Considering our reliance on roads, everyone should know how to lay asphalt."
      "Considering our reliance on refrigeration, everyone should understand Freon gas."
      "Considering our reliance on integrated circuits, everyone should learn chip fabrication."
      "Considering our reliance on knives and forks, everyone should know how to forge metal."

      The fact of the matter is that everyone doesn't have to know how to do every micro-skill. School should give you the skills to function in society, NOT to teach you trade skills that can be picked up anywhere.

      --
      Sometimes it's best to just let stupid people be stupid.
    11. Re:Please don't. by not+already+in+use · · Score: 2, Interesting

      Your examples are terrible. A knowledge of asphalt, for example, won't allow us to utilize the road any better. The computer on the other hand is a multi-faceted tool. A very basic understanding of programming can segue into a variety of things that can make us more productive in both our personal and professional lives. You are robbing today's youth if you don't at the very least expose them to this.

      For me personally, I would be flipping burgers if it weren't for exposure to programming. It happened to be something I was really good at, even though I had no interest in doing well in school. Shoot, I hardly graduated high school, dropped out of technical college, and now I'm making more than most people who graduated from a 4-year school, without the student loans to boot.

      --
      Similes are like metaphors
    12. Re:Please don't. by Anonymous Coward · · Score: 0

      "Guess what? Our educational system offers advanced placement classes for students who are so inclined to take them."
      Yes, and then they force them into the dumbed down intro classes as well. I have to take the "intro to computer class" just to graduate, even if I've already taken 3 years of programming.

      The US educational system sucks, and you know it. Stop making excuses.

    13. Re:Please don't. by Anonymous Coward · · Score: 0

      Like someone else said, that AP class will have this crap intro class as a prerequisite and anyone who actually cares about programming will be driven away. And before you say that students can get out of this class, from my experience it takes a near act of god for school administrators to do anything that requires any effort from them. Hell, it took me passing a bloody calculus AP exam AND a letter from the state education head for my MIDDLE school to exempt me from math classes.

    14. Re:Please don't. by ravyne · · Score: 1

      I agree on one hand, and disagree on the other...

      If everyone has to take this programming course, those students are going to get a whole lot less done, than if it were just those few students who were actually interested in the topic, and presumably, with more aptitude for the topic than the average Joe. If the majority... even half, of the class is disinterested, not paying attention, slacking off, making the teacher repeat material constantly, and ultimately not taking anything away from the course, then there is precious little benefit to forcing them all to take it. That benefit is that you *might* expose a couple of students to something new and interesting and pull them into the fray -- but the cost that is essentially *guaranteed* to be paid for this, is that the students who are pre-disposed to be interested in the material are only going to get half the amount of work done as they would have on their own.

      On the other hand, I entirely agree that our system is lacking a focus on core subjects like literacy, math and science, and that something needs to be done to correct that. Other countries do well in this regard, but the unfortunate reality is that we are not these other countries, and our children are certainly not like those other countries' children. Our children have been raised believing that they have a right to do well in school -- so much so that if them doing well means that we'll create curriculum options that expects less of them, them we are happy to oblige. If Algebra II is too difficult for little Tommy, he can just go learn how to count beans in Tech Math. The fact that we are so goddamn afraid to tell someone they are inadequate in some area is the fundamental, systematic flaw in the American Way.

      I think the better way to approach it is to bundle electives, or to have brief, 2-week intros during some electives with the option to enroll in the additional elective later. For instance, its perfectly justifiable, in my mind, that a student taking many math and/or science electives should be exposed to programming. If we said that Intro to Programming was a prerequisite/required-concurrency to calculus or physics, we would still expose the people that will likely need some programming exposure as a matter of their future. On the other side of the coin, those students with a more vocational bent might be required to take computer courses focusing on office software, invoicing, or other non-computer electives.

      This is essentially the way your average college course catalog works, so I see no reason why those lessons couldn't be applied to high school students.

    15. Re:Please don't. by Anonymous Coward · · Score: 0

      Why not? They'd just slow everyone else down and be a pain in the ass.

      Those who want to learn can; those who don't don't have to. Everyone wins. Besides, it gives autodidacts the opportunity to teach themselves and not waste their time at school. I don't see the problem.

    16. Re:Please don't. by Anonymous Coward · · Score: 0

      What the fuck is wrong with the educational system again? Teach those who are interested. Or those who have any chance of not being a retard at it.

      A) How can you know if you're interested in something without any exposure to it? There's a reason that colleges offer "survey" courses in most subjects. Get an overview, get your feet wet, decide if you want to delve further. In no way did the OP imply that this course was to replace AP level courses, it's to complement a course in robotics.

      B) How can you decide whether someone "has any chance of not being a retard at it" if you don't give them a shot? Seriously, I'm glad that you knew exactly what you liked and would be good at since birth, but many of us have to try out different things to see how it goes.

    17. Re:Please don't. by Sage+Gaspar · · Score: 1

      Obviously you are not teaching these students about allocating memory in C or some other arcane task dealing with the nuts and bolts of a specific language. You would want to use a simple language and focus on using logical steps to write algorithms. Algorithms are one of the most basic and general things you can study. They were around long before computers, but computers happen to be an ideal playground on which to implement and test them. They are logic and problem solving in their purest form and completely deterministic; you put in an input, you get an output. Either it functions properly or it doesn't, giving the student immediate feedback. Thus useful as a teaching tool the same way studying Euclidean geometry or a whole other host of things in high school are, except much more hands-on and likely to engage students.

      On a practical level, computers are ubiquitous these days and we interact with them via algorithms, making basic programming knowledge an incredibly broad and useful skill to have. Hell, high school math is almost entirely just learning algorithms. Implementing them on a computer is an ultimate test of mastery. We used to write simple programs on our graphing calculators that performed computations for us in physics and chemistry. A large number of interesting jobs today benefit a lot from rudimentary programming knowledge, from manipulating statistical data to just comprehending a snippet of javascript your boss wants to put on his webpage. Being knowledgeable about X field but also proficient in programming opens a lot of doors that, say, also knowing a crapload about asphalt, circuit boards and metallurgy wouldn't.

    18. Re:Please don't. by cowdung · · Score: 1

      What the fuck is wrong with the educational system again? Teach those who are interested. Or those who have any chance of not being a retard at it.

      No, having gone to high school outside of the US (but having gone to College in the US) I can say that I am very grateful for the things teachers forced me to learn but I wasn't interested in (at the time), for example:

      - math: algebra, trig, precalc, calc
      - economics
      - physics
      - chemistry
      - biology

      I wasn't "interested" in most of these things.. but they gave me a significant competitive advantage when I went to College.

      High School students are often not mature enough to decide what they should study. Forcing them to acquire some basic skills is a good thing.

      Many (myself included) would have preferred not to go to school at all!

    19. Re:Please don't. by Anonymous Coward · · Score: 0

      A book by Phillip Oppenheimer, "Flickering Mind: The false promise of Technology in the classroom" addresses just the problems you are stating above. Computers have been PROVEN not to make anyone smart. And based on ACT scores alone, it has made them much DUMBER!!!

    20. Re:Please don't. by Anonymous Coward · · Score: 0

      That is fine, feel-good rhetoric, but it needs some simple questions asked of it. WHO will pay you to know quantum physics? WHO will pay you to know ancient history? Unless FERMILAB needs a million new hires or the Smithsonian needs that many new curators the answer is NO ONE! Well rounded education would include carpentry, plumbing, construction, welding, automotive sciences and the like. All of those would prepare a student for a real paying job in the real world whereas none of the 2 you mentioned ever will.

    21. Re:Please don't. by Anonymous Coward · · Score: 0

      Teach the Wii monkeys game programming. If they don't want that or anything else education has to offer send them home because they are not going to learn anything anyway and they are just going to lard up space in the classroom and lower morale. More than 50% of all college entrants will not have a degree in 6 years! If they were gainfully employed in the workforce doing something they were interested in it would lower the cost of education and get rid of the sticks in the mud that are there now.

  11. BASIC or Pascal by Shard013 · · Score: 1

    Personally I would recommend teaching BASIC or Pascal to high school students. Both of them were more or less designed for teaching or beginners.

    Students that are not interested in computers can at least make little songs using beeps in BASIC in a few minutes with a little teaching but hopefully can continue learning more about programming or computers.

    1. Re:BASIC or Pascal by Jurily · · Score: 1

      Students that are not interested in computers will just follow the instructions in class, somehow manage to pass the test and get on with their lives.

    2. Re:BASIC or Pascal by Bruiser80 · · Score: 2, Informative

      I took a programming class in highschool. They used ThinkPascal on some old Macs. I was always upset how limited the program was - very limited graphical options. I could line trace, that was about it.

      That being said, the interface was very intuitive. Commands automatically were bolded and there were a lot of mandatory line breaks and tabbing which made it easy to figure out how deep into your loops you were.

      I don't code for a living. I write long equations in excel once in a while, but that's about it.

      The language isn't as important as the interface. Something with a pretty interface and intuitive commands is what's needed.

      --
      Arguing with an engineer is like wrestling a pig in the mud. After a while, you realize the engineer enjoys it.
    3. Re:BASIC or Pascal by Anonymous Coward · · Score: 0

      Students that are not interested in computers will just follow the instructions in class, somehow manage to pass the test and get on with their lives.

      And if this is possible, students who ARE interested will be bored out of their minds.

  12. not quite problem solving by v1 · · Score: 4, Insightful

    Programming more importantly is problem analysis, figuring out how to use the tools and information you have to build towards a solution.

    In most of my programming projects, there are myriad different ways to approach the problem, and the time taken to compare them I find to be the most important part of any programming project.

    Recent example: I just got done coding a utilization graph for a server. In bash. Obviously bash is not the ideal language but was required so a lot of thought had to go into how to approach the problem.

    After some consideration, I determined the way the utilization information was gathered and stored was the most important thing, because bash isn't particularly speedy and having to mow through 100,000 long log file isn't going to be pretty. So the main focus of the problem turned from one of "how do I display a graph in bash?" to "how do I record the information in a way that bash can quickly process it?" This requires understanding the limits of the tools you are provided with, more than understanding the actual problem. Only after you have this can you move toward a good solution to the problem. No matter how clever of an idea you have, or how "perfect" of a solution you come up with, picking the correct path to that solution is often just as important as the results.

    Most of the time when I am going to code something, I spend a good hunk of time just sitting and thinking about it, considering how things are going to progress if I try different approaches. Only after I'm satisfied I have a good "plan of attack", do I actually start working on a solution. My solutions aren't always optimal, but they're usually pretty close, and save me a LOT of valuable time which would otherwise be wasted in having to either make fundamental changes to the foundation late in the game, (every programmer's nightmare) or dealing with extremely topheavy already-written code that isn't producing results in the way that I need them and has to either be data-converted or be clumsily coped with as-is. (every maintainer's nightmare)

    I suppose you could sum it up by saying, "teach them problem analysis before you teach them problem solving.

    --
    I work for the Department of Redundancy Department.
    1. Re:not quite problem solving by msuarezalvarez · · Score: 1

      Who came up with the requirement of using bash to do anything?

    2. Re:not quite problem solving by v1 · · Score: 1

      challenge! I also write in assembly and occasionally microcode.

      Writing in lower level languages has certain advantages. For example, the optimal C++ code for doing something, when compared to assembly, is slower, a LOT larger, and requires more memory.

      Bash isn't a proper low level language because it's interpreted, but it does keep a polish on one's skills to build up complex things from simple things. You can always do a complex task using simple tools, but you cannot always do a simple task using complex tools. (they are not general enough to do everything you could possibly want to do)

      --
      I work for the Department of Redundancy Department.
    3. Re:not quite problem solving by celle · · Score: 1

      "Programming more importantly is problem analysis, figuring out how to use the tools and information you have to build towards a solution"

      Kind of like um, algebra!! How many kids fail that every year? Come on guys, schools have little time and enough problems teaching the basics to the general public without forcing fanboyist specialist classes. Another forced class for everyone regardless of interest, like kids that can barely make it don't have enough annoying shit in their day. And that's just in school. Remember, most of the tech crap people will use is in the end user spectrum of a simple polished control and not in depth programming. The public only cares about will this toy get my current work done in my short interest time frame. Nevermind everything else that's he/she is doing. Anything complicated is a no-go, that includes programming.

      If its another way to teach algebra and other concepts it's useful but in general it just adds to an already complicated day something that many won't use.

    4. Re:not quite problem solving by msuarezalvarez · · Score: 1

      challenge! I also write in assembly and occasionally microcode.

      Writing in lower level languages has certain advantages. For example, the optimal C++ code for doing something, when compared to assembly, is slower, a LOT larger, and requires more memory.

      In 99.999999999% of the cases, those extra advantages you speak of are simply imaginary, more related to the rush of appearing to be among the mythical REAL PROGRAMMERS than to any requirements of real life.

      Bash isn't a proper low level language because it's interpreted, but it does keep a polish on one's skills to build up complex things from simple things. You can always do a complex task using simple tools, but you cannot always do a simple task using complex tools. (they are not general enough to do everything you could possibly want to do)

      This is not a matter of simple or complex tools, but of correct or incorrect tools. If when presented with the problem of doing boring filtering and manipulations with server logs the first thing you can think of is writing an assembler program to handle it, in the immense majority of cases you are making a serious mistake.

    5. Re:not quite problem solving by v1 · · Score: 1

      Kind of like the difference between classes like "Algebra 1" and "Applied Algebra". They teach very different things.

      --
      I work for the Department of Redundancy Department.
    6. Re:not quite problem solving by cowdung · · Score: 1

      Most algebra clases aren't "problem solving"..

      they are abstract rote learning.

      For example this is how you factor a polynomial:

      x2 + x = 0

      becomes:

      x(x + 1) =0

      Ok.. now you try to factor the following polynomial:

      2x2 + 3x = 0

      Essentially rote learning.. no problem solving at all. They ALREADY PROVIDE YOU WITH THE ALGORITHM! They just don't tell you explicitly.

  13. How about some Java? by SUB7IME · · Score: 2, Insightful

    I helped create a Java curriculum for a group of programming-naive high school students. I don't regularly use Java, but it behaves similarly to other languages (good for me and for them). There are plenty of tutorials out there that they can explore in their extracurricular time. Also, there are many sites and fora dedicated to java, allowing my students to get plugged into the broader community of programmers.

    1. Re:How about some Java? by cowdung · · Score: 1

      I think Python is better than Java for beginners.

      The initial boilerplate, static methods, and static typing are just barriers to learning as a beginner.

      I say this as someone who has taught beginners programming for 8 years now.

    2. Re:How about some Java? by SUB7IME · · Score: 1

      Great suggestion; thanks for the rationale. I'll definitely look into Python before I teach my next set of students.

    3. Re:How about some Java? by Black+Perl · · Score: 1

      I will teach a programming class this summer to advanced middle and high-school students. I plan to teach Ruby. Python is a good choice as well; the two languages are actually quite similar.

      I've heard that the book Learn to Program is excellent for this type of student.

      --
      bp
  14. Programming or not? by Spazmania · · Score: 0, Troll

    Step 1: Decide whether or not you intend to teach computer programming or programming advocacy.

    Script hacking and web programming are great fun. They'll tend to draw in folks who have the interest and talent to develop computer software. But they will teach you very little about actual computer science... you'll have the modern equivalent of fogeys who proclaim their programming expertise in Excel and Dbase.

    Step 2: If you picked advocacy, you're on the right track with Python and Mindstorms. You'll make it possible for your students to assess whether they have the knack for computer programming in a manner which is highly engaging.

    Step 3: If you picked programming, select either pascal or java. They are the best-of-breed languages for illustrating correct functional and object oriented programming technique respectively. They're not particularly flashy and much of the course will involve teaching students what -not- to do, but students who are genuinely interested in computer programming will find that you haven't wasted their time with mere toys.

    --
    Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    1. Re:Programming or not? by Anonymous Coward · · Score: 0

      If you picked programming, select either pascal or java. They are the best-of-breed languages for illustrating correct functional and object oriented programming technique respectively

      Pascal is an imperative language, not a functional one. Examples of functional languages would be LISP, Scheme, and ML.

      However, I do remember Turbo Pascal 7 being pretty awesome when I learned it. It also allowed me to learn the concepts of object-oriented programming (I think that's the "Turbo" part), and I really appreciated the built-in assembler, which I used to write fast graphics routines. I have no idea how well that version would work in a modern computing environment.

  15. Um... why? by davidwr · · Score: 1

    Teaching general problem-solving is great, but this is probably not the way to go about it.

    1) Different people learn differently, and anything resembling a traditional programming class will set up a large part of the student body to fail or at the very least get a C and leave frustrated.
    2) Skills like problem-solving should be integrated across the curriculum and spread over the entire 13 years of K-12 education.

    If you are going to do it, I would recommend keeping it simple enough that almost everyone who tries passes, and have advanced students take a different class such as a full-fledged programming class or a time-compressed version of this class.

    I recommend rethinking this. Ask yourself "how can we make sure that by the time they graduate high school, all of our students learn problem-solving in a way that they will enjoy, that will leave them feeling something other than frustrated or exhausted, and (optionally) how can we give each of them a taste of programming." The answer you come up with should guide your curriculum.

    Don't forget to make allowances for the mentally retarded and others with cognitive limitations, and don't forget to find alternative ways to teach the same skills for those who can learn what you are trying to teach, but whose brains work differently than most students.

    --
    Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
  16. Truth about Problem Solving by Khaloroma · · Score: 1

    First off, let me say that I come from an Engineering background, so my programming repertoire
    is not as advanced as a comp sci is. That being said:

    In my honest opinion the best way to teach problem solving is with something simple. Basic is a very good way to do this as it is very intuitive, but doesn't have all the shortcuts of other languages.

    Some of the greatest problem solving ideas are designing well known games such as Monopoly. Obviously more advanced, but you can relate functions/subroutines, implement graphics (if you have the time), counters, and many other things.

    The absolute most important concept is that you must teach, obviously, problem solving and NOT syntax. I would greatly discourage languages like C++ that, while powerful, take entirely too much time to teach the syntax when you can teach problem solving just as easily through Basic.

    1. Re:Truth about Problem Solving by An+Onerous+Coward · · Score: 1

      Basic? Bah.

      Python? Yay!

      I haven't programmed in the former since I was about fifteen. But I can't think of a single advantage that Basic has over Python, either as a programming language or as an instructional tool.

      Real-world utility? Python, hands down.

      Availability of libraries? Again, Python.

      Ease of programming? Clarity of the resulting code? Ability to program to solve non-trivial, real-world problems? Ease of installation? Ease of demonstrating programming concepts? I'm just not seeing where Basic has any utility.

      --

      You want the truthiness? You can't handle the truthiness!

  17. Logo by Anonymous Coward · · Score: 0

    Logo

  18. Why Python? by xtracto · · Score: 0, Troll

    Am I the only one who finds Python cumbersome? When I program in Python I feel as if the language is trying to stay in my way, it is somehow as if I have to fight against its whims.

    I would recommend Starlogo TNG to teach programming. It really helps people visualize the building blocks that constitute a program. And, given its 3D graphical nature, it attracts high school students (who play Halo or Doom after school [yeah, I am antiquated, I was going to say "play a nintendo" but that would be antiquated even for me]).

    --
    Ubuntu is an African word meaning 'I can't configure Debian'
    1. Re:Why Python? by Anonymous Coward · · Score: 0

      Am I the only one who finds Python cumbersome? When I program in Python I feel as if the language is trying to stay in my way, it is somehow as if I have to fight against its whims.

      Yes, you're the only person that hates having to indent their code correctly~

    2. Re:Why Python? by Deltaspectre · · Score: 1

      You must be the only one :)
      Python predicts my every whim... Perhaps the problem is you're trying to be too clever. In that case, assembly is just right for you

      --
      My UID is prime... is yours?
    3. Re:Why Python? by Anonymous Coward · · Score: 0

      No. Python is a very nice language, but the mandatory indentation that causes compile errors is annoying.

    4. Re:Why Python? by grumbel · · Score: 1

      Am I the only one who finds Python cumbersome?

      Cumbersome? Nope, but definitively brittle. Especially when refactoring and copying code from one indention level to the next its just way to easy to mess things up and ending up with program that is broken in very non-obvious ways, automatic variable declaration and such make the problem even worse.

  19. Check out Scratch by Anonymous Coward · · Score: 1, Informative

    Take a look at Scratch http://scratch.mit.edu/

    It uses graphical blocks to create a stack of instructions. I have been amazed how easy it has been for middle school student to pick up on programming logic using this program.

  20. You need to get everyone interested.. by Anonymous Coward · · Score: 0

    I would look for something really quick and easy to get a basic game type system up and running. Looking at the current software out there, I would actually suggest VB. The code is pretty straight forward, and the GUI design interface is basic cut and paste images. Have the class come up with an idea, divide people into groups and everyone works on a part of the project. This should teach them about problem solving, and real life team management. Some kids might be better at drawing the interface, other might be better at back end coding work, but that's real life. In the end you'll have a game or something that they can share and feel some kind of ownership of as well.

  21. Everyone can benefit from learning to program? by Anonymous Coward · · Score: 0

    How do you figure?

    In the sense that everyone can benefit from learning calculus if they decide to pursue an advanced degree in science?

    Programming is less applicable than your higher level maths. Compared even to trig, something I believe all HS students are required to take, it is far less useful; and many people will never even use that. I can't program any aspect of my car, house, or lawn. Programming aptitude is only useful in your professional career is VBA scripting in Office can increase your productivity, or you are a programmer or in IT. For the latter cases you're most likely going to want a CS degree anyway, which will include programming courses.

    Everyone can benefit from being fluent in Greek, in very specific applications, it doesn't mean everyone needs it; or should be made to learn it.

  22. I helped my dad do this by Fished · · Score: 4, Interesting

    My dad is a High School Physics/AP Math teacher who taught programming this year. I encouraged him NOT to use C++ (his original plan) and to use Python instead, and to use Python Programming: An Introduction to Computer Science as the text. He has been absolutely delighted both with Python and with the choice of text. Now, it has to be said that this doesn't really address your case, since all of his students are pretty much AP materials (and it's a private school, etc.) However, I would encourage you to take a really close look at that text.

    --
    "He who would learn astronomy, and other recondite arts, let him go elsewhere. " -- John Calvin, commenting on Genesis 1
    1. Re:I helped my dad do this by Anonymous Coward · · Score: 1, Interesting

      I learned Python with "How to think like a computer scientist". I swear by that book. I could do very little coding (a little cut and paste here and there) before and now I build useful apps for my work related text manipulation tasks from scratch. This was all independent learning with what little time I had over the course of 3 months. So I imagine that a full time student learning in a classroom could easily succeed with this curriculum.

    2. Re:I helped my dad do this by Anonymous Coward · · Score: 0

      Is your dad gay?

  23. You died of dysentery. by gandhi_2 · · Score: 2, Funny

    A good final project would be an Oregon TrailBot. A scripted user-agent that can buy oxen and die of starvation in pursuit of expansionism.

  24. have alternatives by Anonymous Coward · · Score: 0

    I am not a teacher but I am a software expert with age 10/12 children.

    It is going to be hard to sell the kids a one-size-fits-all approach. Some of them will already be software experts, some will be wired for maths, others for artistic design, others for sound. Some will learn by instruction, others by doing.

    I would therefore tentatively suggest projects of 4 to 5 kids each using Blender. Blender is, of course, the GPL 3D modeler. It is capable of great visuals, raytracing, fluid simulation, animation and sound.

    However it is also capable, via its Python binding to perform calculation, imprint rules on the model, connect to the internet and databases and so on.

    I think there is something for everyone. The artistically minded kids get to create some cool models and textures. The kids who like to "look under the hood" can get their hands dirty with some programming - potentially very cool/complex programming if they want. The scope of the work can grow to accommodate whatever they want whether in the visuals, maths, networking or what-have-you.

    Because they will be working in small teams, they will need to rely on each others skills and understand basic project management methodologies about scoping, prioritisation and so on. There would be plenty of help online to those that need it - promoting research skills.

    At the end the work could be showcased and a prize offered. It might help if a method could be worked out so each kids gets something out of it that could be shown to a university admissions officer later.

    Example ideas: Dinosaurs (modeling, animation, movement, AI). Something there for everyone!

    I hope thats helpful. Good luck.

  25. Eh... by Anonymous Coward · · Score: 0

    *unfortunatly alot of this information would depend on your geographical location and what age group*

    To answer the question off the bat, I would personally recommend (depending on platform) basic for PCs, or future basic (mac)....or HTML.

    Especially if this is getting forced down every kid's throat. These are realativly simple languages where they can get a feel for what real programming is like. They are also something that kids would be able to play with on their own PCs if they have them. Anything more advanced and your getting into a more advanced math, logic, and general PC knowledge. Realistically, programming isn't worth jack to most students. Just guessing here, but your more than likely looking at maybe 1-2 students per 20-30 that might even go near that field in their futures.

    The most optimal way to organize high school programming in my opinion is 2 classes. For example, start out the junior year with something like Basic. Then if they like it, and "want" to take it, offer them a more advanced language their senior year, something like visual, C++, java, or python. That would be my recommendation.

  26. god, no! think of the children! by Anonymous Coward · · Score: 1, Insightful

    the ones that have gotten programming in
    hs and college are less prepared as professional
    programmers than those with no formal training.

  27. Python is a right choice but obligation is not! by Anonymous Coward · · Score: 0

    I am a complete advocate of python being the "programming teacher" language as it is by nature cleansed of lots of demotiviers of learning, in other words has quite a simple syntax.

    on the other hand, this will mostly result lots of students most of whose just lack the analytical talent to be gradually prejudiced against programming at all.

    this reasoning could be based on the reaction to some obligatory programming courses for non-cs graduate students. they mostly end up just hating the concept.

    instead, you could form a hobby group or such, to support those who actually like it or just inclined to give a try about it.

  28. No by Em+Emalb · · Score: 1

    No. Don't do it. Programming should still be an elective, not a required course for all students to take.

    A computer course that touches on programming and can be a gateway to a programming course should be the route you take. That way the students get the skills they'll need (not everyone has a computer at home, even in this age) for college/job/whathaveyou but they're not forced to take a class they may not want to.

    When I was in school, the only "programming" course that was available was Pascal. And it almost ruined computers for me as I honestly have 0 interest in programming.

    All that said, I do realize there are a lot of courses out there that kids are required to take that they have no interest in. However, a lot of those courses have legitimate "real-world" reasons, and programming isn't necessarily a "real world" reason for taking a course.

    --
    Sent from your iPad.
    1. Re:No by An+Onerous+Coward · · Score: 1

      Programming teaches problem-solving and logical thinking. So long as the programming language is powerful enough to be a vehicle for that sort of exploration, yet simple enough to keep the class from bogging down in syntactic minutiae, how can a programming class be a bad thing?

      --

      You want the truthiness? You can't handle the truthiness!

  29. Use the text "How to Design Programs" by stevebyan · · Score: 1

    Use the textbook "How to design programs" by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt and Shriram Krishnamurthi., It's available free on the web or hardcopy from MIT press. Unfortunately the HtDP web-site seems to be down today. Check out the wikipedia entry. It's been used in high schools. They have a summer seminar for teachers, too.

  30. Scratch from MIT by veenstr · · Score: 1

    There are a million opinions on this subject. But actually programming by all students be it basic, java, javascript, html, c, flash, etc...is going to be a rough class for 90 percent of the students. And this might not be because they are not capable. It might just be socially more important to NOT excel at computer programming.

    When I was a youth my father taught basic on Apple II's to all students in their 7th and 8th grade school. This was a 4 week class for everyone in the school. And it was generally disliked by most.

    And programming in basic on an Apple II was much simpler than today and the heavy frameworks we deal with.

    This brings me to Scratch from MIT. I downloaded this when it was released a few years back. It was fine. I build similar products in my real life so I am always interested to see what others are doing. This is free. It is visual. Teaches constructs of event programming. Deals with basic logic. All things that are good to help kids understand. The community seems to have grown a lot since then.

    Explore and give it a try. http://scratch.mit.edu/

  31. Processing by krilli · · Score: 2, Informative

    http://processing.org/

    Clean, quick, cross-platform, can do pretty wild things right out of the box.

    Make it fun, get them hooked.

    --
    Jag pratar lite svenska.
    1. Re:Processing by Anonymous Coward · · Score: 0

      I second this. The principles are there. And it's a perfect bridge to JAVA.

      Also, the fact that you get instant results while writing real code makes it a better alternative to other beginner tools like ALICE. Which for the most part is junk.

      If you're into it: great. If you're not: well you can still pass the class and learn something.

  32. This idea is great idea (not) by Anonymous Coward · · Score: 0

    So are we going to teach Auto mechanics, plumbing, cosmetology, and all the other trades available at a vocational school too? Forget english, math, and reading, who needs those skills anyway. Absolutely absurd idea.

  33. I second the parent! by Samschnooks · · Score: 3, Insightful

    It's a damned shame that you were modded troll. The troll moderation is NOT for modding down something you disagree with people.

    That said, your actual post is a little harsh dude.

    This BS of making kids take shit so that they'll be "well rounded" is horse shit.

    ALL of the greats in the World; Past Present and Future, were NOT well rounded! They specialized in ONE thing and did it extremely well. Trying to be "well rounded" is a path to mediocrity - which explains much of our state today.

    I wish I could find the article, but it stated that it was in the 1970s that some Ivy League admission director pulled out of her ass that incoming students should be "well rounded". Of course, when an Ivy League school does something, all the others follow like stupid sheep.

    1. Re:I second the parent! by not+already+in+use · · Score: 1

      You must first be exposed to something before you can specialize in it. Our schools do just that, give a well rounded exposure so that students can discover what interests them.

      --
      Similes are like metaphors
    2. Re:I second the parent! by tverbeek · · Score: 2, Insightful

      When I was in school, the last subject I wanted to study was Philosophy. BORING! Then I found myself in a Philosophy class with a great teacher, and it became one of my favorite subjects. I even minored in it in college. Granted, I stuck with Comp Sci as my major, because I'd already grown fond of eating every day and sleeping indoors every night, but if there were a way to make a living as a professional Philosopher, this story would have had a Very Good Point to it. :)

      --
      http://alternatives.rzero.com/
    3. Re:I second the parent! by Deagol · · Score: 1

      So the whole concept of the Renaissance Man is lost on our modern world?

      I get where you're coming from, but sometimes being exposed to something is just plain good for you. I can't count the number of adults I have met who have memories of absolutely hating their piano lessons as kids but are so thankful for them as adults even though they don't (or can't) play any more.

      As a homeschooling parent, I agree that we should allow kids to focus most of their energies on topics that interest them or skills they have a natural knack for. However, I think that some brief compulsory exposure to some topics/skills is ultimately helpful in the end.

    4. Re:I second the parent! by mog007 · · Score: 1

      Yes, none of the greats of history were polymaths. None of them received a classical education.

      I agree that foisting a well-rounded education on students in high school is a bad idea, but if you're trying to imply the classical education of universities is a bad idea, you're sorely mistaken.

    5. Re:I second the parent! by Anonymous Coward · · Score: 0

      When we're talking about high school level how specialized could you want people to be? As far as I've seen, those who cause the most issues tend to be the ones with highly specialized backgrounds from the onset. You specialize a bit in high school, not at the expense of other subjects, and then specialize even moreso in college, but again with a few courses in other subjects.

      I'm not so sure I'd want to live in a world full of engineers who have no knowledge whatsoever of history, politics, or society in general, nor a world of politicians with no understanding of, say, economics (as we currently witness in the US). Everyone needs some humanity in them, just as everyone needs some quantitative reasoning exposure.

      Maybe this works well enough for a few geniuses here and there, but we are not all geniuses. And surely plenty of geniuses lead misunderstood and confused lives outside of their area of concentration.

    6. Re:I second the parent! by jandrese · · Score: 1

      While it's true that many legendary people were not well rounded, it is also true that there are a great many people who discover that they have no purpose in society because they overspecialized in something. Even if their primary skill is generally considered useful, it's no good if the person cannot communicate well or has so little knowledge of the past that they're forever reinventing the wheel.

      Also, I think you'll find that several of the legendary greats who you think were not well rounded, were in fact much better writers/orators/etc... than you know. People just don't talk about it because it's not as interesting as the thing they are known for.

      Overspecialization is a risky gambit, and is one that produces a lot more losers than winners.

      --

      I read the internet for the articles.
    7. Re:I second the parent! by Anonymous Coward · · Score: 0

      With all due respect, you're a nameless nobody on Slashdot. We're talking about producing "the greats", a specimen of humanity to which I am most certain you do not belong.

  34. My 2 cents by Anonymous Coward · · Score: 0

    When i was in high school i was required to take a C++ course and i learned alot. I am an engineering grad student and the only thing i have ever programmed in for school or a job is C or C++. I cant attest to the advantage or disadvantage over other languages, but id say C++ is the language students are most likely to see again and its pretty simple once you have the basic steps down.

  35. This is stupid by Reality+Master+101 · · Score: 3, Insightful

    Not everyone is interested in programming, or any sort of engineering. Get over it. Forcing every kid to take programming (and "forcing" is the right word) is like forcing every kid to learn how to build an engine for their car (and NOT something useful, like changing the oil).

    With all the cutbacks in arts and general sciences that take a broad approach to education, why are you wasting their precious school time and especially-precious-now school money on such a specific skill?

    It's like someone who is passionate about embroidery insisting that every kid should learn embroidery for their own good ("Think about the problem solving skills they'll learn by figuring out what stitches they need to get to the pattern they want!") Whatever general skills they learn in this class, they can learn better by studying a more general subject.

    --
    Sometimes it's best to just let stupid people be stupid.
    1. Re:This is stupid by geekoid · · Score: 1

      I would argue that more kids would benefit from learning how to a build an engine becasue they wiklll all deal with cars, and that level of knowledge helps prevent them from being ripped off; where as programming has nothing to do with repairing or buying a computer. Computers are thriogh away appliances to most people.

      Now if I could buy a car for 1000 bucks and use it for 3-5 years. Then learning anything outside the operation of the vehicle would be a waste of time.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    2. Re:This is stupid by msuarezalvarez · · Score: 1

      Actually, "Not everyone is interested in $X" is a true statement for all values of X. Are you proposing not to teach kids anything?

    3. Re:This is stupid by Reality+Master+101 · · Score: 1

      Actually, "Not everyone is interested in $X" is a true statement for all values of X. Are you proposing not to teach kids anything?

      No, as I said in my post, I'm advocating teach *broad* knowledge. Math, science, art, history, etc. Programming is a specific trade skill, utterly and completely useless to anyone who won't be doing it for a living. There are an infinite number of trade skills we can teach kids. How about how to change chemicals in a pool? That's a skill that's actually more useful than programming.

      If kids had an infinite amount of time to learn, then it makes sense to teach them every random skill. Since we don't have an infinite amount of time, we need to devote it to broad learning, and allow people to learn specific skills based on their own interest.

      --
      Sometimes it's best to just let stupid people be stupid.
    4. Re:This is stupid by Anonymous Coward · · Score: 0

      I agree with you. The embroidery analogy is a nice one.

    5. Re:This is stupid by Firemouth · · Score: 1

      Someone above said that it's better to teach problem solving before you go knee deep into the syntax and all the other fun stuff involved in programming. I'd agree with that. I'm not necessarily saying that programming is the one and only method (let alone the best) but if it's an effective way to teach problem solving then I think it's a good idea providing its executed properly. I also believe problem solving would fall into the category of "broad knowledge" since the world is full of problems that need to be solved.

    6. Re:This is stupid by EEBaum · · Score: 1

      On the contrary. Programming is applicable in that much of it is applicable to a deeper understanding of math, as well as different approaches of such concepts as sorting, logic, optimization, planning, decision-making, etc. At more advanced levels of math, there becomes more overlap in relevance. Teaching concepts of programming can be very useful in unexpected ways.

      I agree that *some* programming skills are largely non-transferable trade skills... parsing markup languages, creating DLL interfaces, learning protocols to interact with DirectX, creating database tables. However, there is also a great deal that provides a different way of thinking and of approaching problems. I think that making this distinction and being selective about concepts that are actually useful and transferable would be the key to whether this curriculum is relevant and successful.

      I think there *should* be a more varied approach to a lot of subjects in school. So much of our educational system is centered around "you sit there and shut up while I say something at you, after which you will repeat it to me at a later date," which I find woefully ineffective for actual learning (especially when the teachers hardly understand the material themselves). Giving a starting point down a path that students might actually find interesting may, *gasp*, actually inspire them to learn things on their own. I'd say that learning to change chemicals in a pool could be a fascinating science lesson, teaching about pH and solubility and chemical interactions. Perhaps it would inspire students to become chemists. A whole semester or year of programming might be a bit of overkill for the general curriculum (or it may not), but I think that some exposure would be very valuable.

      A lot of the things I learned came back in unexpectedly relevant forms. For example, I always thought that the emphasis in second grade of "1572 is 1 thousand, 5 hundreds, 7 tens, and 2 ones" was a complete and utter waste of time. Until my second algorithms class, where we were making enormously large numbers stored in base-2^32 and converting them into decimal output.

      --
      -- I prefer the term "karma escort."
    7. Re:This is stupid by EEBaum · · Score: 1

      I was forced to take history classes where we learned mostly folklore and propagandized stories that I then had to unlearn when I got to university level. I hardly see how programming is more of a waste of time.

      For what it's worth, I learned cross-stitching in 4th grade. Everyone in class did. I think it was largely a way to keep us busy and quiet when we finished our work early. And, given that it was more engaging than most of our lessons, I'd do my work more eagerly and enthusiastically because I knew that I could get back to making that bookmark for Mother's Day when I finished.

      Looking back on a lot of school, my memories are of dozing off, daydreaming, doodling, reading books, and disassembling and reassembling pens. I can guarantee that there are some general-skills classes that I got nothing whatsoever out of directly (i.e. I didn't retain anything about the California missions an hour after the exam), but that I probably did get a lot out of tangentially (i.e. I became really good at reading maps, because they were the only thing in the text that didn't suck). Most of my learning didn't come from what was being taught at me, but from what I picked up on the side, and I probably got more out of all the posters on the walls (I had them memorized) than out of all the words in the textbooks (I skimmed for boldface words, if I opened the books at all). In that regard, I think that engagement of the students and availability of in-depth study is the most important factor, rather than whether you spend ALL the math time on countless pages of long division practice, or just half on that and the other half on some vaguely math-related topic that might get them actually interested in the material.

      As for "precious school time," the system is largely glorified babysitting. If we were to honestly look at how much time of the day is spent with the students engaged in learning vs. bored out of their minds, counting every last second until the clock strikes recess, lunch, or the end of the day, I think we'd find that we could accomplish a lot more in a lot less time, IF the teachers are both competent in the subjects they're teaching AND (and here's the tricky bit) allowed to do their jobs without government agencies and parents' groups poking their noses in and chaining them down. Decreasing the school day might also do something about this obesity epidemic we hear so much about.

      --
      -- I prefer the term "karma escort."
    8. Re:This is stupid by Kingrames · · Score: 1

      Because every human that can't program is doomed to become the slaves of our robot underlings.

      --
      If you can read this, I forgot to post anonymously.
    9. Re:This is stupid by An+Onerous+Coward · · Score: 1

      Yeah, teaching something that forces people to become more logical thinkers and better problem solvers is an utter waste.

      End sarcasm.

      Unlike you, I don't think of education time as precious. Schools -- even the best ones -- are as much about warehousing students as educating them. How much of a given day does even a good student spend truly engaged in the material being presented?

      I think programming shines as an educational task:

      * The students spend more time doing than listening to the teacher.
      * There is usually instant feedback when something is going wrong.
      * The class can be a gateway to a career for quite a few students. Let's see embroidery do that.
      * You can simultaneously teach a host of math concepts.
      * Computers are increasingly integral to our lives, and programming teaches you about them far better than any "here's how to use a word processing app" class.

      An introductory class should be about solving broad problems. Not blitting pixels to a framebuffer, or writing to a file using low-level system calls. I think that in a good general ed. class, libraries should abstract away most of the techy stuff. But I think most good education consists of breaking down a problem into its components, boiling away all the irrelevant details, and reasoning about solutions.

      --

      You want the truthiness? You can't handle the truthiness!

    10. Re:This is stupid by Anonymous Coward · · Score: 0

      Yeah, who needs grammar, that shit's boring as well. Not to mention math beyond early arithmetic. Hell, don't bother with no foreigner languages either. Everyone should speak amerikan.

    11. Re:This is stupid by meep116 · · Score: 1

      Not everyone is interested in reading/writing, or any sort of English. Get over it. Forcing every kid to take English (and "forcing" is the right word) is like forcing every kid to learn how to do research and write a report (and NOT something useful, like reading and responding to email).

      With all the cutbacks in arts and general sciences that take a broad approach to education, why are you wasting their precious school time and especially-precious-now school money on such a specific skill?


      And with regard to your last paragraph:
      > Whatever general skills they learn in this
      > class, they can learn better by studying a more
      > general subject.
      Well, what "general subject" would you propose instead? No matter what is taught you can say that it is too specific. Or if you want some general topic taught at a high level with no applications being used, then students wont grasp it.

    12. Re:This is stupid by Reality+Master+101 · · Score: 1

      Not everyone is interested in reading/writing, or any sort of English.

      If you can't figure out the difference between learning to read and write, and learning a trade skill, then I'm afraid I can't help you.

      --
      Sometimes it's best to just let stupid people be stupid.
    13. Re:This is stupid by meep116 · · Score: 1

      While programming may be a trade skill, problem solving is not. Programming is a concrete and applicable way to teach and develop skills such as analyzing problems, decomposing them into smaller problems, and designing solutions. I think that these skills are very important for people to have.

      Teaching a "programming course" that gives students these skills as its goal, and programming being the means to achieve that end would be wonderful. The course need not be about stacks and queues, binary trees, bubble sort, or computing factorials and Fibonacci numbers simply for the sake of learning programming in a vocational manner. Programming can be a tool to teach problem solving.

      I think it would be a shame to make a course mandatory if it was that vocationally specialized. It would be even worse if it was a class on Java or Python or any specific language where it solely focuses on syntax and students don't even learn concepts, but become monkeys trained that can spit out some code and do not really understand much.

      Unfortunately education in the united states has generally become rote memorization, training for tests, and baby sitting. For this reason students could really use general skills such as problem solving, and programming is a fine tool for teaching this, but programming should not be the sole purpose of a mandatory course. Yet for these reasons, any course in problem solving that uses programming as a vessel will devolve into syntax memorization and solving useless and trivial exercises. This is especially true if its viewed solely as a "programming class", so its vital that the programming aspect of any such course be thought of as a teaching tool and not as the sole purpose of the class.

    14. Re:This is stupid by superwiz · · Score: 1

      Actually, "Not everyone is interested in $X" is a true statement for all values of X. Are you proposing not to teach kids anything?

      You are guilty of a common logical flaw. The logical opposite of "everyone" (ie, "not everyone") does not happen to be equal to "no one". To be more precise (or more arcane if it's outside of your background), you asserted that "not all" is equal to an empty set. Logically that's not true. For example, if one sheep is black and ninety nine are white, then not all sheep are white. But it doesn't mean that all sheep are not white (99 of them are).

      --
      Any guest worker system is indistinguishable from indentured servitude.
    15. Re:This is stupid by msuarezalvarez · · Score: 1

      Huh?!

      I was responding to a post which started with: "Not everyone is interested in programming, or any sort of engineering" and proceeded to use that as an argument to support not making programming a mandatory subject: I observed that just as well the claim can be made that "Not everyone is interested in $X" for all values of X, including programming, and I asked if he thought that his argument also extended to justify that kids not be taught any such X.

      I cannot see *what* possible connection your comment has on anything. And I am a professional mathematician: I am quite aware of how negating a universal quantifier works, by the way...

    16. Re:This is stupid by superwiz · · Score: 1

      The "all" vs "none" quantity in the argument is the number of people that are to be taught a particular $X. The original author did not insist that no one should be taught $X if it can be shown that some people have no interest in $X. He did, however, imply that "not all" should be taught $X given that some have not interest in $X. Your question (as to whether the original author's assertion, when extended to subjects other than $X, must mean that kids should not be "taught any such $X") implied that the only alternative to teaching $X to ALL was to teach them to NONE. This implication is guilty of the above-mentioned flaw. I, too, am a professional mathematician. I am only aware of formal logic on informal level, however. Thanks for reminding me what a universal quantifier is.

      --
      Any guest worker system is indistinguishable from indentured servitude.
    17. Re:This is stupid by msuarezalvarez · · Score: 1

      Your question implied that the only alternative to teaching $X to ALL was to teach them to NONE.

      But I was responding to "Not everyone is interested in programming, or any sort of engineering. Get over it. Forcing every kid to take programming is like forcing every kid to learn how to build an engine for their car" and that comment only makes sense if what he had in mind was mandatorily teaching programming to all kids, in a non-elective class, for otherwise there would be no forcing... So the all or none dichotomy was implied in the comment I replied to.

    18. Re:This is stupid by superwiz · · Score: 1

      So the all or none dichotomy was implied in the comment I replied to.

      I see what your counter-argument says. But I think your original post would have been more accurate if you asked if the post to which you replied was arguing for making all subjects elective. I realize that you probably were being colloquial in your choice of words. But, I guess, that's always the problem with being colloquial. The most straight-forward reading of what you said was that you accused the original poster of arguing for no-education rather than a system of having no requirements (ie, the system of making all courses elective).

      --
      Any guest worker system is indistinguishable from indentured servitude.
  36. RURPLE by Anonymous Coward · · Score: 0

    What you are looking for is RURPLE!

    is like turtle, but using Python

    http://rur-ple.sourceforge.net/en/rur.htm

  37. mandatory Lego sales by ryen · · Score: 1

    I'm sure the board of ed will love the cost of a Lego Mindstorms set for every student in the school.
    Also, if you need Legos to teach programming then you're doing something wrong.

  38. smallTalk by doug · · Score: 1

    While I don't personally care for smallTalk, it has a simple enough syntax and was designed as a teaching language.

    More important than language, you'll want to keep the kids engaged. Basically they'll need some results quickly, and printing strings to the tty isn't likely to count for much. That is one of the strengths of GUI programming, poping up windows, playing with colors, and stuff like are likely to keep the kids paying attention long enough to learn something.

    - doug

  39. Have lots of projects and labs by psychicsword · · Score: 1

    I took a half year Intro to Computer Science class as a senior in high school. The class was actually paired with a half year of Principles of Engineering. The thing I loved about these classes it that they were very broad based. We did just about everything in a very basic form. I am a second year CS Major and I am still seeing stuff I learned in the class. We were able to get so much because we used Python but we started with C-- then moved to C then we learned python. Originally the course had used java but you need to know more to be able to have a good project at the end of the course. If I were to make a CS class for High School students I would do a similar thing as what I took. Concentrate on keeping things simple and make most of the point(like 50%) are for projects and labs. About 20% for small tests(only have 1 or 2), 10% for homework and the 20% for a final project. Our project was programming a poker game using a provided graphic library. We also got more than a week in class to work on it in groups of two. I would do something like this because it will give you enough time to do everything at a basic level but at the same time it will allow the students to get something at the end of the course that they can see and looks cool. We only had 1 test in the class and 1 quiz but each week we had a lab which we worked on mostly in class. My teacher would give a hand out the first class each week and would lecture off of it. After the lecture class we would then work on a small project that used what we learned. I don't know if this class would be good for the general person to take or if there would be a lot of support for it from the students but in my school(around 800 students) there was 1 CS class which had a about 5 people who actually wanted to take it and about 20 who were just filling a science requirement. The 20 students who took it and weren't interested in CS as much as I was did struggle and had a hard time but because of the Lab/Project based structure it allowed them to ask for help. I must say this, had the class been a full year of CS there wouldn't have been enough students to fill the class so I would make sure there would be some interest in the class before fully building the curriculum.

  40. How to Design Programs by damg · · Score: 1

    Have a look at the book How to Design Programs, which was written with a pedagogical focus and is a great way to teach the fundamentals of programming and problem solving. It uses an excellent free programming environment which should make it easy for students to get started.

  41. In Soviet Amerika... by n6kuy · · Score: 2, Informative

    ...public school programs YOU!

    --
    If you disagree with me on social issues, then it's pretty clear that you are a narrow-minded bigot.
    1. Re:In Soviet Amerika... by apoc.famine · · Score: 1

      Oh shut the fuck up. That tired fucking meme...

      And you're absolutely correct.

      I've been teaching for 5 years, and this is my last one. It's become clearer and clearer to me that this is the entire point of public school in the US.

      Give all the kids the same (standardized) coursework, give them the same (standardized) test, and make them all functional cogs to work in this society. Teach them to turn on at the bell, and turn off at the bell. Teach them to bow to authority. Teach them that to fit in they must be a consumer, with an iPod, texting plan, AE or Hollander clothes, etc. Teach them that everyone listens to the same bands, and everyone watches the same videos on youtube.

      As Einstein said, "The only thing which gets in the way of my learning is my education." I'm done working on the standardization of students. It wasn't what I wanted to do with my life, and it's not something I can do without becoming (more of) a bitter alcoholic. I'm off to teach college, where I can actually ask my students to learn something. Where they can have some small amount of self determination, and self motivation.

      If my kids attend a public school, they'll at least do it with a healthy dose of cynicism and background on what it's actually for.

      --
      Velociraptor = Distiraptor / Timeraptor
  42. Well... by Anonymous Coward · · Score: 0

    I'm actually in a high school programming course right now.
    We're only touching base on Java.
    Python would definetly be more entertaining though.

  43. My experience with languages by Anonymous Coward · · Score: 0

    I learned Visual Basic at a class in highschool, it was a horrid experience, and I had trouble getting the grasp of it, which was just as well, since it gives you a (in my opinion) distorted view of programming. Before that I learned (just a little) C, which was OK, but it's troublesome when it comes to setting up programming enviroments and compiling.

    In the university I had a course on Java, which was obligatory for all that took scientific courses. I think 10% (or more) of the people that took the subject failed. I also had some problems understanding certain aspects of it, even though I had some experience programming by that point. Moral is; don't introduce someone to programming through a 100% oo-language.

    I've never really liked Pythons syntax as it differs to much from other programming languages, and prefer Perl and PHP as scripting-languages. Though it is said that Python is supposed to be a simpler language, I think that Python's importance of whitespaces might distort newcomers' view of how programming/"interpretation of code" works.

    Lately, wondering about what would be the best newbie language, I've been a bit fascinated by the second generation BASIC-languages. I've never tried it, but it seems to have a really simple syntax and the functionality neccessary for making an introduction to how programming works. Although I don't think it would fill out a whole semester, only the first weeks/months.

  44. Learning styles, disabilities, levels? by meridoc · · Score: 1

    As a high school teacher, I appreciate the opportunity you're trying to offer: not many schools have computer programming classes, so that's pretty neat.

    If your school is going to require this class, be very careful to think about different learning styles and learning disabilities. Programming goes well for very linear, sequential thinkers. It may not go well for abstract free-spirits. How about kids with dyslexia, dyscalculia, and/or dysgraphia? Will you have different levels of programming for different students' abilities? How about the kids who have already done some programming? How about your non-native-English speakers?

    Additionally, think about what you want kids to get out of this class. Will they use it in other classes (sure, ideally they will, but look at the other teachers at your school and be realistic)? Do the kids need a typing/word processing/spreadsheet class more than programming?

    --
    "Two things are infinite: the universe and human stupidity, and I'm not sure about the former." -- Albert Einstein
    1. Re:Learning styles, disabilities, levels? by Fulcrum+of+Evil · · Score: 1

      It may not go well for abstract free-spirits.

      Sucks to be them. I'm sure they hate algebra.

      How about kids with dyslexia, dyscalculia, and/or dysgraphia?

      Surely they have to learn how to accomodate their own problems? I've met a number of mild dyslexics in software.

      How about your non-native-English speakers?

      What about them? This isn't difficult compared to something like an english class - technical manuals are fairly simple to use and most technical material is english anyway

      Additionally, think about what you want kids to get out of this class.

      Presumably, they'll discover whether they like programming.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  45. Maybe this should be expanded by JumpDrive · · Score: 1

    How about a reading, writing, science, mathematics, history, geography curriculum for all high schools.

  46. SImple by geekoid · · Score: 1

    " I'm sure many of you would agree that everyone can benefit from learning to program and any help would be greatly appreciated!"

    No actually, that's not true. Your letting your bias make decsions for you.

    If you have a class for kids interested in programming, there are three goals.

    1) Concepts. You just need a language that teaches the concepts that will be used in programming. The Lego IDE works well, as does Java. Once you ahve concepts, every language becomes syntax.

    2) A language. You want something where they are writing the objects that is widely distributed and can be used on anything. I recommend Jave. Cheap to set up, Usable on a lot of platforms and devices.

    3) Architecture. How to put a system together and create a system that has flexibility. This needs to be taught in a language where th students can code the connection easily and cheaply. I recommend Java.

    Stay away from script languages because they don't really do much long term wise. IF you can write in a language like Java, C++, you can write in Python. That is not true the other way around.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    1. Re:SImple by An+Onerous+Coward · · Score: 1

      Stay away from script languages because they don't really do much long term wise. IF you can write in a language like Java, C++, you can write in Python. That is not true the other way around.

      That's like saying "If you can read The New England Journal of Medicine, you can read Dick and Jane. That is not true the other way around."

      You said that "once you have concepts, every language becomes syntax". Yet you want to start kids off with languages like C++, whose syntax is an abomination that would take the entire course to teach.

      Compare "hello world" for C++, Java, and Python:

      C++:
      #include <iostream.h>

      main()
      {
              cout << "Hello World!" << endl;
              return 0;
      }

      Java:
      class HelloWorld {
          static public void main( String args[] ) {
              System.out.println( "Hello World!" );
          }
      }

      Python:
      # Hello World in Python
      print "Hello World"

      Questions raised by the C++ program:
      * What is iostream.h?
      * What does the # do?
      * What is main?
      * What is cout?
      * What does the double-less-than do?
      * What does return 0 do?
      * Why do some lines end with a semicolon and not others?

      I think the Java program raises even more and trickier questions. For each question that is raised, there is a 1 to 1 mapping with a mistake that the student can make, which will keep the program from running.

      Python has a gentle learning curve, and will go from zero to "finished project that means something to a student" in three seconds flat. Plus, while Java may be more "real world", Python is still real world enough that Google uses it. It may not be the perfect language, but it's a wonderful introductory language. Java, despite its obvious strengths for experienced coders, is not.

      I've noticed that those who recommend a "hard" language like Java for beginners are those who also recommend that only people interested in programming take an introductory course. Perhaps that's because they recognize that only the truly devoted nerd would put up with Java as a first language.

      --

      You want the truthiness? You can't handle the truthiness!

  47. Make the little twerps by n6kuy · · Score: 1

    learn INTERCAL.

    --
    If you disagree with me on social issues, then it's pretty clear that you are a narrow-minded bigot.
  48. Literacy redefined by Pirulo · · Score: 1

    I profoundly agree with teaching programming in high school as a mandatory subject.

    More and more I (a developer) have to interact with other other professionals at management level that don't have a clue about what software can do.

    I consider them somehow illiterate. I don't expect an executive to program, but at least to have an understanding of OOP theory. In a modern world literacy has to be re-defined, and surely besides reading one should know at least the basics of programming.

  49. My Two Cents by champion.p · · Score: 1

    My opinions may be a little unorthodox, but here goes.

    The catch is that it is a class for all students to take, not just those interested in programming, and therefore will focus heavily on teaching problem solving.

    I think this is the most important part of what you are asking. I'd guess that when you ask most people this question, they'll think of the best way to teach computer science, or the best way to teach computer architecture, which will undoubtedly lead to thoughts of "No! Not that language!" and the like.

    To teach problem solving using computers, you need to go from a top-down level, which rules out C or assembly. You also need to teach an interpreted language, not a compiled one -- if you want a quick-and-dirty solution to a problem you face, how many times do you pull out Java (or C++ -- I'm not anti-either)? I agree with your choice of Python for this reason. You need something closer to shell scripting, but not to the point of bash; it's not high-level enough and your students will be bogged down with syntax instead of learning programming constructs and problem-solving techniques.

    It sounds like you are not trying to teach computer programming, at least not in the way either computer scientists or computer engineers think of it. Computer scientists need algorithmic analysis; computer engineers need architecture and low-level interaction. I understand that this is a cliched oversimplification, and to be really good at either, you need to understand both sides. But if you're not training these kids to be either one of those professionals, your goal is "Problem Solving Using Computers", which happens to require a knowledge of "Computer Programming". They need to know loops, decisions, and variable manipulation; the deeper you delve into computer science and architecture, the better for them, but don't lose sight of what you want them to be able to do on their own after the end of the term. If they walk out of your class thinking "I'll never use this", either they aren't the students who should be in the class, or you aren't teaching towards that goal.

  50. Useful concepts to teach by Anonymous Coward · · Score: 0

    My first was c but I guess most kids won't like fiddling about with pointers and memory logic like I did. Python or Java is probably a good idea. Easy to use and useful languages too. I think the most important things are to teach correct coding techniques and an understanding of what is happening behind the scenes as these can be applied to other programming languages that the kids may learn in the future

  51. Smalltalk by Anonymous Coward · · Score: 0

    Smalltalk, although dated, is probably still one of the easiest languages to comprehend in terms that a non-programmer would understand. It's simple syntax and 'everything is an object' mentality make it a perfect starting point to launch into other OOP languages as well as a user-friendly language for problem solving. Try this... write a method in SmallTalk that queries it's virtual machine and finds the average method length of the methods provided in the API. Last I checked, that number was a little over 6 1/2 lines per method... that's what I call power and usability in a nutshell.

  52. High School CS Requirement by drchoffnes · · Score: 1

    This is slightly OT, but your brother might find it helpful to check out what these guys are doing: http://people.ucls.uchicago.edu/~bfranke/csreq/index.html There is a movement toward making CS a graduation requirement for high school, something tells me a few of your here would agree with this.

  53. Ever heard of a Renaissance man? by langelgjm · · Score: 1

    ALL of the greats in the World; Past Present and Future, were NOT well rounded! They specialized in ONE thing and did it extremely well. Trying to be "well rounded" is a path to mediocrity - which explains much of our state today.

    Heh, apparently the ONE thing you decided to do well wasn't history. Ever heard of a Renaissance man?

    --
    "Anyone who [rips a CD] is probably engaging in copyright infringement." - David O. Carson
  54. squeak.org by sydbarrett74 · · Score: 2, Informative

    Take a look at Squeak -- it's targeted at younger children (elementary and junior-high) but versatile enough that high schoolers can probably get something out of it as well.

    --
    'He who has to break a thing to find out what it is, has left the path of wisdom.' -- Gandalf to Saruman
  55. Python, Robots, and Games by Anonymous Coward · · Score: 0

    You should check out:

    http://wiki.roboteducation.org/

    They have robots (non-lego), art, music, and games.

  56. Teach concepts not implementations! by Usquebaugh · · Score: 1

    Should have used Logo/Scheme/Lisp. You'll spend more time teaching syntax rather than programming/logic.

    Take a look at

    CompuSci without Computers

    How To Design Programs

    1. Re:Teach concepts not implementations! by dlsmith · · Score: 1

      In fact, if you look at How to Design Program's introduction (the server seems to be down right now; here an archive page), you'll see that it was written with this sort of a class in mind. Even if you use a different language, and even if you disagree with its philosophy, you should at least be familiar with it as an important work in this area.

      A relevant excerpt from the link:

      Many professions require some form of computer programming. Accountants program spreadsheets and word processors; photographers program photo editors; musicians program synthesizers; and professional programmers instruct plain computers. Programming has become a required skill.

      Yet programming is more than just a vocational skill. Indeed, good programming is a fun activity, a creative outlet, and a way to express abstract ideas in a tangible form. And designing programs teaches a variety of skills that are important in all kinds of professions: critical reading, analytical thinking, creative synthesis, and attention to detail.

      We therefore believe that the study of program design deserves the same central role in general education as mathematics and English. Or, put more succinctly, everyone should learn how to design programs.

    2. Re:Teach concepts not implementations! by colinrichardday · · Score: 1

      Logo has rather simple syntax. Why would you spend more time teaching it than the implementation?

    3. Re:Teach concepts not implementations! by Usquebaugh · · Score: 1

      Syntax is not a concept it's an implementation.

      The reason for a simple syntax is to reduce spending time teaching things that are not important. Syntax is not important in learning to program!

      Concepts are such things as Turing, Shannon, Von Neuman, Imperitive, OO, functional, relational, algorithims etc. Things that do not change from one implementation to the next.

      Implementation is stuff that changes from language to language, OS to OS etc.

  57. A couple of nitpicks by Anonymous Coward · · Score: 0

    "Once you ahve concepts, every language becomes syntax."

    Not really. The reason we have multiple languages is so we can do things differently. Try writing a quick bubble sort in Postscript. Postscript is stack based. All the ways you usually do things (like defining variables for instance) don't work in Postscript. Admittedly, Postscript is an extreme example but it does demonstrate the general principle. (Yes, Postscript is a programming language.)

    The trouble with thinking that the only difference between languages is syntax is that you end up trying to force your existing concepts onto a language that isn't suited for them. You lose the advantages of the language or worse, you make the language work very inefficiently.

    "Stay away from script languages because they don't really do much long term wise."

    Actually, Python is very extensible. There are lots of very large programs written in Python.

    The main advantage of Python for teaching programming is that, like Basic, it is easy to learn to program simple programs. Like Basic, Python's syntax is simple. Unlike Basic, Python will take you just about anywhere you need to go, short of device drivers of course ;-)

    The trouble with C, Java and C++ is they have a bunch of cruft that tends to confuse beginners. They aren't good teaching languages at all.

  58. Reverse backwards by edittard · · Score: 1

    This class would follow after a class using Lego MindStorms

    Well that's your problem - it should follow before it.

    --
    At the bottom of the /. main page it says 'Yesterday's News'. Well they got that right.
  59. How to Design Programs and TeachScheme! by DragonWriter · · Score: 2, Insightful

    While they use Scheme instead of Python, which you seem to have settled on, the TeachScheme! effort and the book How to Design Programs are aimed pretty much at the kind of thing you are trying to do: HtDP is designed for universal programming education (aimed at either high school students or lower division liberal arts students in college), and TeachScheme! is directly aimed at teaching in High School.

    (Linked Wikipedia pages because it seems like both websites -- and the main PLT website -- are down at the moment; the website links are on the wiki pages and I'd recommend going to those when they are up.)

  60. Not about the language by markitect · · Score: 1

    I think everyone is putting too much emphasis on what language to use. No matter which one you pick the students will never think you were trying to make things easier for them. Instead I would suggest looking for local High School Programming Competitions http://www.engin.umd.umich.edu/contest/ Pick a language to match a local competition, Telling everyone that the top 3 students from each class, or however you want to do it gets to compete for $500 dollars will do a lot more for learning then picking an easy language.

  61. Teach them the basics first by Anonymous Coward · · Score: 0

    Are you kidding me? Teach them how to do something besides playing videogames first. Start with the basics - 99% of children don't understand how computers work (outside of the push the "Start" button to shut down scope)... teaching them how to program in school, is like forcing everyone to learn how to take apart a internal combustion engine before giving them a drivers license.

  62. no,no,no....php all the way....! by hesaigo999ca · · Score: 1

    Php, is fun,simple,advanced,and cool all at the same time, it is simple enough for the newbs,advanced enough to control pcs going unto your web page, quick enough not to overload the servers, and also web based, so as to allow more interaction by the students (all of the students today want a cool facebook page or myspace page).
    The best also about this is its free, and comes free with linux also free for those students who cant afford windows. Those who have windows, can install webserver1.0, and run php directly from a home version of xp...dont need pro. So all your needs are taken care of.

    You could always try .net or asp or vb, but again , license etc... might cost more then the student can spend.

    1. Re:no,no,no....php all the way....! by jDeepbeep · · Score: 1

      Php, is fun,simple,advanced,and cool all at the same time, it is simple enough for the newbs,advanced enough to ..... snip

      And Python doesn't meet all the qualifications/ selling-points you bring up?

      --
      Reply to That ||
    2. Re:no,no,no....php all the way....! by thetoadwarrior · · Score: 1

      And let's not forget Python has nice and consistent syntax unlike PHP.

    3. Re:no,no,no....php all the way....! by An+Onerous+Coward · · Score: 1

      I'm not a fan of PHP, but if the class was focused on doing a big web project, it might be a good choice.

      Now, if I were teaching such a class, and a student wanted to go further in web-oriented programming, I'd encourage them to take what they've learned and move over to a framework like Rails or Django. But PHP + web gives you a good dose of instant gratification, which I think is *the* secret ingredient for any introductory programming class.

      --

      You want the truthiness? You can't handle the truthiness!

    4. Re:no,no,no....php all the way....! by hesaigo999ca · · Score: 1

      nope, it doesnt. Php is alot easier to understand then python.

  63. imo by Anonymous Coward · · Score: 0

    I'd start off with something basic that gives immediate results that are appealing, such as Logo. You can get a lot of the basic structure of programming in logo. http://en.wikipedia.org/wiki/Logo_(programming_language).

    After that i'd go to something a bit more programming worthy, like C++ or Python.

  64. I wholly support Alice. by BrianH · · Score: 1

    I work in a university environment and have been programming for...a while...so when my son's Boy Scout troop approached me about teaching programming to some interested boys, I did a ton of research and came up with Alice.

    If the goal is to teach programming concepts and logic, then it doesn't get much better than Alice. The course materials are already written, the language is easy to use, it's supported by Carnegie Mellon, and it's completely free.

    The greatest thing about Alice is that it's an entirely visual environment, and it gives immediate visual feedback to the students which is PERFECT for younger learners. Instead of scaring students off by throwing them straight into code-hell by forcing them to learn the syntax of Language X just to print "Hello World" to the screen, Alice allows students to learn the concepts of programming in an entirely mouse-driven environment...and they get to watch video animations generated by their software within minutes of starting. That sort of simplicity and feedback keeps younger learners interested and hooks kids who might otherwise see it all as "greek".

    The only complaint I had from the group was that I had only three computers to teach eight boys...they were literally shoving each other out of the way to get a chance to program. That's probably the best endorsement anyone could give it.

    Some people might complain that Language X or Language Y is better, but the reality is that you're teaching kids, and that any language they are taught today will be abandoned or heavily revised long before any of them are ready to jump into the field. As a teacher, you're better off teaching them in an environment where they can focus on concepts, and NOT syntax.

    Go to Alice.Org>About>What is Alice and watch the video at the bottom. It shows the language in action, shows the feedback, and demonstrates the concepts it promotes.

    --

    There is nothing so pathetic as seeing a beautiful young theory roughed up by a tough gang of facts.
  65. Non sense. by Samschnooks · · Score: 2, Interesting

    None of them could be great in the modern World. All of your examples are form primitive man - anyone with a half decent brain and the means could have been a "Renaissance man" during the times you mentioned - cannot happen today - the World is TOO complicated. I stand by my original statment.

    1. Re:Non sense. by langelgjm · · Score: 1

      I stand by my original statment.

      Your original "statment" was that all of the greats of the world, past, present, and future, were not well rounded. Your current comment contradicts this, because you qualify that statement by limiting it to modern times. In other words, you don't stand by your original statement.

      All of your examples are form primitive man - anyone with a half decent brain and the means could have been a "Renaissance man" during the times you mentioned - cannot happen today

      Sigh... first of all, I didn't give examples, but I will now. You're entitled to your opinion that Aristotle, Averroes, Leonardo, Newton and Jefferson were all "primitive" men.

      I freely admit that the depth and breadth of various disciplines today preclude the same sort of "Renaissance men" or polymaths of the past. On the other hand, there are moderns who excel in multiple disciplines. Off the top of my head, I can think of Bertrand Russell, Alfred North Whitehead, and John Polkinghorne.

      My only point was that your claim that all the greats in the world were not well-rounded is a load of horse shit. Up until a few centuries ago, pretty much all of the greats in the world were only well-rounded.

      Additionally, I think there is value in at least having a passing familiarity with more than one discipline or field of study.

      --
      "Anyone who [rips a CD] is probably engaging in copyright infringement." - David O. Carson
    2. Re:Non sense. by Yuuki+Dasu · · Score: 1
      You're right. Someone like Richard Feynman could never have learned Portuguese, become an artist, played drums, written books and famous lectures, meanwhile having a broad hand in all kinds of modern physics.

      Wait, what?

      And he's not the only one.

    3. Re:Non sense. by Cytotoxic · · Score: 2, Informative

      Pfffeh.... nobody could work in multiple fields these days. I mean, really... sure, Linus Pauling won Nobel Prizes in 2 unrelated areas, and is a giant in both chemestry and biology, wrote textbooks on quantum physics and discovered the molecular cause of sickle cell anemia, built weapons AND was a renowned peace activist - Nobel peace prize and all ... but he died like in 1996 or something. Ancient history man...

  66. Programming the Carpentry of the 21st Century? by beegeegee · · Score: 1

    When I learned how to program in the mid '80s, I was greatly aided by a course I had been forced to take (and hated) in High School. That course was Typing. My own take is that I would like my children to learn programming as a 'fallback' like how men in my generation could always bang nails if the going got tough. I was more excited by this plan in the 90s when programming was actually lucrative but it will still serve. Even in this crap economy there's still lots of programming jobs. So I'm all for your course plan and Python seems okay as a language (boring but so was typing). Firebug has a nice built-in Javascript console so you might want to consider that.

    1. Re:Programming the Carpentry of the 21st Century? by certsoft · · Score: 1

      Typing was the most useful class I took in High School. It's painful to watch programmers type with two fingers.

  67. Hate to advocate microsoft... by tempest69 · · Score: 1
    Have you looked at small basic? It is absurdly low brow, the commands are easy, no varDecl's, Python block structure and SIMPLE GRAPHICS, which should get excitement up.

    Storm

  68. use autohotkey by tinku99 · · Score: 1

    Its actually useful from the start, and is the best documented programming language. When I was a freshman College and relatively undecided on my major, I browsed through a few computer science books. I failed to get excited about the usual examples given in such books. Converting Celsius to farenheit seemed pretty useless, atleast not worth the effort of coding. I didn't see a situation where i would have to do many such conversions at once. I did not want to create calculators. There was a pefectly good working calculator on my computer already. And as I understand it they were invented over a 100 years ago. I did not see the point of creating random objects such as animals making noises that are usually taught in an effort to introduce object oriented programming. I haven't even been to the zoo in a decade. I did not want to know how many people are logged on to my computer right now. As far as I knew only one person could be logged on to my computer. Everone else had there own computer anyway. I think beginning programming courses should teach you to automate everyday tasks. computers can do anything. There are three reasons to learn computer programming. The most important reason in my opinion is to make your on life easier. A second reason is for intellectual development. So much of education is about memorizing and then forgetting and letting someone else do it better. Computer Programming allows you to think and do. Hopefully think more and do less. But this usually comes after having done more and not wanting to do that much. Computers can do whatever you can do with computers and whatever you can think of doing with computers. The interesting part is that they can do these things while you are not there, or when you are too lazy to do them yourself. As far as things you have seen people do with comupters, you can learn to do them yourself. And you can usually teach a computer to them also. The great thing is, is that computers don't yet have rights, and its not considered unethical to "use" them. Programmers are first users. Users would be better users if they were programmers.

  69. Python? by Anonymous Coward · · Score: 0

    I stand by my always first choice to teach programming: QBasic. It might not be the most useful, most up to date, etc, but it is the most straight forward and forgiving language / IDE that I have ever layed hands on. It just works, and actually tries to help you format your code correctly, rather than go straight to a mysterious error message that a newb will never decipher.

    You don't want a language with pointers. You don't want a language with a lot of syntax shortcuts (I can't keep slices straight when I dabble in Python). You don't want something with objects. You want barebones variables (integers, floats, strings, and booleans) and functions/methods, preferably with simple textual I/O and graphical I/O.

  70. I wish. by Malkin · · Score: 1

    I didn't get any math education during 6th grade, because I tested into Pre-Algebra, but it was too much trouble for my school to get their hands on any Pre-Algebra books, or to bother teaching me, and the small handful of other kids who qualified. (I'm not sure why they bothered testing us, in the first place, under the circumstances.) We were told that we would have to take general math again, in spite of the fact that it was a complete waste of time. We were so bored, we would have been willing to self-teach, if we could've just gotten our hands on some damn books, but no. And my neighborhood wasn't rich; the families couldn't afford to buy textbooks out-of-pocket.

    This is probably why I roll my eyes, every time I hear someone going on about how "evil" tracking and labeling kids is. If you lump all the kids together indiscriminantly, whether you're teahcing to the highest common denominator, the lowest common denominator, or the average, you're always screwing somebody over.

  71. Evidence against evolution by Anonymous Coward · · Score: 0

    Thank you for repeating this very, very old question.

    If you need to ask this question on /. then you have no business in education

    Please remove yourself from the gene pool at the next possible opportunity

  72. What they could also learn... by jonaskoelker · · Score: 1

    They could also learn some typing and/or proof-reading skills; I'm sure that'll come in handy when they post on slashdot ;-)

  73. MATLAB / Octave by Anonymous Coward · · Score: 0

    I propose that the best language to learn on is the one with that has the least amount of you-must-do-this-before-the-code-will-run. The "m" language in MATLAB is really nice and so is the environment. MATLAB is very expensive but educational licenses are available. Last time I checked college-student licenses were like $75. Octave is an open-source alternative that mimics MATLAB in many ways.

    1. It is script-based so there is no compile process. This makes writing code move very fast.
    2. There is no "#include" or "use" or "import" to bring in libraries. The environment simply makes the libraries available. This cuts through the crud.
    3. You can execute commands from a command line and call built-in functions from the command line. Its a good try-it-then-code-it setup.
    4. It has nice graphical data display so it is visually stimulating to students. Cool.
    5. Error messages are fairly clear and clicking on the error text takes you to the line of code with the error. Easy to understand.
    5. It has functional and object-oriented programming.
    6. No pointers. Nice and clear, no indirection.
    7. Automatic memory allocation.

    Example:
            %
            %comments look like this. this is an
            %example of a completely executable file
            %all the student needs to do is press F5
            %in the MATLAB editor to run the file.
            %
            numbers = [1 2 4];
            sum = 0;

            for k=1:length(numbers)
                    sum = sum + numbers(k);
            end

            sum %line without semi-colon displays the value

            % the following is output on the
            % command line
            %
            % >>
            % sum =
            % 7
            %

            plot(numbers); % shows line-plot of index vs. value

  74. Whatever it is, don't make it half-hearted! by jonaskoelker · · Score: 1

    I can report on my own experiences.

    As part of my High School experience, one math lesson (or was it the good part of a day?) was carved out for programming our TI-83 calculators. Having already programmed it (hey, it's programmable; no, I didn't make it run Linux), this was fun and relaxing, and my program for solving second degree polynomials had more than just myself as a user.

    But I seemed to pick up a general attitude of "We don't like it".

    I can also report on being in their shoes; in my probability-and-statistics course, I had to proficiently use SAS, or at least proficiently invoke something called "Proc GLM". It's probably a mighty fine Proc, but we weren't taught anything about SAS which made it somewhat difficult to do anything except copy what we were shown.

    So, if you decide to teach some programming, you have to go whole-hawg. Teach them from the ground up. Don't leap-frog over some detail assuming it won't matter: when you get compiler errors phrased in terms of things you haven't been told about, you're lost (through no fault of your own).

  75. Training is bad? What the hell... by jonaskoelker · · Score: 1

    the ones that have gotten programming in
    hs and college are less prepared as professional
    programmers than those with no formal training.

    They're also more likely to spend (i.e. with overwhelming probability waste) time looking for a polynomial-time algorithm for doing register allocation.

    And... what the f? Having implemented a compiler as part of my university classes, I'm less prepared to work on Google's V8 compiler than a person with no experience at all?

    Either you're flat out wrong, or I'm not sure we agree on what you're saying.

  76. F# + XNA? by giuseppemag · · Score: 1

    As a tutor in a CS university, I have just finished helping my teachers manage an introductory programming course in functional languages. They figured (I wholeheartedly agree) that functional programming is a great way to get started, because it is high level and it forces you to think about coding instead of "coding now, thinking (maybe) later". They were thinking about using Scala, but then I suggested F# so that we could use some .Net library for making games (like XNA) to create more engaging assignments. I also believe the amazingly strong link between functional programming and logic makes FP a subject that might be of a more general use to high school students than traditional imperative programming with its weaker ties with maths and logic in general.

    --
    My book: Friendly F#, fun with game development and XNA; my game: Galaxy Wars by VSTeam; my gamedev language: Casanova.
  77. this might help by azenpunk · · Score: 1

    unless it's been mentioned and i ahven't noticed:

    alice.org

    scratch.mit.edu

    you said for all students, so i assume this includes the ones who are not 'naturals'. give these a look over, they are mostly to convey the basic ideas of programming (at least object oriented and procedural). mit's scratch seems the most promissing to me though, but i'm not a teacher.

  78. Procedural, not OO by Anonymous Coward · · Score: 0

    I tought myself QBasic when I was 7. If high school kids can't do that, they deserve to fail.

  79. How about a kid accessible language? by Cytotoxic · · Score: 1

    Based on no personal knowledge whatsoever - I just saw a reference somewhere - take a look at Kodu. It appears to be a programming language for building games that is designed to be accessible to kids. That way you could teach the basics of algorithms without getting to bogged down in syntax. As a bonus you might be able to get some financial support from Microsoft since they'll be interested in building a market for their product.

  80. Math Classes should be responsible for this by Anonymous Coward · · Score: 0

    I don't believe programming is the right tool to teach this.

    Problem solving is a key component of any real world math problem. Having students learn this skill through programming just adds extra complexity to the process (this is what this syntax does, this is how you organize programs, etc), not to mention that programming involves lots of abstraction. Not to say programming education is worthless, but let us not force it on those that don't have an interest in it.

        It's arguable that if students aren't learning problems solving in our math classes, then those math classes have little worth.

    Instead, our schools should have their geometry students build things and measure their world with geometry (sometimes outside of the classroom). We should show more of the applications of algebra across the sciences and ratios and real life scenarios involving costs and supply.

  81. Python and Mindstorms? by Anonymous Coward · · Score: 0

    I couldn't find any related projects for using Python as a language on Mindstorms. It would be much appreciated if you could point me in the right direction.

  82. Hmmm... by Anonymous Coward · · Score: 0

    I don't know. I have an issue with the premise of the original post, but Javasrcipt...I don't know. While I definately get and couldn't agree more about the "no need to learn bits and bytes" concepts, the higher level the language, the more assumptions are being made.

    Teach, "Here put this line of code."
    Student, "K...what's it do?"
    Teach, "It includes an external file."
    Student, "It does what to who?!!?!"

    Now, I am kinda anal and I question everything I do. I despise most WYSIWYG tools for the precise reason that there is all this "majix and vudoo" going on all over the place. There was NOTHING I HATED more in class than to have some professor tell me, "Just do it because I said so to make it work."

    That being said, I honestly don't get the premise of the course. Why would someone who is not interested in computers take a programming course? (other than because some bozo admin decided it was a good idea). If the intent is to teach programming, well then, immediately we have to go back and readdress the bits and bytes question. Those topics are not crucial to getting "Zips and wows" to flash on the screen, but they are pretty crucial to fostering **good** programmers. No, I don't think a kid needs to be able to do Xor calculations in their head, but they need to at least understand the "majix and vudoo". (those who disagree are likely the same scriptkiddies polluting our world with mem leaks, useless and wasteful overhead and other horrendous practices that they don't even realize are an issue)

    If the intent is to teach structured problem solving through logic, then I say get rid of the coding all together. You do not need code to teach these things, and from my experience it just gets in the way.

    And to the sorting lists guy...the point behind teaching the bubble sort is not to impart the most essential and crucial aspect of design and coding, it is to give a simple problem to someone learning a syntax, as well as to show "People can just move things around, with a machine you have to use some tricks. For example...". Noone has ever claimed Hello World is crucial to structured programming, and I am unaware of anyone who has done likewise with list sorting. When my sons first asked about programming, the FIRST thing I did was write down a list of random numbers and say, "Ok, explain to me how to put those in order."