Academic Interests
Middle-school and High-school Outreach
Other Interests
Scripts, code, etc.
Why is this site so boring?

Outreach Activities and Information

MACUL Scratch Workshop (pptx, pdf)

Programs useful to teach computer programming in middle-schools and high-schools

Here are some programs that I have used in my outreach activities in middle-schools and high-schools, including my opinions of them.

Program Ages My thoughts
Scratch 2.0 10 - 15
  • Scratch is often used as the first tool to teach basic programming to students in middle-school, high-school, and even college. I agree that it is an excellent tool.
  • Web-based programming -- nothing to install.
  • Many kinds of programs can be created with it: games, simulations, storytelling (although it is not great at this), music videos, etc.
  • Students can easily publish their creations on the website, and can modify ("mix") others' creations easily.
  • There are lots of resources at scratched.media.mit.edu including lesson plans, curriculum, discussion groups, support groups, etc.
Scratch + Kinect 10 - 15
  • You can integrate Scratch 1.4 (the old version) with Xbox Kinect sensor bars to get a new experience where the player's body can be used to control the program. I've used this a lot in my middle-school outreach with great success.
  • Ideas for games: virtual drum set, running/racing game, dance-dance stickman, matching games, etc.
  • Only runs on Microsoft Windows machines.
  • Send me email to find out how to get the software.
Greenfoot 14 - up
  • Greenfoot is a Java programming environment that gives you a similar experience as Scratch: there is a canvas and you create "actors" (like sprites) and program them to move, etc., on the canvas. Each actor has an image associated with it (like Scratch).
  • Greenfoot runs an "event" loop that executes each Actor's act() method repeatedly. This is similar to a forever loop in Scratch.
  • The website contains tutorials, documentation, videos, sample projects, etc., as well as an active community asking and answering each others' questions.
  • The companion website, http://greenroom.greenfoot.org, has resources for use by educators. These resources include curriculum plans, learning objectives, etc.
Alice 12 - up
  • Java programming in a fancy IDE that provides a 3D world.
  • I am not very familiar with this, because when I've tried to use it, I found it very complicated and confusing.
  • It is supposed to be very good for creating stories.
Calico 12 - up
  • Calico is "A Multi-Programming Language, Multi-Context Framework Designed for Computer Science Education". It came out of the Myro project, which primarily was a programming library for interfacing with Scribbler robots, etc.
  • It offers an environment where students can program in multiple languages: Python, Jigsaw (like Scratch), Ruby, Scheme, Java, F#, Boo, Lisp, Basic, Logo, etc.
  • It is in very active development.
  • Has a decent physics library built-in -- which is rare for tools for CS education.
Gamestar Mechanic 10 - 13
  • Online platformer game development environment, without any programming. The environment teaches the user game design methodology through a series of challenges. Passing challenges allows the student to gain new abilities, players, etc.
  • This is an easy activity for a outreach club if you don't have much time to spend developing curriculum, etc.
Kodu 12 - up
  • A 3D game/simulation development environment from Microsoft. Can be programmed with keyboard and mouse or with a Xbox-style game controller. My students have been split 50/50 on which they prefer to use.
  • Graphical development environment based completely around the programming paradigm: when <something> do <something>.
  • Can be used for racing games, adventure games, puzzle games, fun simulations (like an aquarium or space journey), etc.
  • Nice tutorials built-in, and good website where one can download others' creations and upload your creations.
  • Can be difficult to debug programs, although serious (gamestopper) problems are rare.
Finch robots with Snap! 12 - up
  • Finch robots are inexpensive ($100), rugged, programmable robots that are tethered to a computer via a long USB cable. (The tethering can be a real inconvenience.)
  • Snap! is a decendent of Scratch and looks almost identical to it.
  • Have not used for a few years -- when I did use it, the interface between Snap! and the finch robot was quite flaky. Time to try it again!
MIT App Inventor 2 14 - up
  • Can be used to create real apps for Android devices (I have used it to create a volleyball score keeping app.)
  • Drag-and-drop graphical programming environment, like Scratch. (Built on google's blockly code.)
  • Has some very nice tutorials.
  • Can be difficult to debug.
  • Can be difficult to see your code as it takes a lot of space on the screen.
  • Very nice integration with an Android device, if both the machine and the device are on the same wireless network.
  • Also has a nice built-in Android emulator.
  • Cannot control GUI elements as well as you can with programming the Android in Java -- e.g., difficult to make an app that adapts to the size of the screen.
Code Combat 12 - up
  • Teaches javascript in an environment in which you control heros and troops (etc.) with calls to functions (moveXY(), attackXY(), etc.).
  • This has a lot of potential, but I found the website difficult to navigate. Also, my students and I both found that the development environment would occasionally hang. We tried this on Chrome, Firefox, IE, and had problems on all of them.
  • I should keep checking back on this periodically to see if the problems are fixed.
Lego Mindstorms all ages
  • Never taught with them.
  • Programming them requires an expensive (IMO) software license.
  • There are products from pre-school up through high-school.
Scribbler robots 12 - up
  • I have used the Scribbler robots extensively with my college classes and in my middle- and high-school outreach clubs.
  • The robot costs about $100 and the "fluke" that provides the bluetooth interface costs about $125.
  • A positive is that the robots are not tethered at all, so you don't have that restriction. A negative is that they eat 6 AA batteries for breakfast.
  • They can be programmed with calicoproject.org, although I use the old myro python library and have used the old myro C++ library.
  • My college students enjoy the robots a lot. They enjoy seeing their code turned into actual moving hardware, instead of just a cursor moving on a screen, or simple textual output.

Hackety Hack

  • Teaches Ruby programming.
  • I have not used it much. I don't like Ruby, personally...
Khan Academy 12 - up
  • I have learned a lot of javascript programming in Khan Academy.
  • The tutorials are very nice, with great audio, very nice user interface, etc.
  • Can play with parameter values by selecting them and scrolling them dynamically, to see what they do. Very nice!
  • Uses processingJS for drawing stuff in the Games and Animations course.
  • Highly recommended.
Codecademy 12 - up
  • I went through their HTML/CSS course and found it very good. HTML/CSS is not a thrill a minute, but they kept it fun by offering good challenges, points/badges, etc.
  • I've also done much of their javascript course. I found the user interface to be very nice. They have nice little screen in which they teach you one thing, and then have you write code. The Instructions are good and the hints are very helpful, ususally.
  • Highly recommended.
CodeHS ?
  • I have not spent enough time here to evaluate it.
Pixly ?
  • I have not spent any time with this, but looks like a neat way to introduce media computation coding in a "scratch-like" environment.
TouchDevelop 12 - up
  • This is a very nifty language and programming environment developed by Microsoft, but runnable on any browser or phone/tablet. The language and IDE is all based on clicking or tapping on the screen -- typing is not required.
  • The tutorials are really excellent!
  • Can interface with databases, web resources, pictures, smart phone sensors, etc.
Tynker 8 - up
  • Tynker is a "commercialized" Scratch environment. It supports classrooms, assignments, etc.
  • It has a physics engine, which I would love to add to Scratch.
Code Studio Unknown to me, yet Need to investigate this: see code.org or article about it: http://techcrunch.com/2014/09/11/code-org-launches-code-studio-a-toolset-and-curriculum-for-teaching-kids-programming/