What does a CS methods class look like?

November 4, 2015 at 8:13 am 15 comments

There are only a couple of universities in Georgia where you can get a CS teaching endorsement (a kind of credential that is an add-on to an initial certification).  In both of them, you have to have a CS methods class, where students learn how to teach CS.  One of them needed a CS methods course taught, but didn’t have anyone available to teach it.  The problem was that it was needed by a single student (these endorsement programs are woefully undersubscribed).  I offered to teach it — though not officially, since I’m a GT professor and not a professor at these other schools.  So, someone else was signed up to be the instructor-of-record, and I ran the course, all on-line with weekly Skype chats.

Folks might be interested in what’s in a Methods course, so I’m sharing my draft syllabus here. Since there was only one student, I made up a syllabus to submit to check that it met the requirements of the course, and we didn’t update it afterwards. I make no claims about quality of the course.  It was a class for one student to meet a requirement, and I wanted the experience of teaching a CS methods course.  It did meet all the requirements of the program (which were more prescribed and substantial than most CS courses I teach).  Not all the links here are live — some went to servers inside firewalls, and others were sent out via email.

Syllabus for CS Methods Course

Learning objectives:

  • Be able to describe use and when one should use different CS teaching approaches like live coding, peer instruction, pair programming, worked examples, and kinesthetic learning activities.
  • Be able to describe and diagnose common student misconceptions, e.g., with assignments, with while vs. if, and so on.
  • Be able to describe approaches to teaching computer science, including constructionist, objects-first, functions-first, media computation.
  • Write a lesson plan to teach a CS topic for a specific grade level, including assessments.

Assignments (and distribution for final grade):

  • Reading reflections (4): 25% of grade
  • Lesson plan: 25%
  • Exam and grading rubric: 15%
  • HW assignment design and grading rubric: 15%
  • Project: Create all the teaching material for a single unit within a Computing Pathway class, including lessons plans, homework assignments, grading rubrics, and tests: 30%

Course Outline:

Week 1

Week 2

  • Write Reading Reflection #1: Do you agree with the challenges to learning programming that you read there? What additional challenges have you seen?

Week 3

  • Read Juha Sorva appendix A. Link to whole thing.
  • Discuss: How would you identify these misconceptions? How would correct them?

Week 4

  • Read a paper on Pair Programming (probably this one).
  • Write Reading Reflection #2: Why do you think Pair Programming works as well as it does in this study? Do you think it would work as well in a high school setting?

Week 5

  • Read a paper on Peer Instruction: Pick any one that you like on this site.
  • Review KLA website.
  • Read four blog posts on worked examples in classroom from this site.
  • Discuss: Peer instruction, KLA, worked examples, gesture: When are they useful and when aren’t they?

Week 6

  • Two readings on CS assessment: On concept inventories, and how do we assess CS.
  • Write Reading Reflection #3: These papers are both undergraduate computer science. How would it be different when accessing computer science at the high school level? Would the issues be the same or different?

Week 7

  • How we design CS curricula.
  • Discuss: Which of these approaches would work best for high school students and why? When would one work better than another?

Week 8

  • Write Reading Reflection #4: Based on all of these readings, come up with a philosophy of teaching K-12 computer science. Pick a grade range you prefer (elementary, middle school, secondary), and describe: What do you think ought to be taught? How do you think it ought to be taught? How do you think it ought to be assessed?
  • Discuss the reflection, and pick a topic to write a lesson plan on

Week 9

  • Write a lesson plan: How would you teach the CS topic?
  • Discuss afterwards.

Week 10

  • Write a homework description and grading rubric: What would you want students to do, to learn this topic? What misconceptions would you expect? How would you assure yourself they got it right?
  • Discuss afterwards.

Week 11

  • Write an exam to test knowledge of that topic and the grading rubric for that exam.
  • Discuss afterwards

Week 12

  • Discuss Planning for project. What worked, and what didn’t work? Are there additional things you need to know?

Week 13

  • Week to do additional reading, or to identify a topic for the project.

Week 14

  • Work week on Project

Week 15: Project completed

  • Project: Create all the teaching material for a single unit within a Computing Pathway class, including lessons plans, homework assignments, grading rubrics, and tests

Entry filed under: Uncategorized. Tags: , .

Are there some students who can’t learn how to code? Teachers must always answer “No!” Preview for WiPSCE 2015: Usability and usage of interactive features in an online ebook for CS teachers

15 Comments Add your own

  • 1. Sarah  |  November 4, 2015 at 10:34 am

    Thanks for sharing this!!! It’s so helpful.

  • 2. gflint  |  November 4, 2015 at 1:59 pm


  • 3. lenandlar  |  November 4, 2015 at 4:22 pm

    Thanks so much prof. So very useful

  • 4. joshesheldon  |  November 4, 2015 at 6:19 pm

    Wow, great! Thanks for sharing

  • 5. Mike Clancy  |  November 5, 2015 at 7:58 pm

    Mark, here’s a course to compare with yours.
    We’ve been running it since 1999; Dan Garcia took it over a few years ago when I retired.

    To me, the course is a great candidate for MOOC format. Do you agree?

    • 6. Mark Guzdial  |  November 5, 2015 at 9:36 pm

      Really interesting, Mike! Your course is closer to the “How to teach CS” course (two semester, credit hour sequence) that I built for our PhD students before they started teaching. A methods course is more aimed at school level teaching. That’s why there’s an emphasis on lessons planning, for example.

      I also teach a CS Ed Research course that has an overlap with your course. I’ve got the syllabus for that one queued up for a couple weeks from now.

      Your course has more on cognitive science and less on active learning strategies. I noticed one paper on pair-programming, but nothing on peer instruction. Is that purposeful? Who is the audience for your course? Do they already know methods of how to teach CS?

      • 7. Mike Clancy  |  November 6, 2015 at 2:25 am

        We also have a teaching techniques course aimed at first-time t.a.s. There, the t.a.s practice techniques for active learning, improving classroom climate, reviewing video and other feedback, and discussion of topics like time management.

        In CS 302 (the course I sent you) we try to build on the experience of the teaching techniques course and work as a t.a. by citing research that describes why these techniques are good for student learning, and encouraging the participants to look for ways to apply them in other contexts.

        Part of the course rationale is also to supply things I needed to know when I first started teaching, e.g. how do I organize the material? what makes a good exam? etc. Berkeley grad students rarely get to run their own courses. We assume that they will get practice lecturing elsewhere, and try instead to help them think about the non-presentation part of teaching–the behind-the-scenes issues of building the infrastructure that supports the lectures.

        May I get a look at your “how to teach CS” course?

        • 8. Mark Guzdial  |  November 6, 2015 at 4:38 pm

          It’s in your mail, Mike, and I’ll put them in blog posts here, too.

  • 9. Tim Bell  |  November 8, 2015 at 1:43 pm

    We’ve got a course that we’ve run for a few years on teaching CS (everything *except* programming) – it is focussed on teaching NZ high school topics: http://www.canterbury.ac.nz/courseinfo/GetCourseDetails.aspx?course=EDEM626&occurrence=15W(D)&year=2015

    We’re about to introduce a course on teaching programming, so will be very interested in swapping notes. http://www.canterbury.ac.nz/courseinfo/GetCourseDetails.aspx?course=EDEM665&occurrence=16W(D)&year=2016

  • 10. Mark Ahrens  |  November 11, 2015 at 3:01 pm

    Mark, you should teach this course online as I am sure you would get a good group to participate.

  • […] industry mentorships (e.g., see A Curriculum Model for Preparing K-12 Computer Science Teachers; Georgia Tech's methods course). Counter-argument: Although CS teaching programs currently exist (e.g., Purdue, Georgia Tech), […]

  • […] industry mentorships (e.g., see A Curriculum Model for Preparing K-12 Computer Science Teachers: Georgia Tech's methods course). Counter-argument: Although CS teaching programs currently exist (e.g., Purdue, Georgia Tech), […]

  • 13. kaya@unlv.nevada.edu  |  October 24, 2019 at 7:33 pm

    That is really valuable, Dr. Guzdial! Since K-12 CS education is becoming real, some higher education institutions started offering CS teaching methods courses. However, I am curious about who will train these new courses’ instructors since it is brand new? I mean, how do we know if we are doing a good job? Any thoughts, plans, or feedback???

    • 14. Mark Guzdial  |  October 24, 2019 at 9:25 pm

      It’s a great question. I’m not in a position to try to answer — I don’t teach those classes. I think Aman Yadav and Anne Leftwich may have suggestions.

  • 15. lynn kirby  |  August 25, 2020 at 1:45 am

    In Texas the pre-service teaching exam for CS covers robotics. Does anyone have a project or idea for teaching teachers how to cover this topic?


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 10,184 other subscribers


Recent Posts

Blog Stats

  • 2,049,388 hits
November 2015

CS Teaching Tips

%d bloggers like this: