…and I'm all out of bubble gum.
Computer Science
Computer Application Design and Programming in 2010-2011
May 3rd
One of my responsibilities at Jewish Day School is to post a monthly column on the goings-on in our media studies department (and in education technology in general) to our online parent bulletin. This is one such column.
In today’s world, where “there is an app for that” — no matter what that may be — it is easy to lose sight of the fact that, in fact, when we are dealing with real problems that involve real people and real situations and real information, there often isn’t an app for that. Nor is there a systematic, rational approach for tackling the unknown. It’s easy to find an app that tracks the balance of your checking account… but very, very hard to find an app that can tell you why your portfolio is going up (or down).
The Media Studies department is offering a new course in computer application design and computer science in the coming academic year, to complement our existing offerings in video, photography, web and game design and new media. Seth Battis, who joined the department this year, will be teaching the course, which is designed to complement the robotics learning led by [colleague] and [Jewish Day School Academy of Science and Technology].
Computer science is the study of computation, using computers to process vast mountains of data into that nugget of usable, useful, valuable information. And, in the past decade, it has become the domain not just of computer geeks, but of professionals, scientists and researchers seeking to better understand the information they have and the challenges they are trying to tackle. Computational biology, statistical modeling of markets, physical simulations of wind energy are all being done by people with a foot in two worlds: the world of their chosen, beloved studies and the world of computation facilitates their studies.
Computer science has gone in and out of vogue many times over the last several decades — and with good reason. It can provide a unique perspective on creative problem-solving and ways for humans (us!) to understand vast and complicated data. But it can also be the drudgery of “pixel-stained technopeasants” sweating over line after line of arcane code.
The purpose of the Computer Application Design and Programming course is to, at the high school level, make these same skills and this same practice available to [Jewish Day School] students. Students will have the opportunity to practice their analytic and reasoning skills, while developing new practices in problem solving, using modern tools further their learning. The course will be taught using object-oriented programming practices, applicable in a broad array of modern computational environments — from the iPhone to the web to stand-alone computers to computing clusters.
Students and families interested in the Computer Application Design and Programming course are encouraged to contact their advisor or Mr. Battis or [my department chair] for more information.
Google Mail Envelopes Implementation
Apr 11th
I came across Rahul Mahtani and Yofred Moik’s conceptual design of a Google Mail Envelope a few days ago and was… instantly captivated. I’m
not sure if it’s just the aesthetics of a design on the envelope in general, the way it hearkens back to an old school airmail envelope, or the conceptual neatness of the route between the two addresses. I just know that I love it and I want it.
So, I spent some time making a version of it.
Right now, my implementation is very much hacked together (I was teaching myself the Google Maps API as I went — it’s not hard, but it’s not familiar vocabulary, yet — I have a few other projects that will get me more expert soon, I hope). The things to know are:
- Change the addresses and the map will (should) update to reflect the new information.
- The first line of the address is removed on the assumption that it’s a name and not part of the address (and users are cruelly constrained to 3-line addresses right now).
- The resulting envelope template is pretty much exactly a full-bleed letter-size page. Which means that printing it is a hassle.
- I strongly suspect that there should be a dampening-down of the colors on the map so that the USPS can automatically scan the right information easily. My recollection from constructing bulk mailings a few years back is that the address just needs to have a bit of white space around it, but having a mess of other geographic information scattered nearby may not be helpful…
- The snazzy orientation of the address infoWindows on the original design hasn’t happened yet. I think I have an idea of how to do it with some CSS (they won’t be “real” infoWindows), but haven’t taken the time to fiddle with it yet.
- There’s something hinky with the borders of the side-flaps due to the not-yet-standard border-radius CSS.
More to come as way opens.
Is robots.txt a legally binding document?
Apr 5th
Pete Warden has written up a narrative of how he went from an interesting map of the United States to being sued by Facebook.
The attorney said that they were just about to sue me into oblivion…
What I find really interesting here is actually that Facebook (a known offender on the privacy front) is so cavalier as to expose this information via their API. That they would add a cherry on top by threatening to sue when the API gets, well, used is scarcely surprising.
This reminds me of a moment in college when one of my friends was trying to convince the registrar that SelfReg (our online registration tool) was leaky like a sieve, from a security standpoint. He didn’t make much headway until he presented the registrar with a list of ~1000 student names, addresses and social security numbers, gleaned from the system. (That’s out of 2000 potential students — he only started the collection script halfway through the registration period.)
That much exposed personal information is like overwhelming force. Unless it comes up against another, even more overwhelming force. Like a SLAPP lawsuit.
Teaching Design and Problem Solving
Jun 26th
I’m in the throes of reworking my Introduction to Computer Science course for the coming fall. I was thoroughly dissatisfied with how I taught the course this year: I’m at the stage of teaching where I know how I want it to go, but can’t always make it happen. Of course, this may not be a stage, but could, depressingly, be the existence of a grown-up.
I have divided the course into three broad areas that I think are most important to cover: computer science (as a discipline: concepts like variable scope, Boolean logic, object-oriented design, and so on), programming in Java (concrete details like how a for loop works or how to declare a class) and design and implementation. Design and implementation is actually really the core of my fascination with this course: how do you teach problem solving? And how do you get students to apply those skills.
In doing this, I’m plowing through a lot of articles.
- Jason Tselentis does a great job of identifying the challenge (with a special focus on graphic design problem solving and software, to be honest), although what he’s really talking about has more to do with my general challenge in academic computing: developing able and fearless tinkerers.
- Anthony Cowling goes into much deeper, and more software specific, detail, pushing the idea not just of scaffolded design education, but helping students learn to assess the quality of design (subscription).
- Phillip Greenspun tackles not just the problems of teaching problem solving and design, but discusses MIT course 6.916, on developing web applications with an eye towards developing broadly competent and self-reliant alumni. Again, his basic ethos flows directly into my primary concern in any approach to academic computing: are we teaching a shamanistic approach to computers (“follow these specific steps in this order and it works.”) or are we supporting the development of true independent learners who can sit down and “just figure it out.” Greenspun and I are in the same camp, supporting the latter option.
- Gary Pollice wrote a great article describing his introductory software engineering class — which touches not just on design, but on teamwork. Again, he’s preaching somewhat to the choir as I read about his students working on semester-long courses with real clients.
Of course, the challenge is now to boil down all these design concepts into something that is useful not in a first-year computer science or software engineering undergraduate course, but in a first-semester high school course. How much do my students really need to know about UML, CRC cards, flow charts, eXtreme Programming, incremental development, rapid prototyping, functional requirements and use cases? Not a whole damn lot. Mostly, I want them to learn to enjoy the process of rigorous problem solving as manifest in learning to program a computer.
But I’d certainly like them to not be starting down the garden path of bad habits based on ill-considered pedagogical frameworks.
Ah, for the days of Pascal as a first programming language!
Multiple Intelligences About Coding
Mar 23rd
Having just struck upon the similarities between Pink’s six new senses and Gardner’s multiple intelligences, I continue to be fascinated by examples of folks employing these ideas in creative ways: enter Basildon Coder, recently highlighted on Slashdot for describing a Wodehouse-ian approach to code refactoring. As always, I look at this and start to ponder how to use it in the classroom with my students: one of the real challenges that my students face is not the development of new code (although that is challenging) but figuring out how to use a body of code written by someone else (me, their classmates, some godawful Windows GDI API, etc.). I have been struck by the difficulty my students have faced this year in grasping the 50,000 foot view of coding — perhaps a visual representation like this might be a first step. Sort of a Powers of 10 for programming.