Computer Science is a very cool field, but it’s also a very misunderstood field, even by those who are in it. It’s a big field, so there are people in it doing all kinds of different things. The complications remind me a little of the distinctions Sheldon makes between theoretical and applied Physics on The Big Bang Theory. Or between what he does and what everyone else does. And yes, there is some of the same derisiveness Sheldon expresses from people in CS. Here are just a few of the many arguments, boiled down into bullet form.
What is Computer Science?
- Is it primarily theory or programming?
- Do things like web design/development count?
- Can Computer Science be done without a computer?
- What is the relationship between the computer and Computer Science anyway?
What should be taught in Computer Science courses (this is related to the above, but gets a bit more tangled and detailed)?
- Should we focus on concepts, and if so, which ones: algorithms, iteration, recursion?
- What programming language should we start with (if any?)
- Objects first?
- Is CS vocational or academic?
- In my school/district/state, Computer Science is considered Word, Excel, and Photoshop.
Who is qualified to teach Computer Science?
- Can only those with a BS or more in CS teach CS?
- What if no one with a BS or more in CS wants to teach it?
- Should CS teachers have industry experience?
- Can the technology teacher who was teaching Word, Excel, etc. teach CS? If so, how should they prepare?
- What if we prepare all these CS teachers and there are no classes for them to teach?
Where does CS fall in the STEM spectrum?
- Is CS a science? It’s in the name!
- Is CS technology? Well, it can be.
- Is CS engineering? There are majors in Computer Engineering. There’s software engineering.
- Is CS math? Many argue that math is the grandmother of CS.
- And yet, CS isn’t part of most school’s STEM curriculum, nor part of the CORE.
So here’s my own experience with these issues. Most people (lay people) are in two camps when it comes to what CS is. They either think it’s technology in a very general way, mostly about using applications. If you’re lucky, they’ll assume it’s mostly about complex applications like Photoshop. In the next breath, they’ll ask you what kind of computer to buy. The other camp assumes it’s programming. I’d much rather deal with these people. They’re usually dealing with more complex issues like future job prospects, whether jobs are outsourced or not, gender bias, etc. Much more interesting conversations here.
The issue of what to teach is complicated. My Ph.D. research involved figuring out how students learn, and how to motivate more self-directed learning. So I think about structuring my classes based on what I’ve learned from that research, and from more recent research specific to Computer Science. I am so lucky to be where I am because I can build my classes however I want. I try to provide a solid foundation and I also try to respond to student interest. People have really strong opinions about this that I find kind of bizarre. There’s also a huge difference between what might be appropriate for high school or middle school, and what’s appropriate at the college level. There’s a huge difference in cognitive development between a 9th grader and a freshman in college. I’ve seen this in two different fields. I think the main goal at the secondary school level is to get students interested in the field. If you start focusing on they “should” know, I think you can suck the life out of the class and cause students to become disinterested in the field as a whole. An example that drives me crazy: commenting code “properly”. In high school, who cares. They can learn that in their software engineering classes in college. I encourage commenting so students remember what blocks of code do, but in the beginning, their programs are so short, they don’t really need to. But someone will fight to the death over the idea that even high school students should learn proper commenting techniques. Like we’re gonna know what their future team manager wants.
Teacher qualifications is a touchy area for me, given that I don’t have a CS degree. I feel quite squeamish about it at times, but I know I have more experience than my students, and I keep building on that experience. I’ve created several programs for the school that have tested my programming chops, and next year, I’ll be headed into the land of Arduinos, so I’ll be diving into a new language. Many teachers I’ve run into *with* a CS degree are having to learn new things. Most colleges aren’t teaching you how to program Arduinos or Finch robots or Kinects. Some are, but most stick to a rigid curriculum that hasn’t changed that much. Ten years out from a CS degree, the common languages have changed anyway. So, I’m not sure not having the degree makes my life too much harder than for those with the degree. And certainly, I have the teaching experience in spades, which I honestly think is more important.
Ah STEM. It’s the buzzword du jour, and yet the biggest field that has contributed to its success is not included in most interpretations. Some people can make the connection work, but I find the T in STEM causes all kinds of problems because it draws people back to the idea that it’s just about using technology (not computing) to do other things like make pictures, write papers, etc. I’d love it if we could find a better acronym. To me this is a lesson in how language matters.
My basic approach to all of this is that what I do is about creating and making my own tools, not using someone else’s. I think about that broadly, so it can include things like building web sites from scratch (something girls tend to enjoy). Why use Excel, when you can write some code to analyze your data and graph it however you want, not just the way Excel wants you to. Don’t like the way a game works? Create your own. Want to track your cat’s nightly excursions? You can build that, too. Looking at CS this way as opposed to getting into the nitty gritty of languages and concepts makes more sense to me. I’m just trying to make it fun.