Sunday, October 31, 2010

Computer Programming...

As I was teaching the logic unit in geometry a few weeks ago, one student asked where this was used. In addition to other examples, I mentioned that logic is heavily used in computer programming and gave some examples. Then they asked why we didn't have such a class at our school. Good question. I've been looking around at resources, and other high schools in our district, and it seems that computer programming is only taught at one school.

"Back in the day" in NJ in the late 90's I taught programming. Back then (and maybe in that state), you didn't need extra certification to teach it. I taught the introductory class, and, horror of horrors, it was taught in QBasic. Gasp. But I actually found it to be cool and friendly for the students. We could create graphics (that were "cool" for those days before all the whizzy bang stuff they've seen today). We created games and questionnaires and such and all the basics (ar ar ar) were taught: loops, sorting, if statements,...

Well, it seems in Texas (and today) I'd need an extra certification, but that would just require taking another test since I already have a certificate. Then there's the question of what language to teach it in. It seems that AP Computer Programming is in JAVA. But in my (old school?) mind I'm thinking that a "non object-oriented language" would be the way to start for a 1st year student. I still think that if you learn the basics well in any language, then transferring your skills to a new language would be doable.

Anyway, hopefully it'll be put on the choice sheets in January, and maybe next year I get to have fun with programming. Of course now that I've jinxed it, it'll not come to pass. I guess that doesn't prevent me from learning JAVA (in my spare time) and learning enough to pass the certification test this summer. Does anyone teach a 1st year programming course in HS and have tips on what language works? I'd greatly appreciate any extra knowledge.


  1. I know Andy at teaches AP CS - Java. And Shawn Cornally has a class where I'm pretty sure he teaches php or something like that. Something weird. :) I think python is a pretty nice intro language but I've always thought a fun intro class would be more hardware based. Like programming microcontrollers or Lego NXTs. Immediate gratification and you can play around a lot and get results.

  2. I'd suggest two languages, depending on your ultimate goals :)

    I got my degree as a Computer Systems Engineer, before becoming a teacher, so I've seen a few languages, and I know what worked for me.

    I learned on Microsoft Visual Basic and I'd always recommend starting kids on that. It allows them to visually create things that actually SEEM interesting, as opposed to Java which is hard to create anything "cool". They can make games, quizzes, simulators, etc, all the while learning the in's and out's of coding (statements, proper style, formatting, referencing attributes in an object, etc).

    On the other hand, it a) costs money, and b) isn't widely used in mainstream industry. If you're looking to prep these kids for College/University, Java is probably your best bet. It's not used a ton, but it's free, and the principles build into the languages that are actually used.

    If however you get a really low group, or want to start this at a lower level, Scratch is a blast because it's basic programming without the requirements of actually typing anything :)

    If you want some more info, feel free to email me.

  3. That's an intriguing idea .... robot-y type things .... hmmmm. Thanks for the tips. I'll look into php and python.

  4. Thanks, Graeme. I don't know much about Java, but maybe it's like C++ where you can use it as a "basic" program without delving into the oop stuff. Is that true? And Scratch .... I'll add it to my look up list.

  5. I recommend that you check out Helene Martin's blog and her school blog at Garfield Computer Science.

    Also check out Ben Chun's blog.

    I think PHP is a good option. The documentation is simply amazing. For just about every command there is a code sample, students can learn from examples.

    Pair that with javascript and you can get do some nifty server side and client side interaction.

    Best part is both are free, afaik.

  6. My 9th grade son is learning on Scratch, then will switch to Java.

    Scratch has shapes for the basic constructs (lops, branches,...) and the pieces click together. They learn the fundamentals of programming, then will apply one language's syntax.

    (I still like Turbo Pascal - a kid of the '80's)

  7. Please think of this as a multi-year progression:

    1st Phase - Small Basic & Scratch
    2nd Phase - A form of robot basic with old fashioned editors. I use the Parallax Microcontroller text for programming and Sumobots. Cheap - good stuff.
    3rd Phase - Focus on Matlab which can be used in Best Robots - and internships at colleges. Some students should use Minitab or JMP to get their Stat skills going for internships also. Lastly, the only academic software that matters today is Python.

    AP Computer Science is being discontinued. Forget the Java, C++, etc. Help your students out by trying to get them to Phase 3 ASAP.

  8. Excellent. Thanks for all the advice. I will definitely check out the blogs and learn more about Scratch, PHP, matlab at college (which we used to use in my day), and this news-to-me about the AP computer science course. I appreciate you taking the time to inform me.

  9. We started up an intro to programming class last year and it boils down to Alice ( for the first half year and then java for the second half. Alice has been absolutely excellent at introducing programming techniques (loops, recursion, parameters, etc.) but in a non scary, drag-and-drop, cant screw up the syntax, way.
    At the end of the java unit we switch over to robocode and make autonomous battle robots. Nerdy, but fun.

  10. Anonymous10:31 PM

    I am teaching an Intro to programming class this year. It is Java. We started with a few weeks of Scratch and then use Greenfoot. Check out Greenfoot. ( Very graphical, but all code is written in Java. Students (11th and 12th graders) are doing well with it.

  11. Anonymous11:31 PM

    I'd recommend Scratch first, followed by Python.

    See my post

  12. I've heard of Alice, from CMU, right? And many people are recommending either Scratch or Python. I guess I'll spend some time in the next couple of weeks/months checking them out. ... and thanks for the links. I'm on it.

  13. Our school offers 3 programming classes. Programming 1 is taught in Visual Basic. Programming 2 in C++, and Programming 3 (which is the AP Course) is taught in JAVA. Each course is 1 semester long. We also have a very successful programming club. The teacher/advisor has a MA in computer science and his minor from his BA in Ed was in math. He does a great job teaching logic, problem solving, and the underlying math concepts, plus his courses are among the most popular electives for STEM prep kids. Here is his school website should you want to contact him re: curriculum. I know he would be willing to share his experiences with you.

  14. An earlier person mentioned Visual Basic and I would second it with a twist. Your school probably already has MS Excel installed on its computers. You could easily teach VBA (Visual Basic Application edition). Most people don't realize that VBA is part of Excel and is a good way to start with an object oriented language (I'm not saying its a true object oriented language. I'm saying its object-oriented-ish.) In the olden days we would have called this a macro language but it is so much more! Play with it and see what you think. Excel programming is a marketable skill and the school wouldn't have to invest in new software.

  15. keninwa: thanks for the links. I'll follow them.

    PeachPod & keninwa: I hadn't thought about visual basic. In fact, this summer I did some programming in Excel with it. Hmmmmm.

    I'm getting more thrilled and hope it goes through for next year :).

  16. Assuming you saw it but Dan Meyer just posted about a "computational thinking" curriculum. Python from my 10 seconds of glancing around.