CS2130.01 Mobile Web Applications Development

Location: Bennington College
Term(s): Fall 2011
Class size: 10

We will learn how HTML5, CSS3, and JavaScript can be used to create Web (i.e., non-native) applications for smart phones. We will build several applications that demonstrate the potential to address mobile computing needs.

Prerequisite: Ideally, some experience with HTML, CSS, and/or JavaScript. For those without such experience, a short workshop (TBA) will be offered
Credits: 2
Time: M/Th 4:10 – 6pm
(This class meets during the SECOND seven weeks)

CS4150.01: Seven Languages in Seven Weeks

Location: Bennington College
Term(s): Fall 2011
Class size: 15

For students with some programming experience, we will explore the structure, syntax, and philosophy of seven different programming languages in an effort to understand the reasoning underlying each model of problem solving and the types of problems to which each is well-suited.

Prerequisite: Programming experience or permission of instructor.
Credits: 2
Time: M/Th 4:10 – 6pm
(This class meets during the FIRST seven weeks)

CS2110.01: Computing Fundamentals

Location: Bennington College
Term(s): Fall 2011
Class size: ~ 20 students/term

Students will rediscover the foundational ideas that gave rise to modern computing including Boolean logic, binary arithmatic, algorithms, Turing machines, transistor logic, stored program computing, and modern computer hardware and software architectures. Students will learn to program in at least one computer language and will explore the problem solving idioms unique to computational thinking.

CS2105.01: Making Computing Socially Relevant

Location: Bennington College
Term(s): Spring 2011
Class size: ~ 20 students/term

Educators are beginning to attend to the challenges of developing meaningful computer science education: identifying a common core of intended learning outcomes, instructional designs, and assessments. Computer scientists are beginning to attend to the challenges of making computing relevant to communities and society and educating the next generation of computing professionals.

However, existing approaches to teaching computing tend to focus on small projects, solely for the consumption of the teacher and students in the class (“toy projects”); formal methods (the “traditional” approach); game development (“projects about toys”); or examples intended to be meaningful to the digital generation (“relevant” projects, but with a lower-case “r”).
Continue reading CS2105.01: Making Computing Socially Relevant

Reason I wish Apple wasn’t so secretive #43

When a new product comes out, it takes 6-12 months for production of accessories to ramp up, by which time you already have something that works (rather than something you’d love to have) and you’re approaching a new product release (which will change the device’s form factor). For example, iPhone 4 cases… MacBook cases… iPad cases, etc…

I love my MacAlly faux-suede Bookstand iPad case… I worried about ordering them sight unseen, but I couldn’t have been happier with mine — it has provided great protection and no fuss. It gives me access to all the ports and gives me comfort when I put the iPad into a bag.

Yet, if these two things had been out at the time, I might have gone with the combination of them, instead:

I don’t whether I would have liked them better or worse than the Bookstand, but I like the idea of them.

CS4202.01: Advanced Projects In Computing

Location: Bennington College
Term(s): Fall 2010
Class size: ~ 7 students/term

Students will engage in group critiques of both individual project program code and free & open source program code to explore idioms and best practices in several programming languages: JavaScript, Ruby/Rails, and Processing, for example.

Students will be expected to present on at least one technology and one project as well as to actively engage in providing feedback on others projects.

CS2103.01: Social Nature of Information

Location: Bennington College
Term(s): Fall 2010
Class size: ~ 7 students/term

How does information influence individuals, groups, organizations, communities, governments, and society? Why do we share information? Is information a scarce resource? Understanding what information is and how it can be created, shared, manipulated, or destroyed is increasingly critical in understanding public policy and civic engagement. This course will explore how access to or lack of access to information changes how we behave individually and collectively. We will consider policy areas such as education, health care, the environment, science research, intellectual property, and governance and analyze how information supports and detracts from these discussions.

Ron Jeffries on Respect

If you don’t respect others, you’re not doing it right. I try always
to let my great respect show through for people who try hard to do
the right thing. And sure enough, they do try, in almost every case.
The others, who are perhaps trying in some way I don’t understand…
I Respect them too… and wish them success elsewhere.

— Ron Jeffries on eXtreme Programming (XP)

Dependent Sample Assessment Plots Using granova and R

Dependent Sample Assessment Plots (DSAP) constitute a way of visualizing data in the context of two dependent sample analyses. One (of at least four ways1) to think about this would be to think of pre-intervention and post-intervention response data scores, when studying the effects of intervention.

Suppose you’re an educator and you administer an assessment to students at the beginning of a unit asking about their level of confidence or understanding of a topic. You then teach a lesson that spans some period of time. At the end you collect responses to the same questions again. You now have a dependent sample: two responses that related to the same individual for some number of individuals.

Continue reading Dependent Sample Assessment Plots Using granova and R

  1. See Pruzek and Helmreich’s paper in the Journal of Statistics Education Volume 17, Number 1 (2009), Enhancing Dependent Sample Analyses Using Graphics

Dear Apple: beauty lies in parity

I love Apple’s design aesthetic. I see it in the simplicity of their physical and software UIs, although usually not in the baroque nature of their business processes. What frustrates me is the lack of parity among the Apple-born technologies. I don’t just want a good experience on one device, I want it on, between, and among all my Apple devices!

Case in point, a few years ago I submitted a note to Apple suggesting that they had missed the boat by not having the iPhone earphone controller/mic work on their notebook line, too. That is, I wanted to be able to iChat using the iPhone earbuds as my earphones and microphone. Sure enough, the latest MacBook Pro models have that feature. I’m not saying it was me! I’m sure many people had a similar idea, and told Apple about it, and I’m thankful for it. What I am asking is, why didn’t Apple notice it? Are their development efforts so siloed or their release cycles so offset from one another that it’s not possible?

Another, current, case in point: the push for ebooks. I have my iPad (thank you, Steve!) and I loaded iBooks on it. I like it. I like the upgrade even more. And there are more features I expect will come soon. However, it’s frustrating to not have iBooks parity between the iPad (/iPhone/iPod touch) and iTunes on my MacBook.

  • on the iPad, I can’t easily manage my collection (gather new books, other than from the iBookstore, (and that’s yet another frustration!), although it’s slowly getting better with the “open in…” capability.
  • on my MacBook, in iTunes, I can’t read the ebooks I’ve collected.

Or the jumble that passes for document management in iWorks for the iPad, or for the Notes app on the original iPhone, or… or…

If Apple truly wants devices like the iPad to be devices for everyone, then the user experience on different Apple devices really needs to be in parity from day-zero.

Don’t make me think twice.

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

What will you improve today?