Summer Vacation 2015: Part I (BPI)

Many wonder what teachers and professors actually do in their free summer months. Days on the beach? Long walks in the woods? Fishing? Crabbing? Well, I did a little of that this summer, but I also had the most extraordinary, and busiest, summer so far in my career.

After teaching computer science to undergraduates at Bard for six years, this summer was a bit of a reawakening. In addition to advising great undergraduate research students via BSRI, which I do most summers, I also taught a course in the Bard Prison Initiative (BPI) and co-developed a computing component for our Language and Thinking program. This post (Part I) covers BPI, and the L&T effort is up next in Part II.
Continue reading Summer Vacation 2015: Part I (BPI)

Automatons and Entertainers

As the leaves begin to change in the Hudson Valley each year, Bard’s Hannah Arendt Center puts on a fantastic, colorful and current conference, and this year was no exception. The title of this year’s two-day event was Failing Fast: The Educated Citizen in Crisis. I was not able to see all of the talks, but the sessions I attended failed to disappoint. From Stanford computer scientist and Coursera founder, Andrew Ng speaking about the potential of the MOOC’s to John Seery from Pomona College speaking about the virtues of a liberal arts education, a large range of views were put forward. Check out the conference schedule for the other speakers.

The organizers of this conference go out of their way to invite intellectuals from across the spectrum to share their views: scientists and writers, conservatives and liberals, entrepreneurs and academics. All were invited to share their views about the future of education. But like past meetings with such impressively mixed audiences, many of the messages get lost, attenuated or misconstrued as they travel between the vast intellectual space between the participants.

Continue reading Automatons and Entertainers

(De-)Coding the Drone: A New Course

Drones: Literacy && Autonomy && Privacy

Drones have captured the public attention and discourse in a surprising way. And although the current left-right political coalition against drones in the U.S. is rare, this is not what surprises me the most. The most surprising aspect to me is the mismatch between the public’s technological perceptions and expectations of drones compared with their technological reality. Computing, Algorithms, and AI are to blame for lots of things: putting chess masters out of business, crashing satellites, overdosing cancer patients, electronic trading trouble, reading our email, judging our credit. But targeted assassination? Are the algorithms really to blame here?
Continue reading (De-)Coding the Drone: A New Course

Making Robots Accessible with Calico

Making robotics accessible has been a career-long goal of mine. For many of the themes of this blog: all citizens should be empowered to use robotics (and computing) technology in their own work, and the fields of robotics and computing need to be informed by a diverse set of contributors. My class on Drones this Fall will continue this track of teaching and research.

Starting with some of my earliest work on using open-source software with robotics and then later with my work with IPRE on using robots in CS-1, I have been on a mission to make robotics more open, transparent and adaptable. My latest effort in this vein is embodied by the Calico Project. Calico is a learning environment for computing particularly suited for robotics.

Calico is about choice: choice of operating system, choice of programming language, and choice of programming context. The particular operating system (e.g., Windows, Mac OS X, and Linux) or programming language (e.g., Java, C#, Scheme, Python, Ruby) should not limit your pedagogical mission. Although Calico started as a way to easily program the IPRE Scribbler robot in Python on all three platforms it has evolved into a system that allows students to explore a variety of computing contexts (e.g. Processing-inspired graphics) with a variety of languages (e.g. scheme). We have extended Calico to work with other robot platforms like the Lego NXT and the Finch. Our next step, in the spirit of Pyro, is to use Calico as a front-end to the Robot Operating System (ROS).

Last week, we had a Calico summer research meet-up at Sarah Lawrence College. Part of this meeting was devoted to understanding how we could use ROS with Calico. A prototype system was presented that is able to control both the simple ROS turtle simulation, but also the Stage robot simulation, the iRobot Create, and the Parrot AR Drone. We are in the process of flushing out this interface and writing a proposal, stay tuned!

Continue reading Making Robots Accessible with Calico

sp5repl: A Read-Eval-Processing Loop with Scala

I teach two introductory computing classes at Bard: one using Python (using IPRE’s Calico and robots) and the other with Processing. Both programming environments could be better by borrowing ideas from the other. And by better, I mean a lower floor, making it easier for newcomers to programming; and a higher ceiling, making the tool useful after CS1. Rather than concentrating exclusively on one tool, I am continuing to attack the problem on both fronts.

This post is focused on making Processing better for introductory courses; Calico is next.

My first attempt is a simple tool called sp5repl, a small layer around Scala and Processing that allows you to write Processing sketches dynamically using an interactive read-eval-loop. The code entered into the Scala REPL is actually compiled, thus it runs at full speed; we get most of the flexibility of Jython and Clojure/Quil with the speed and error checking of Scala. A small example that generates the image below:

sp5repl>size(250, 250)
sp5repl>background(24)
sp5repl>smooth()
sp5repl>fill(196, 128, 64)
sp5repl>ellipse(width/2, height/2, 150, 150)
sp5repl>fill(64, 128, 196)
sp5repl>for (i <- width to 0 by -1) ellipse(random(i), i, i/20, i/20)

screen4
Continue reading sp5repl: A Read-Eval-Processing Loop with Scala