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

162 of 214 comments (clear)

  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 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?
    9. 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.

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

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

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

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

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

  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

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

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

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

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

    12. 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!

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

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

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

  16. 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?
  17. 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.

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

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

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

  21. 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!

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

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

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

    5. 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."
    6. 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."
    7. 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.
    8. 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!

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

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

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

    14. 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.
    15. 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.

    16. 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.
  27. 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.

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

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

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

  31. 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
  32. 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"
  33. Maybe this should be expanded by JumpDrive · · Score: 1

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

  34. 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!

  35. 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.
  36. 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.

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

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

  39. 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
  40. 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
  41. 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.

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

  43. 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.
  44. 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.)

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

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

  47. 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.
  48. 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...

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

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

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

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

  53. 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 ;-)

  54. 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).

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

  56. 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.
  57. 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.

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