Skip to content

Computer Programming Workshop Summer 2010

I’ll be offering an introduction to computer programming workshop for 12-17 year olds this summer in Saratoga Springs, NY. We will use Processing and Web technologies, such as HTML/HTML5, Cascading Style Sheets, and JavaScript to introduce and experiment with foundational programming topics.

(Continued)

Collapse of Complex Educational Funding Models

Clay Shirky posted yesterday about the Collapse of Complex Business Models. In short, businesses add one complexity after another with each new complexity adding value to the system… to a point. Initially, each addition brings with it significant marginal value. But eventually, the value added of a new complexity diminishes to zero or, worse, goes negative. Businesses, the argument goes, can’t adjust to the new reality and resort to the most radical simplification possible: collapse.

I realized almost immediately that I’ve been having a version of this conversation related to educational funding for weeks… (Continued)

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, (Continued)

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?

(Continued)

ASIS&T Career Panel

I was recently asked to participate in a panel discussion related to careers in information and computing technologies by the University at Albany student chapter of ASIS&T. I’m making my slides from the talk as well as a PDF of my disciplines model available for anyone who may be interested.

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.

(Continued)

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.

Exploit Parallelism

I was reading the old VerizonMath meme recently and began thinking about it in terms of a teaching moment. George Vaccaro was clearly trying very hard to teach the Verizon employees a little something about math, and they just weren’t getting it. Part of the problem is surely, as everyone points out, the lack of math common sense of the Verizon employees involved; a trait all too common in American today.

(Continued)

Programming Style Guide

Every programmer and programming language has a preferred variation on how to format code. Here are my best suggestions for the languages I tend to code.

(Continued)