CS on the Cheap

I watched Doug Bergman’s video with fascination and jealousy.  I have his book on the way.  Looking at Doug’s classroom I can see a different end of the spectrum money-wise from my classes.  He has a lot of really cool hardware which really can attract kids into CS classes.  Most schools, especially small rural schools, do not have the budget or the sponsors to purchase high end hardware like this so we have to find a different approach.  Having some of these hardware devices is an incredible attractant for students and adds a lot to the breadth of a CS course.  It gets kids thinking that CS and programming are more than sitting in from of a keyboard.  So how does a poor school with a zero dollar budget get at least a little bit of this hardware into the classroom?  Well here are my paths to dirt cheap CS without digging too deep into my own pocket.

  1. Computers
    1. I stress BYOD. If kids cannot afford a laptop I have loaners.  I give them admin rights and reformat in the summer.
    2. I do not use the labs for my classes but all my labs are used computers from the Montana State recycle warehouse.   Four to six years old but for what a school needs perfect.
    3. Most of my laptops come from companies in town that are doing a replacement rotation. They come without an OS which is fine by me.
    4. I do not think Chromebooks are a satisfactory route for CS/programming. They are just too restrictive, especially after a school does a lock down on them.  There are a number of programming apps out there that will work on Chromebooks but I do not see them preparing students to work in the real world.
  2. Software
    1. All free. Python, Small Basic, Visual Studio, Alice, Scratch, App Inventor, Unity, Blender, and so on forever.  If a teacher cannot build a decent curriculum from the free software out there they need to just give up.
    2. I do buy a Microsoft license which is my biggest budget item.
  3. Textbooks
    1. Python – “How to Think Like A Computer Scientist, 3rd edition” by Wentworth, Elkner, Downey and Meyers. Great book to use as a course guide.  Is designed as a textbook with exercises at the end of each chapter.    There is an interactive version here or just Google “How to think like a computer scientist”.
    2. Java – “Think Java” by Downey.
    3. C# – “C# Programming Yellow Book” by Rob Miles. Designed for a college course but works fine for 2nd or 3rd year high school programmers.
    4. Almost everything else has tutorials or YouTube video. There is a time commitment involved finding good ones but the price is right.
    5. There is also some excellent low cost stuff out there. For Unity the series by Patrick Felicia is great and very cheap.  I bought them out of my pocket, that is how cheap they are.
    6. Lots of used textbooks on Ebay. I bought a bunch of the original “Learning to Program with Alice” by Dann, Copper and Pausch for nineteen cents.  $5 for shipping.  Cannot lose.
  4. Hardware things or “toys”. This one is tricky.  It is easy to spend money here getting the latest and greatest then the next year have it be old.  I try to buy things that are more than just “toys”.
    1. Arduino – dirt cheap and a class can go a long way with them.
    2. Arduino again – PodPi is a series of comic book like lessons that are built for ages 9 – 12. Very hands on.  Not free but not expensive.
    3. Micro:bit and MakeCode – Micro:bits are cheap. If you are really poor MakeCode has a built in simulator.  You do not need the hardware but it is more fun with it.
    4. Programmable drones. I bought a Codrone from Robolink for $180.  They make a Lite for $120.  These are designed for classroom use.  Take one heck of a lickin’ and still live.
    5. Lego Mindstorms NXT or EV3. I needed a donation to buy these but they can be worth the money.  Great for after school robotics clubs.
    6. Leap Motion device. Another out of my pocket expenditure.  This thing “sees” your hands, very similar to a Kinect but small.  I want to mount it to the front of a Cardboard and see what I and the kids can come up with.
    7. And my favorite by far – Google Cardboard. Make a VR “something” in Unity.  I think I spent $10 for a couple, found some YouTube videos and went to town.
  5. Curriculum.
    1. Need a whole canned curriculum? Try APCSP Mobile (mobilecsp.org). Uses App Inventor and Android devices.  iPhones to come this summer supposedly.  I am not a real fan of canned curriculum like this but for a school/teacher just starting out it can be a life saver.
    2. Microsoft is presently working on a curriculum using MakeCode and micro:bit. This is to replace the “Creative Coding through Games and Apps” which MS is discontinuing.  Email MakeCode at csmakecodeteachers@microsoft.com to sign-up for early access to MakeCode beta content.  You will be added to the distribution list.

This list is just what I could think of in an off-hand manner.  There is a lot more out there, enough to satisfy any CS/programming teacher’s low budget needs.

6 Responses to “CS on the Cheap”

  1. zamanskym Says:

    I’ll just chime in that urban schools don’t necessarily do any better in terms of funding. In many cases the kids only personal device is their phone so you can’t do BYOD and no way can the school afford any hardware toys, particularly ones that could break or are in any way consumable.

    I “discovered” pair programming when it was clear that there was no way I’d have one device per child.

    • gflint Says:

      I agree. My “urban” schools are very different from your urban schools. Here urban schools are the more advantaged. In the big cities it can be the other way around.

  2. codeinfig Says:

    Reblogged this on codeinfig and commented:
    except for the microsoft license (ha!) i would love to teach a class with the sorts of things outlined here. this is a great post for every intro to cs / computing instructor

  3. gasstationwithoutpumps Says:

    If you want to do data logging (like for a physics class), look into running PteroDAQ on a Teensy LC (what I use for my applied electronics class). The software is free https://bitbucket.org/abe_k/pterodaq/wiki/Home
    and the Teensy LC board is only about $12.

  4. jimmanleyblog Says:

    The days of single-system/processor computing went away a long time ago, really in the 1950s, except for the early microcomputers, momentarily, until modems came along. Anyone attempting to teach computing today without acknowledging the elephant that is the world today is missing pretty much everything happening beyond the interfaces. Most people teach I/O as if it were just printing text to a printer, albeit one with glowing “paper”, and they rarely teach network communications at all.

    Yet, every student knows how to text/chat over pretty much any device, which is accomplished via network comms to other devices, including servers, peer-to-peer, etc., and even printers are typically accessed over a network. Virtually no teacher that I know of acknowledges that reality and teaches software (remember, it’s not just programming/implementation) as if there’s only one computer in the world, sitting on a desk or lap in front of the developer.

    I start my students doing HTML and Javascript to their very own web server running on their local system. For Windows, EasyPHP is the way to go, Mac Apache/MySQL/PHP (MAMP) for Macs (although all the fundamental pieces are already installed in OS X, but have to be turned on via a command line), and most Linuxen/Unixen have packages ready to install for an Apache web server, SQL database, and Common Gateway Interface (CGI) scripting via PHP. These are the kinds of building blocks that 90+% of all computing uses nowadays, and they apply to every platform (hardware and OS) and environment (platform and apps) that normal people use most of their waking hours (and some of us when we’re asleep, it seems some late nights).

    No matter how locked down a user device may be, they can all create text files, display web page output, and can execute Javascript locally on the device in ways that are quite obvious to any user familiar with a web browser. I think we’re performing a huge disservice to beginner students by starting them out on a single-system/processor environment (one program running in a single process on a single CPU). If they start out uploading text files to their own web server that they install, configure, and control, and get the output to behave as desired, they won’t think twice about any other distributed computing paradigm. It won’t matter whether it’s client-server, peer-to-peer, running on massively parallel processor stacks, or interacting across internetworks with millions of devices simultaneously, worldwide.

    I teach that HTML is the nouns, Javascript is the verbs, and Cascading Style Sheets (CSS) are the adjectives in web computing “sentence” structure. Teaching code that only has nouns (HTML) is a lot easier than one that focuses more on the verbs initially (procedural languages), and the adjectives aren’t even addressed until graphics are introduced, which doesn’t happen at all during even the first year in some programming language curricula. There’s a whole lotta “a-HA!!!” going on in my classes as kids fumble around with text formatting, tables, and form elements. Connecting to a database (more tables than you can grow a forest to shake at) is dirt simple in PHP when it’s configured with MySQL already integrated. They learn to do much more debugging in their heads after a few rounds of edit-upload-render becomes too tedious (even if the upload-render parts only take seconds each time).

    We Ancient Ones called it “desk checking”, which is why the Russians, Eastern Europeans, and pretty much everyone else on the planet is beating our kids’ (and most “professionals'” pants off and hacking us to death. Computers capable of being programmed by wunderkind, let alone mortals, were very few and far between in the Soviet Union, Warsaw Pact, Communist China, and all of the other socialist “paradises”, so when they did have the chance to run something, they had to make sure it wouldn’t hiccup, much less lead to the equivalent of the much-dreaded Windoze Blue Screen of Death (BSOD). We need to get kids to do a lot more desk-checking, preferably in their heads until they can do it perfectly. How do you get to Carnegie Hall? It’s still practice, practice, practice.

    I also think that we’re unnecessarily constraining our students by limiting them to 2-D output forever unless/until they someday stumble across 3-D computing. Virtually every device they touch can perform 3-D today via incredibly powerful GPUs, even in the lowliest “smart” phones and single-board computers such as the Raspberry Pi and Beagle Bone models. In the web page paradigm, WebGL is the obvious choice, which runs via Javascript in any HTML 5 compliant browser. Pi3D is a great choice for those being led down the Python path early in life, and it works on Windows and OS X as well as any Linux (including the Raspberry Pi models, of course, for which it was first implemented).

    I know, I know, the old bat has really lost it – what the heck is he babbling about now? Just Google the above technologies, or visit EasyPHP.org, W3Schools.com, and http://learningwebgl.com/blog/?page_id=1217 for starters. I promise that your mind will be blown when you see what can be done with totally on-line, browser-based, free, free, free (did I say “free”?) software development tools that require no installation, licenses, or any particular brand of hardware, OS, apps, etc. Please comment back here after you do, especially if you have any questions.

Leave a comment