Well it is that time of year again – back to school. On the SIGCSE mailing list are a couple of reminders about online exercise tools for a variety of programming langauges.. A few old timers and at least one big new name. I thought it would be worthwhile to list a few of what I know about. The big new entry is Khan Academy of course:
Khan Academy’s new computer science section (http://www.khanacademy.org/cs):
"The tutorials are interactive and live entirely in the browser.
Instead of a video, each lesson contains a pane on the left side for students to enter code and a pane on the right that displays the output. The first lesson walks students through the process of writing code that will draw a face in the right pane. After learning to generate graphics, students work up to animation and eventually to games, such as a Pac-Man clone...."
Some of what has been around for a while include: (Note that most of the text is borrowed from the web site referenced.)
Pex4fun APCS (http://pexforfun.com/apcs) is an online lab for APCS. It features 156 coding duels organized in chapters mapping the APCS program. In each coding duel, the student has to implement a program against a specification. At each attempt, pex4fun analyzes the student program together with the specification program to produce an input/output table showcasing cases where the behavior matches or not. Based on this feedback, the student can iteratively refine his solution until his program has the same observable behavior as the specification program. Pex4fun is free, runs in any browser and provides a rich auto-completion experience.
F# is ideal for data-rich, concurrent and algorithmic development: "simple code to solve complex problems". F# is a simple and pragmatic programming language combining functional, object-oriented and scripting programming, and supports cross-platform environments including PC, Mac, and Linux.
Practice-IT . Practice-It is an online practice problem tool created by the authors of the Building Java Programs CS1/CS2 textbook at the University of Washington. The tool is free for students and instructors to use. It contains over 1,000 Java programming problems and lets the student type in solutions, which are then tested to see whether the solution is correct.
Problets is available for C++, Java and C#. Problets are problem solving software assistants for learning, reinforcement and assessment of programming concepts. They are designed to help students learn programming concepts through small-scale problem-solving, and as a supplement to large-scale programming traditionally used in introductory programming courses.
[EDIT] Computer Science Circles from the Centre for Education in Mathematics and Computing at the University of Waterloo. This website teaches computer programming. This skill is very useful: with programming you can automate computer tasks, make art and music, interpret and analyze survey results, build tools for other people, create custom websites, write games, examine genetic data, connect people with each other, and the list goes on and on.