I had an opportunity to audit a computer science class this week at Washington University, a class that was teaching students how to write iPhone apps. It was their final presentation, and I got to see a dozen apps that were very impressive. As I was watching the kids present, I was thinking back to my college days and the similarities and differences about my education.
Of course, back in my day real programmers wrote in Assembler, and maybe Fortran. None of this object-oriented stuff had even been invented. We also had punched cards, which is probably why I never became a programmer. In grad school, we had video terminals because PCs were still being tinkered around inside Silicon Valley garages.
In the Wash U class, most of the students had their own Macbooks, some better than my own. Each was given an iPod touch to use during the semester and this session was the moment of truth, where they had to demo their apps in front of the class. Most of the programming projects were functional, although there were a few students that had obviously been putting some long hours trying to get the bugs out of their apps. One of the kids was working on his presentation and actually debugged his app during class. Some things never change.
I was impressed first of all with the apps, which ranged from tracking what is in your fridge to being used by a personal trainer to track their clients’ workouts to locating friends on a campus map during free times. There was an app that taught people how to count cards at Blackjack –this could have helped one of my dorm-mates who would periodically make a run to Tahoe where they still used single decks and come home with enough money to pay for his living expenses. Another was used to collate and tag photos from Flickr. Each team had to research and find an app to build that wasn’t yet sold on the App Store, too.
I hope the kids take the time to finish them and post them to the App Store. Some of the apps were very polished and could probably be used as is with almost no additional effort, while a few just crashed with the slightest tap on the screen. I was also impressed with the quality of the presentations and how polished the kids were in front of the class. This isn’t what I remember of my nerdy classmates back in the day, where we seldom even spoke to each other, let alone spoke Powerpoint. Most of the kids put together a few slides that showed their decision-making and progress during the class. Some of the apps were built in teams, some solo. There were about 25 kids in the class, with two women. (This is about the same sad gender ratio in my day, too.)
These were not beginning computer science students by any means. Each of them had to have an understanding of a lot of different pieces, including the graphics interface of the iPhone itself, database calls, Web services, and the Apple development environment that is used to build the app itself. That is a lot for any programmer to handle, but the kids took it in stride. You could tell that they learned a lot during the semester, and were proud of it too. Heck, I was proud of them and I didn’t even know them.
One of the things that I was struck with during the class was how collaborative the kids were. This wasn’t the introverted nerds of my misspent youth — these kids were calling out suggestions to help each other and try to remove the remaining roadblocks in each other’s apps. Some of them had tried to go down a particular path with one tool, only to change horses and use something else. It was fun to watch them get all excited about some arcane code fragment. Part of this I think was because the iPhone environment is so new and so contained that it makes it easier to collaborate, because there are so many things to learn that are outside the normal coding process.
They also learned first-hand about feature creep and trying to hit their requirements on time and how to balance making things work with making things look pretty.
Speaking of which, most of the students had high standards for the look and feel of their apps. There isn’t much screen real estate on the iPhone to fool around with, and you have to make every pixel count. Some of the kids took the time to find the right icons to display on screen, and they all took pains to make use of the various menus and screen controls that make the iPhone apps easy to use with one or two fingers. That was impressive, and showed me that the iPhone really has a future and why 100,000 plus apps have been already created.
You could also see the beginnings of professional computer scientists here too. A few of them mentioned how they coded in pairs, using extreme programming techniques. I think that meant that the pair stayed up all night to meet a particular deadline, but still, that is how it happens in the real world too. And learning object-oriented languages is part and parcel to today’s programming world, unlike the world that I entered after college.
One kid had the funniest line, talking about his mother, who is a project manager and a programmer. “My mom is very old school and knew all these Unix shell script commands that she never told me about when I was growing up.” Oh, youth is so wasted on the young!
If your local university offers a class on iPhone apps, you might want to stop by and be inspired. I know I was. Thanks to the teacher Todd Sproull for letting me sit in.