Thinking Through A Basic Pong Game in Processing

The Problem: Create a basic 1970s style Pong game for one player using the Processing programming language. The paddle will be on the right and the ball will bounce off of the three other sides. If the ball passes the paddle while the ball is traveling to the right, game play ends. The paddle will be controlled by the keyboard’s UP and DOWN arrow keys.

Continue reading

Making Values and Culture Manifest and Manifold

Over at his blog, Mark Guzdial has raised questions about the ability of (a) curricula and (b) instruction to be value-/culture-neutral. I wonder whether it isn’t more important that they be manifest and manifold in education.

In other words, we need value transparency, to express the values and cultural biases in our designs clearly and publicly. When we choose what learning outcomes to include in a curriculum and when we create instructional plans intended to help learners attain those outcomes, we make value choices based on our own prior experience, and often do so unconsciously. Probability examples that rely on a 52-card deck and programming exercises that remake western-style games are necessarily rooted in our past experience. That implies that some learners– those who don’t share our experiences– will have a higher cognitive load when faced with these tasks, working to attain not only our intended learning outcomes, but also to build knowledge and skills related to the new (to them) problem context.

We need to be sensitive to this and provide the supports necessary to promote success. One way to do this is to represent core ideas in multiple ways, creating banks of culturally diverse, parallel examples of instruction that speak to the same set of intended learning outcomes. For example, do we need probability examples to rely on dice, cards, and coins? How else might one think about probability, assuming that those objects aren’t part of your daily life?

I can imagine a rich collection of activities, presentations, etc. that could be used not only as teaching aids, but also as tools to train teachers about diverse ways to represent ideas. Even within my own cultural context, I find myself often looking for new ways to introduce learners to a topic (nifty assignments, anyone?).

Celebrating Ada Lovelace Day 2010: Sally Fincher

March 24th is Ada Lovelace Day, a commemoration of the contributions of women in science and technology in honor of it’s namesake. Ada Lovelace (nay Augusta Ada Byron King, Countess of Lovelace) was the daughter of Lord Byron and Anne Isabella Milbanke, born in 1815. She was a contemporary of Charles Babbage, who is generally credited in the history of computing with designing the first mechanical, general-purpose computer: the Analytical Engine. Although not built during their life times, Babbages’ ideas and Ada’s analytic abilities led her to write notes which are today regarded as the first algorithm written specifically to be performed by a general-purpose machine; in short, the first computer program.

I would like to take the occasion to tip my hat to Sally Fincher, Continue reading

Goodbye, Hello World?

Alfred Thompson questioned on his blog today whether the customary first programming exercise, Hello World, should be replaced with something that’s more flexible and calls on students to engage in a short, non-trivial first act as a programmer. I admit, I’ve used Hello World myself with students, but usually not as a first activity. Instead, I use Hello World to help students who have had some hours or days of programming instruction understand that they now know quite a bit about how programming languages express an intention. I ask students to visit the ACM Hello World web page and compare and contrast that simple program in different languages. How are code blocks started and ended? How is output generated? How is an infinite loop expressed? How are strings represented?

Continue reading

Learning to Write in English like Learning to Program

Imagine for a moment that you were going to teach writing in standard English in the same way we tend to teach computer programming.

Alright… Let’s learn to write. Before you can write, you need to know about the fundamentals of the language we’re going to use. A language is a collection of words and rules for how you combine those words. Words can be thought of as being of different types that determine the purpose and meaning of the words. For example, two types we’ll work with are nouns and interjections. There are other types, too, but we’ll get to those later.

For now, let’s write your first sentence. A sentence is a valid sequence of words. By valid we mean that the sentence would be recognized by an expert speaker of the language as being acceptable.

So, we need an example of a noun and an interjection to get us started… One frequently used noun is the word WORLD and a common interjection is HELLO.

Continue reading

Media-Propelled introduction to Computational Thinking

Eric Freudenthal of the iMPaCT: a Media-Propelled introduction to Computational Thinking project spoke at SIGCSE 2010 about how to engage students who are math phobic with computation and, thereby, with math. Using Python and computation about dynamic systems, students work to understand how code == math == concepts. One issue raised was how ethical it is to mislead students initially about whether they’re learning “math”. Eric’s argument: if students know they’re learning math, they fallback on unsuccessful rote memorization techniques. If, however, they believe they are working with dynamic systems to understand how the system changes as parameters are adjusted, then students engage and experiment.