I’ve decided to try and share some introductory materials for getting into teaching. Mark Guzdial announced that he’d be posting the syllabus for his CS Teaching Methods course, and recently two CS people have asked me how to get into CS Ed research. Clearly this is the hot time to be dragging people into the best CS subfield.
The fact is that there isn’t too much published Pedagogical Content Knowledge about how to teach Computer Science. There’s a lot of Pedagogical Knowledge out there, and as CS people we already have Content Knowledge. But the community is still establishing what’s different about teaching CS compared to, say, teaching someone how to make Cigar Box Guitars.
So most of this page is devoted to good teaching links, and some specialized CS information. At some point I may toss out my own model curricula for a “CS Teaching Methods” course. There’d probably be a lot of theory (Instructional Design, Gange’s Learning Events, Motivation, SL Theory, Constructivism, Cognitivism, etc.) and some large amounts of practice.
Teaching Tech Together
Easily the best book (online or physical) that I’ve found to bring you up to speed on how to be a good teacher. I strongly endorse it!
Formerly http://www.learningandteaching.info/ (I have now mirrored the content)
Hands down the best resource I’ve ever found for growing as a teacher/researcher/learner is this website. Unfortunately, it went down a year or two ago, for some reason. But you can still access it through the wayback machine!
The site is divided into three sections:
- The authors’ thoughts
I recommend starting in column 1 if you are new to education research, and starting in column 2 if you are eager to start teaching and building curriculum.
There are many theories related to learning, teaching, motivation, etc. This site gives you a crash course in all of them. It is overwhelming at times, and learning how to navigate these theories is tricky. Over time, you should come to view learning theories as lenses. Different theories are valuable at different times. For example,
- Situated Learning theory can really help with high level conceptual skills that benefit from a lot of social interaction
- Constructivism is powerful for describing partially structured learning experiences meant to build on prior knowledge.
- Behavioralism is great if you have to learn a habit.
There’s a lot more out there than just Behavioralism, Constructivism, and SL Theory; although if you stick to reading CS Ed literature, you might think those are all there are. Don’t get caught in that trap, but explore as many theories as possible and see how they can help you. It’s like Object-Oriented vs. Function programming: different tools at different times.
SIGCSE Proceedings, Journals, Etc.
There is a tremendous amount of research out there about how to teach CS. As a community, we’re till trying to distill the best of it out, but you should definitely read some of these proceedings and journals. In particular, look at:
The MUSIC Model of Academic Motivation
I do a lot of motivation research, and the MUSIC model is by far one of my favorite theories. I’m biased, since Dr. Jones is on my committee, but I asked him to be on my committee because it’s a good theory, so there you go.
CS Teaching Tips
I don’t agree with all the tips that are here. Some of them are quite interesting, some of them are quite useful. But definitely take them with a grain of salt.
Exploring Computational Thinking
Google has a really nice sample curriculum here for teaching Computational Thinking to K-12. I think it’s a nice model of what we should be building as a community.
Get Out and Practice
There is no teacher like experience. You can read guides all day, but honestly you’re better off getting real world experience as quickly as possible. Teaching is one of those domains where Situated Learning techniques really pay off. So work with a local high school to teach a class or something.