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 Thinking Through A Basic Pong Game in Processing

My Classroom Rules

Recently, several students commented that I seemed to have a lot of classroom rules. This is an old refrain in my life, and, in a sense, it’s true. However, the rules I have are all just special cases of my basic three rules, which I share on my About Me page.

  1. If you are going to break the rules, don’t be obnoxious about it.
    • If you can’t be engaged, don’t distract others. It’s unfair to both you and them.
  2. Don’t disappoint me.
    • Don’t promise to focus, but fail to do so. Instead, acknowledge whatever is distracting you and address it.
  3. Be aware.
    • Know what questions your classmates are asking.
    • Recognize which questions are related to tweaking the solution and which are related to a different problem context.

Wil's Classroom Rules
A full sized version of my rules diagram

I think my biggest failing in the classroom is that I’m uneven in the application of the rules, which is perceived as me being arbitrary. Inconsistency and randomness seem very similar to the outside observer.

I sometimes let feature creep take over the problem statement, which can lead to unintentional complexity or student confusion as the problem changes. I need to spend more time up front specifying the problem completely with students so that it’s clear to them and me what the invariants are.

I also find it difficult to ask a student actually to leave the classroom. I’m forever optimistic that the unfocused student will find moments of clarity and engage with the course material. Often, they do, but unfortunately, while I’m waiting for that to happen, the class as a whole is affected and, generally, material isn’t covered as concisely, clearly, or completely as might have been the case otherwise, thereby disadvantaging the other students who could have gone further, faster. Such is the nature of a set of random people with diverse metacognitive skills and needs. Still, I’m certain that I could serve better both ends of the spectrum.

Computational Efficiency

I’d like to give a brief overview of computational efficiency, since it’s a topic that has come up in a few conversations recently. The super short version is this: it’s often helpful to understand the resource (time, space, or power) needs for a given algorithm. Why? Because we want the fastest algorithm, or the one that uses the least amount of storage on our hard drive. In extreme computing environments (think Mars Rover, Apollo capsules, etc), we many have very limited resources available. For example, your digital wrist watch almost certainly has more memory than the Apollo capsules, which only had about 32KB of RAM. How can you possibly land a person on the moon with only 32KB?!!
Continue reading Computational Efficiency

Co-work and Coffee Shops

It strikes me that co-work spaces and coffee shops are similar, but… not. Your typical coffee shop grudgingly offers moderately useful WiFi (can we get rid of the 20 minute timeouts and required “accept terms” pages, please!) and a few power outlets and has yet to figure out what to do with all these individual patrons taking up so much table space for so long. In short: lots of coffee, little access to power or high speed WiFi.

Co-work spaces have more than enough power outlets and Wifi, usually high speed and reliable (if not, find another co-work space!), but very little coffee. People are expected to come in, spend time without buying anything, and slurp all the Internet they can.

Could we have a coffee shop-style chain of co-work shops with space, meeting rooms, power, and WiFi and sell day passes/memberships? What’s the critical population/entrepreneurial density to sustain it?

Note to “Content Providers”: Don’t Harsh my Mellow

So-called “content providers” who provide little to no content in their RSS feeds break my flow. They’re an annoyance to read. Their one-line teasers drive me away from their content, not toward it. I tend to unsubscribe from those feeds, rather than visit their websites.

If your one-paragraph introduction is compelling, I’ll visit your site to read the rest. However, your one-line teasers are rarely compelling and often annoyingly vacuous.

Please, provide the content and let me decide how to consume it.

Reeder for the iPad

While many content providers are working diligently to find ways to lock us in to their content and to exclude aggregation, it’s aggregation that I want!! I want to be able to read my content in the form and manner that fits my workflow of the moment.

Reeder for the iPad is a great example of an app that makes reading a pleasure. It’s fast; amazingly fast. I can read my Google Reader subscribed feeds, mark items for further follow-up, forward them to my Twitter feed (Note to Reeder devs: I maintain more than one Twitter account and more than one account on other social networking sites, to separate the personal from the professional roles vested in me), add it to my Instapaper account, and so on. In short, reading news feeds in Reeder is a pleasure; very nearly perfect.

I Don’t *WANT* an App for That

With the explosion of applications for the iPhone and iPad, I wanted to point out that, for many things, I don’t want an app for that! Consider the works of Shakespeare; I really don’t want a separate app for each of his plays and sonnets. Some books and magazines are being published as separate apps, to take advantage of the graphics in OpenGL ES, to control content distribution, etc; I understand their reasoning. But I don’t want one-app-per-book; it’s too messy and disjoint. Similarly, I don’t want one-app-per-magazine or one-app-per-newspaper; I read too many sources each day for that model to work.

What I want is to be able to retrieve, review, annotate, and share content I view with the tools I find most natural and that enable my workflow. I do wish “content providers” could grasp that and start providing some content, instead of trying to lock it away.

Thoughts on Course Grades

Like many educators, I worry about the level of effort that my students commit to their studies (the process) and the quality of their work (the product). We call the process many things: engagement, time on task, passion… But we mean to describe that self-driven, motivated commitment to learning for the sake of learning that we value.

Unfortunately, in many educational environments, the standard proxy for effort is the course grade. Grades are a poor proxy, but are so ingrained in educational practice (in some of the institutions where I teach) and in students’ minds that it may be useful to consider a way to structure grade rewards to encourage the genuine engagement from students that we desire.

Continue reading Thoughts on Course Grades

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… Continue reading Collapse of Complex Educational Funding Models

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 Celebrating Ada Lovelace Day 2010: Sally Fincher

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 Goodbye, Hello World?

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 Learning to Write in English like Learning to Program

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.

Continue reading Exploit Parallelism

Endnote: Create a key binding for linking to a PDF (OS X)

I spend a fair amount of time linking PDF documents to records in Endnote. Unfortunately, Endnote requires you to (a) drag and drop, or (b) navigate into submenus to link to a PDF.

In OS X, you can bind a keystroke to any menu item in a specific application using the System Preferences > Keyboard & Mouse settings. Use this to your advantage! Endnote lacks a keystroke for “Link to PDF…”, so I created one: Command-Option-L

Now, when I highlight a record in my library and press the key combination, an “Attach…” file dialog box opens up and I select the PDF of the article, web site, etc.

Continue reading Endnote: Create a key binding for linking to a PDF (OS X)

What Students are Saying About My Teaching (and Their Learning!)

These are comments made by students either on formal evaluations or via informal channels. I’ve tried to leave these unedited, as much as possible, although I’ve removed identifying information and possibly line endings. Otherwise, these are as I received them. I’ll continue to add new comments as they come in.
Continue reading What Students are Saying About My Teaching (and Their Learning!)

What will you improve today?