After posting a link to the blog on Facebook, more than a few people commented. I spent an hour tonight trying to create a comment form and a script to handle submitted comments. Unfortunately, the comments aren't functional yet. If anyone knows of a good resource, please let me know!
The professor that I wrote about previously and I continued our argument today, using what may have been the most passive agressive response I've seen. In his last email to me, he argued that there is a body of knowledge than any good programmer should know. I pointed out that not a single course in the UCD curriculum touches that material. To get a sense of whether I'm the only one who feels that UCD's CS department is too theoretical, I asked the CS Club what their honest opinions of the quality of UCD instructors are; the overwhelming majority agreed with me. I pointed this out to the professor and added that there are many skills in high demand in industry (i.e. Ruby, Hadoop) that aren't taught here, which is disappointing. Here's where the passive-aggressiveness comes in. Rather than responding to my email, he devoted five minutes of lecture today to explain why we don't teach "the new stuff." His argument is that teaching "the new stuff" is pointless because no one knows what the next big thing will be. The CS department could teach one language or framework, but in the next five or ten years, that particular focus might be irrelevant. I think he misunderstands that when it comes to getting a job, employers aren't looking for what's relevant in five or ten years. By his logic, there's no difference between teaching students to program using Python and teaching students to program using punch cards. This, by the way, is the same professor that gave only one programming assignment for Databases, and never mentioned NoSQL databases in the entire quarter.
When I went to the professor's office hours, the room was packed with first-years trying to finish his assignment for ECS10. Since I like tutoring, am relatively experienced with Python and had nothing else to do, I spent three hours helping them with their programs. As I stood up to leave, one of the students asked whether programming came easy to me. I told them that I had to work very hard to be mediocre, but that they should not let that deter them. Three stories came to mind, and I thought about telling them, but I was already late to Time Series Analysis and I didn't want to walk in late on Professor Aue.
The first story took place about a week ago. I was frustrated by my classes, so I went to talk to Professor Rogaway. For those who haven't heard of him, Rogaway is one of the world's leading researchers in cryptography, one of the department's best teachers, and one of the smartest people I've ever met. He also did his PhD under Silvio Micali (yes, the same Micali that won the Turing Award in 2012). I wanted to know if he had ever struggled in school. He thought for a minute and told me that he struggles very hard to learn certain foreign languages. He told me that he's never struggled with CS, and that he couldn't imagine doing something that he wasn't the best at. So if you want to know whether CS is easy to some, the answer is yes.
The second story I thought of about my sister. When we grew up, we were very close. Yet despite us receiving (nearly) identical educations, we are very different academically. For me, writing a ten page social science research paper is a pleasure. She'd rather spend that time stepping through gdb or complaining about PowerShell. I work my ass off for mediocre grades (Bs to As, in case anyone is curious what my definition is of mediocre) and she sets the class curves without trying. I'm not sure what my point of telling this story was.
The third story I thought of is not so much a story, but a perspective I've recently acquired. When I ask myself who my first teacher was, my answer isn't my kindergarden or preschool teacher. I consider my first teacher to be gcc (a compiler). GCC was the first teacher that truly challenged me. Compilers require perfection, syntactically and symantically. I had never had a teacher or professor demand that of me. No matter how loudly I yelled at the computer, for not making sense, for making a mistake, for being inconsistent, the answer was always the same: I, the programmer, was at fault. And that's a powerful lesson.
On the topic of struggling hard to master a subject, I stumbled across an article my father sent me a while ago by Cal Newport, titled "Why 'Follow Your Passion' Is Bizarre Advice." It's well worth reading. Newport also has a blog called Study Hacks which is also well worth reading. I'd recommend starting with "The Zen Valedictorian" from 2008. Patrick, if you're reading this, I miss you. (For anyone wondering what I'm talking about, Patrick and I taught a freshmen seminar on how to get the most out of college, based partially on Cal Newport's blog. He's like an older brother to me, someone that I look up to and turn to for advice. My post yesterday about students not choosing projects based on social utility was partially inspired by him; for his final project in Ethics, he gave a presentation on why computer scientists/software engineers should choose socially responsible positions over high paying positions. It was an excellent point that flew over the heads of the students in the room.)
I unintentionally succeeded in getting my entire Mathematical Statistics class to laugh today. After the professor spent twenty minutes writing theorems, corollaries and proofs on the board, I asked him what was going on. Turns out I wasn't the only person who was following along with the math, but had no idea where we had started or where we were aiming to end up. This is the reason why I like Aue and Rogaway so much - they make sure students have a clear understanding of what we want to accomplish and why before they introduce formal definitions and the like. With the exception of Davis and potentially Tagkopoulos, I haven't found any other professors who do this. I wish more did. It doesn't take much time and it helps students (or me, at least) learn much, much faster.