Why I didn’t like APCS
Last year, I took the APCS (Advanced Placement Computer Science) course offered at my high school. It was boring, at best.
I’ll be the first to admit that I spend way too much time on programming projects. I liked solving interesting problems. For me, that’s what CS had been about for a while.
It turned out that APCS didn’t really follow along with that. The goal of the class seemed to be to write code that solved a task in the least efficient manner. Mind you, these tasks were usually not very interesting or useful — they usually did something stupid like reconstruct an array of arrays based on more arrays. You can indeed use recursion to find tokens in a space-delimited expression. You can implement your own sorting algorithms instead of using the ones in the standard library. But no software engineer would do this.
Sure, we learned all about data structures and standard implementations of them. Sure, we learned how to use Scanners to parse files and how to get input from stdin. And of course it’s helpful to know how your favorite sorting algorithm actually works. But none of these skills are really helpful in the world of software today.
Everything is about the user. Everything is about speed, performance, reliability, scalability. Everything needs to be reusable. Everything needs to be able to go through an efficient build/test/deploy cycle. But we learned none of how this works in APCS. I can walk out of the class saying that I know how to use a HashMap, and a LinkedList, and what the difference between a TreeSet and a HashSet is. But that won’t help me when I’m writing the next generation of web or mobile apps.
I guess my point is, this is supposed to be a college-level course, intended for people who have already taken a course in computer science. Given that the exact title of the class was “AP Computer Science plus Data Structures”, we were already going faster than most other APCS classes at other schools.
You can’t get practical experience from a class like this.