My wife and daughter went to see Taylor Swift at Soldier Field Saturday night. They loved it, particularly my daughter, who idolizes T-Swift. What’s not to like? She writes engaging familiar melodies and cogent lyrics and sings them well. While hers isn’t my favorite kind of music, I respect her as a singer, writer, and performer.
I checked out reviews of the concert in Chicago’s two major papers, and they were similarly favorable. When I checked out the accompanying comments from readers, however, I was struck by how similar they were to comments I heard from “haters” about my music when I was growing up. It seems every generation has its share of closed-minded people who long so much for yesteryear that they can’t bring themselves to listen before casting judgement. When I was in high school, we derided such people as being “stuck in the 60s”. It seems the Reagan years exert a similar sort of pull today.
Listen closely, and you will hear a lot of interesting layering and interplay going on in today’s pop music. While Top 40 certainly has its share of duds, such as the four-going-on-forty minutes of boring kitchen-utensil percussion that is “Blurred Lines”, there are a few songs that I find quite interesting. I’m talking about songs by Macklemore and Daft Punk, songs that feature a lot of different beats and instrumental lines. Sure, the “instruments” are primarily electronic, computerized snippets that are dragged onto a canvas to create a sonic picture. But the producers still have to hear the sounds to create them. Each of the lines tend to be quite simple. Yet, when layered and linked, a complex and rich soundscape emerges. “Thrift Shop”, for example, is made up of several parts that, considered individually, are simple and rough. Put together, though, they create a very memorable and distinctive song.
I’m a classic rock guitar player. I play four or five chords with layers of overdrive over a 4-4 beat. I can’t seem to create anything else. First, I don’t know how to use the production tools. Second, I enjoy hearing the complexity so much that I get annoyed when I can’t create it quickly with ease. It turns out that I’m an enthusiastic consumer of modern music, but I can’t create it. There is a huge gap in talent between consumption and production.
Computer Science education today faces the same tension. It’s really hard to teach computer science these days in a way that engages our students, who are well-meaning, talented, creative, and wide-eyed consumers of technology. This generation of computer science students grew up during an era of unbelievable technological change. They saw computers evolve from ugly beige boxes on which they played CD-based games as kids to exponentially more powerful and always-connected computers they carry in their pockets. They want to create that! They don’t want to mess around with command prompts and cryptic Linux goobledygook. They want to build ultra-responsive touch-enabled interfaces that pull data from thirteen different websites and flash brilliant pictures on all major computing platforms, leveraging the cloud in the process. And they want to accomplish these great feats right from the start.
The problem is they can’t. It’s just not possible. There is way too much foundation-level material they need to know before they get there. I can’t skip over this material. If I do, they’ll become draggers-and-droppers rather than clever coders. That will lead to longer-term frustration borne of unrealized career aspirations, because they simply won’t be talented enough to create apps people want to use. They need the foundation, but are they patient enough to wait for it to be built, and can I set it quickly enough for them not to lose interest?
Teaching and learning computer science today requires a mighty combination of teacher ingenuity and student patience. In the words of Sweet Brown, ain’t nobody got time for that. But there needs to be time.
Adding to this is the inertia of how it’s always been done. Some computer science educators insist that the shortcomings lie solely with today’s students, and it is up to them to muster the self-discipline to muscle through the basics to build their repertoire. They believe computer science should be taught largely the way it always has been, that there is nothing wrong with limiting students to developing command-line applications, and that exploring the historical development of long abandoned programming languages is good for the soul. They refuse to record their classes because they fear students will no longer show up. They oppose connecting speakers to lab computers because it will be disruptive. They push to disconnect the Internet during class time to minimize distraction. And they lock down privileges on student workstations so tight that even the instructors have no way of knowing whether the software setup they planned will actually work. I have a feeling it was this kind of mindset that ridiculed me for liking AC/DC when I should have been listening to something awful like Credence Clearwater Revival.
You could dismiss the inertia crowd as irrelevant, except that this debate isn’t about music. It’s about charting a course for teaching students one of the most important subjects of our time. Our challenge is to make the incredibly complicated, visually and functionally rich space of modern application development accessible to today’s students, even though most come to us with very limited exposure to anything related to programming. They are the four-chords-set-to-4-4-time me trying in vain to compose a song like Bruno Mars’ “Locked Out of Heaven”, a song which melds several different song styles together into a tight three-and-a-half minutes. They know what they like, and they consume it with abandon, but they have no idea how to create it.
It’s our job as computer science educators to help them transition from technology consumers to technology producers. Success requires flexibility, creativity, and risk-taking. It requires embracing new technologies and devising new strategies for teaching them to students without leaving out important aspects of their theoretical foundation. Computer Science ain’t got no room for fuddy-duddy. Computer Science smells rotten when it’s no longer fresh. We can’t simply spare students the past, nor can we present every gory detail of it. Instead, we have to figure out how the past informs the ever-changing technology they use today and make sure they become experts in that.
Isn’t this all very difficult? It certainly is. It’s why teaching Computer Science may be the hardest academic assignment today. But failure can’t be an option.
Umm, by the way, COBOL, we are never, ever, ever getting back together. Like ever.