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!"

28 of 214 comments (clear)

  1. 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. 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...

  3. 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.

  4. 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 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
  5. 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.
  6. 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.

  7. 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".
  8. 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.
  9. 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
  10. 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.

  11. 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.

  12. 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.
  13. 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 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/
  14. 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.

  15. 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.
  16. 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)

  17. 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.
  18. 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.

  19. 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.

  20. 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
  21. 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.)

  22. 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.

  23. 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 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...

  24. 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.