One of my colleagues, Matt Zipin (in fact, my high school computer science teacher), just sent me a link to an iPhone app that his current student, Ari Weinstein put together. It was one of those rare moments of seeing a piece of software and thinking, “This… this is exactly what I have been looking for! It’s almost like they had me in mind when they wrote it!”
Perhaps unsurprisingly, I had this reaction because, in fact, Ari has written an application that I suggested. Based on my work at St. Grottlesex as a Thirds’ basketball coach. I had been running practices using the timer and counter apps separately on my iPhone. Which was workable. But unwieldy. Enter.. Ari’s Basketball Timer app, which elegantly and cleanly combines these two tools into a single screen.
I think my favorite part of the app is something that you can’t see, that you can only experience: starting the Time out Timer stops the main clock, and starting the main clock stops the Time out Timer. How simple. How elegant. How easy it would have been to skip over.
Thank you Ari and Matt!
I actually really, really want to document some of our projects that we’re working on this year in a great deal more detail. But, for now, I am simply publishing my notes from a conversation that I just had with Apple Education about the legalities of having high school students develop for the app store.
So… I just got off the phone with Apple Education (they were following up on an iOS in Education event a few months ago that I had actually missed). But: I did get the straight dope on Apple Developer accounts and high schools:
- University accounts are just that: for higher education. Non-negotiable.
- There are really three levels of developer that are pertinent to high school:
- Free — they can download Xcode and use the iPhone simulator.
- Individual ($99) — Same as free, plus they can use their iPhones/iPads to debug the software live (with the right certificates — I’ve found that the easiest way to set up the certificates is directly through the Xcode Organizer). My recollection is that they can have up to something like 100 devices for “debugging.” At this level, they can post apps to the App Store.
- Enterprise ($299, IIRC) — Individual, plus the ability to manage a fleet of iOS devices (remote install and remote wipe), as well as distributing their software internally with no restrictions. I actually pressed him pretty hard on this, and he wasn’t 100% (“read the language in the agreement first”), but he thinks that it would be viable for the school to buy an Enterprise license and then say “Come by the computer lab and we’ll install our cool in-house app on your iPhone for free.” (Or for money — I don’t think they care.)
- Apple strongly discourages the school (which would, in reality, be a single individual) signing up for an Individual developer account as the primary distribution channel to the App store for student apps. The rationale being that if a particular app makes it big, the individual who has control of that account well, has control of that account. Apple deals with account holders, not the model that the school constructed. They suggested that if a group of students wanted to band together on an app, that they should sign up as a group for an Individual account through which to distribute that app — and that they should draw up their own contract on their end for how to manage that account.
- Students under 18 need to be signed up for the account by their parents. (Contract law — the kids are underage.)At the end of the day, it sounded like my approach this year is basically right on the nose: I have an Individual account in my name that I use to install apps on test iPhones (and I have registered all the student iPhones as debugging devices). The students signed up for free accounts at the beginning of the year. I think what we’ll do when we release this app is sign up for a new Individual account that the students will jointly share to post the app to the App Store (something like “[Jewish Day School] App Design ’10′-’11″).
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.
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.
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.
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!
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.
No one. That’s who. Well, not as many of us as we might have thought. Since the real power of “thinking like a computer scientist” is leveraging abstraction as a means of managing and containing complexity, it makes sense that we are moving away from an era in which every computer scientist needs to have a soup-to-nuts understanding of computers. No single human being can full comprehend an entire computer system, and it’s not clear that we should be training computer scientists with this as a goal.
But this does raise some questions about how our students will handle the abstraction of concepts that they don’t fully (need) to understand.