CSC 313 Teaching Computing (Winter 2026)

Welcome!

An introduction to pedagogical methods and practical techniques for computing education: selecting appropriate content, designing assignments and activities, evaluating student learning, and evaluating teaching efficacy. Hands-on guided curricular design activities and real-world practice.

Important links

Course learning objectives

  • Explain common challenges to learning and teaching computing to broad audiences
  • Discuss computational concepts and correct common misunderstandings
  • Assess a proposed CS curriculum and teaching methodology on whether it is appropriate for a target audience
  • Identify, evaluate, and effectively use evolving tools for computing education
  • Identify, evaluate, and disseminate results from a research study
  • Identify, evaluate, and disseminate changing pedagogical norms
  • Design an effective assignment for teaching fundamental computational concepts

Assessments and grading

Group Frequency/Major assignments % of grade
Programming assignments and self-reflection The programming process reflection
Educational data mining
15
Pre-class readings Occasional, every ~1.5 weeks 15
In-class discussions Most lab sessions 20
Attendance Attendance policy 5
Tutoring Shadowing tutors
Active tutoring
20
Workshop Workshop proposal
Pre-workshop presentation
Teaching the workshop
25

Programming: To think about teaching computing, we will begin with reflections on our own coding process. This course includes programming assignments that involve process documentation and reflections. This process will include code review and shared assessment of one’s process and code.

Reading: I will assign course readings to help you engage with the material. Please complete these readings before class. These may be quizzes (meant to be taken as you read) or discussion prompts. These are usually graded based on good faith effort. The goal is to ensure you come to class having given some thought to that day’s topic.

In-class discussions: We’ll have frequent small-group discussions during lecture and lab sessions. These will often be accompanied by Canvas submissions.

Tutoring: You will practice shadow experienced CS tutors and conduct your own (observed) tutoring sessions in the CSSE tutoring centre. If time permits and we aren’t totally spent by week 10, you’ll also run brief lab sessions for the intro classes.

Attendance: See the attendance policy later in this Syllabus.

Teaching workshop: In consultation with the instructor, students will design and teach a computing workshop to interested students. I will provide a number of possible opportunities to which groups will be assigned based on student interests. If you (or your club, etc.) have an organised teaching activity you’d like to set up, that can also count. Please talk to me ASAP if this is the case.

You will work with real workshop hosts to offer this workshop. For example, instructors at Cal Poly, local school teachers, librarians at SLO Public Libraries, or club leaders at Cal Poly. Part of your grade for this component rests on professional, timely, and consistent communication with these individiuals.

Here are examples of things that might lead to point deductions in this regard:

  • Lack of communication with your workshop host. For example, you should meet with your workshop host at least once (their schedule permitting), before your workshop to communicate your plan to them and receive feedback. This can happen during our scheduled lab times.
  • Discourteous communication with your workshop host. Remember, they are doing us a favour by letting us get some teaching experience!
  • I have individual chats with workshop hosts after your workshops. It’s not likely, but evidence of unprofessional conduct during the workshop will lead to point deductions.

I acknowledge that this course involves a number of scheduled time commitments outside of class time. While the total workload may not significantly exceed that of, say, homeworks in other classes, I know that for those managing external obligations, setting aside time for tutoring and workshops can be challenging. In these cases, please talk to me. We can work something out.

Course communication

All course communication will take place in Slack. See Canvas for a link to the workspace and an invite link.

Please bookmark this Slack workspace, and make sure to do at least one of the following:

  • Download the Slack app to your computer or phone, or if you don’t like push notifications,
  • Sign in to Slack and enable email notifications so that announcements come to your email (if you don’t like push notifications, you can set it to email you when there is activity that needs your attention, like announcements).

All communication for this course will take place in the Slack workspace. Questions that are of general interest to the class should be sent to the #all channel. If you’re not comfortable asking questions publicly, you can DM me, and I might post the question and answer to the public channel if I think it would be helpful.

The Slack workspace also provides a convenient way for you to interact with your teammates, and for me to communicate with each team.

Attendance policy

What we discuss in lectures will be directly put into practice in your workshop and tutoring sessions. If you miss class, your teaching will be poorer as a result, and real students who come to learn from you will be negatively impacted. Additionally, the course involves significant teamwork. Most lab sessions will be devoted to this teamwork. If you miss lab sessions, you would be letting your teammates down.

All this adds up to: I strongly recommend that you come to class!

Here’s the policy:

  • I will take roll in most class sessions. 5% of your final course grade is based on attendance.
  • Additionally, there will often be in-class discussions with deliverables that cannot be completed outside of class.
  • After workshop teams have been formed and your team begins preparing for the workshop (this will happen around week 3), attendance in lab is mandatory for the rest of the quarter. Lab sessions are the primary time when your team can work together on your workshop, and is also when I can get get visibility into the team’s progress and provide feedback.
    • At minimum, if you cannot come to lab, let me and your teammates know.

In case of emergencies, don’t worry about attendance, and talk to me when you are able to do so.

Accessibility

I know that everyone is unique, and I may have unintentionally overlooked something that limits access to some materials or activities. Please let me know if you cannot access any content. If you need additional accommodations to complete the required course work, please contact me as soon as possible! You should also contact the Disability Resource Center.

Classroom climate

All members of this class are expected to contribute to a respectful, welcoming, and inclusive environment. I expect us to strive to build a community in which:

  • We are not code snobs. We do not assume knowledge or imply there are things that somebody should know.
  • After our own work is complete, we support one another’s learning by sharing our expertise generously if invited to do so.
  • We consistently make the effort to actively recognise and validate multiple types of contributions to a positive classroom environment.
  • We strive to contribute meaningfully to group work.

Course schedule

This is a tentative course schedule meant to give a bird’s eye view of the course. If things change (and they will!), I will update this table.

(For instance, it’s very likely readings for later weeks will change based on class discussions.)

Assignments will also appear in Canvas with deadlines and submission endpoints. If deadlines here conflict with deadlines in Canvas, deadlines in Canvas take precedence.

In addition to the assignments shown below, there will be occasional pre-class readings and frequent in-class activities that will appear in Canvas.

WEEK DATE TOPIC READINGS / RESOURCES
(Unlinked items are available in Canvas)
ASSIGNMENT DUE/RELEASED
1 Tuesday, January 6 Course intro + computing for all Good (and Bad) Reasons to Teach All Students Computer Science (Lewis)

Class materials: Slides
Survey about workshop topic interests (Canvas)
  Thursday, January 8 How people learn How Can I Teach Students the Skills They Need When Standardized Tests Require Only Facts? (Willingham)
Decoding Your Confusion While Coding (Hermans)

Class materials: Slides
Shadowing tutors: sign-up and reflection
The programming process
2 Tuesday, January 13 Mental models, notional machines, and misconceptions Getting better at solving programming problems (Hermans)

Class materials: Slides
 
  Thursday, January 15 Learning to program The Buggy Path to the Development of Programming Expertise (Pea, Soloway & Spohrer)

Class materials: Slides
Programming process reflection

Workshop initial proposal
Educational data mining
3 Tuesday, January 20   NO CLASS. ACADEMIC HOLIDAY.  
  Thursday, January 22 Programming language syntax, behaviour, and environments
Pedagogic programming languages
What is a Pedagogic IDE? (Krishnamurthi)
Programming paradigms and beyond (Krishnamurthi and Fisler)
Hedy: A Gradual Language for Programming Education (Hermans). Also, try the Hedy language
The Pyret programming language. Why Pyret? and Examples

Class materials: Slides
 
4 Tuesday, January 27 Tutoring What’s known about tutoring (Orendorff)

Class materials: Slides
Shadowing tutors: reflection
  Thursday, January 29 Learning a 2nd PL Understanding Conceptual Transfer for Students Learning New Programming Languages
📽️ Talk recording (Tshukudu & Cutts)

Class materials: Notes
 
5 Tuesday, February 3   EDUCATIONAL DATA MINING REPORT PRESENTATIONS Educational data mining reports
  Thursday, February 5 Instructional design Chapters from Teaching Tech Together (Wilson)

Class materials: Slides
Workshop proposal presentations begin
6 Tuesday, February 10 Classroom instruction
Mastery learning
Teacher perspectives
The 2 Sigma Problem: The search for methods of group instruction as effective as one-on-one tutoring (Bloom)

Class materials: Slides
 
  Thursday, February 12   NO CLASS. CLASS CANCELLED DUE TO WEATHER.  
7 Tuesday, February 17 Classroom climate A Climate-first approach to training student-teaching assistants (Huang and Fox)
Communication in computer science classrooms: understanding defensive climates as a means of creating supportive behaviors (Garvin-Doxas and Barker)

Class materials: Slides
 
  Thursday, February 19 Diversity barriers Diversity barriers to K–12 computer science education: structural and social (Wang & Moghadam)
An Equity-minded Assessment of Belonging among Computing Students at Cal Poly (Stewart)

Class materials: Slides
 
8 Tuesday, February 24 AI-based code synthesisers in computing pedagogy Exploring the Design Space of Cognitive Engagement Techniques with AI-Generated Code for Enhanced Learning (Kazemitabar, Huang, Suh, Henley, Grossman)
Learning to code with and without AI (a blog post by Austin Henley, summarising a couple of research papers)

Class materials: Slides
 
  Thursday, February 26 Metacognitive scaffolding Class materials: Notes
These notes were written pre-LLMs, but the skills involved are still worth discussing.
 
9 Tuesday, March 3 Spatial skills Investigating the Relationship Between Spatial Skills and Computer Science (Parkinson & Cutts)
Spatial Encoding Strategy Theory: The Relationship Between Spatial Skill and STEM Achievement (Margulieux)

Class materials: Notes
 
  Thursday, March 5 Open discussion about degree programs, our degree programs, and our upcoming transition to the semester system.    
10 Tuesday, March 10 Spoken languages and programming languages Native Language’s Effect on Java Compiler Errors (Reestman & Dorn)
Relating Natural Language Aptitude to Individual Differences in Learning Programming Languages (Prat, Madhyashtha, Mottarella, & Kuo)

Class materials: Slides
 
  Thursday, March 12 Schedule wiggle room    

Acknowledgement

Early versions of this course were based on Zoë Wood’s initial offering of the course.