CSC 313 Teaching Computing
Contents
Syllabus
Welcome!
- Instructor: Dr. Ayaan M. Kazerouni ayaank@calpoly.edu
- Office hours: See my homepage
- Tentative course schedule
Course description
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.
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
- Programming assignments — self-reflection (15%)
- Readings and quizzes (15%)
- In-class discussions (20%)
- Attendance (5%)
- Teaching/tutoring (20%)
- Tutoring shadowing and reflection
- Tutoring centre tutoring hours and reflection
- Culminating experience (25%)
- An outreach event to teach a computing topic to an interested audience
Details
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. Expect in-lecture reading quizzes in addition to turning in complete reading responses each week.
In-class discussions: We’ll have frequent small-group discussions during lecture and lab sessions. These will often be accompanied by Canvas submissions.
Attendance: See the attendance policy later in this Syllabus.
Teaching/tutoring: We will practice teaching computing via both shadowing experienced CS tutors and tutoring in the online tutoring for 101, 202 and 203 students. If time permits and we aren’t totally spent by week 10, you’ll also hold brief sessions for the intro classes.
Culminating experience: 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.
The following workshops were taught in Winter 2025:
- Introductory blocks-based programming using the Adafruit Circuit Playground Express, to students from Atascadero Middle School and Laguna Middle School.
- Introductory game development using Bitsy, taught to attendees at the SLO public library.
- Cybersecurity and online safety, two workshops taught at the SLO public library.1
- Building audio effects using Ableton and Max for Live, taught to Audio Engineering students from the Music department.
- Deploying a website using AWS services, taught to a section of software engineering students.
- Testing React components with Jest, taught to a section of software engineering students.
- Neural networks and Support vector machines, taught to Econ grad students.
Click to see workshops taught in previous quarters.
- Spring 2024
- Introductory Python, two sessions taught to a section of Biochemistry students.
- Data science with Python, two sessions taught to the same section of Biochemistry students.
- Parallelising pandas operations with dask, taught to members of PyData SLO.
- Making music with programming using Sonic Pi, taught to members of the Audio Engineering Society student club at Cal Poly.
- Making art with programming using p5.js, taught to middle-schoolers at the SLO public library.
- Creative prototyping with Adafruit Express, taught to middle-schoolers at the SLO public library.
- Online safety and security, taught to elderly community members at the Morro Bay public library.
- Testing React components with with Jest, taught to two sections of software engineering students.
- Spring 2023 (at the Cal Poly library unless otherwise noted)
- Introduction to Python.
- Making art with programming using p5.js (x2).
- ``Git Confident with Git’’.
- Online safety and privacy.
- Introduction to data science with Python.
- Automating common tasks with Python (a workshop using the PyAutoGUI module).
- Web automation/testing using Selenium, taught to a section of software engineering students.
- Blocks-based programming using the Adafruit Circuit Playground Express.
- Blocks-based programming workshop taught at a local middle school.
- Spring 2022 (at the Cal Poly library unless otherwise noted)
- Introduction to Python (x3).
- Introductory data science with Python.
- Making music with programming using Sonic Pi.
- Intro to web development using Glitch.
- Introduction to Web APIs.
- Introduction to AWS, taught to two sections of software engineering students.
- Problem-solving with MATLAB, taught to a section of Biochemistry students.
Course communication
- Slack channel
- Invite link (expires _____)
Please bookmark this Slack workspace, and also make sure to do at least one of the following:
- Download the Slack app to your phone or desktop, or
- 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 channel linked above. Questions that are of general interest to the class should be sent to the #general
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.
Attendance policy
I will take roll in most class sessions. 5% of your course grade is based on attendance — this will be given as a binary score, i.e., either 0% or 5%. You must attend at least 85% of class sessions to get credit for attendance.
Additionally, there will be in-class discussions that cannot be completed outside of class.
Here is why I have instituted this attendance policy:
- What we discuss in lectures will be directly put into practice in your workshop and tutoring sessions. If you miss lectures, your teaching will be poorer as a result, and real students who come to learn from you will be negatively impacted.
- 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!
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.
SensusAccess is a self-service, alternate media solution made available by Kennedy Library to automatically convert files into a range of alternative media including audiobooks (MP3 and DAISY), e-books (EPUB, EPUB3, and Mobi) and digital Braille. The service can also be used to convert inaccessible files such as image-only PDF files, JPG pictures, and Microsoft PowerPoint presentations into more accessible and less tricky formats. This service is available at no charge.
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 the schedule used in Winter 2025. This schedule shows the “big assignments” and doesn’t include the quizzes or discussion activities.
WEEK | TOPIC | READING | NOTES/SLIDES | ASSIGNMENT DUE/RELEASED |
---|---|---|---|---|
1 | Course intro + computing for all | Good (and Bad) Reasons to Teach All Students Computer Science (Lewis) | Slides | Survey about workshop topic interests |
1 | 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) |
Slides | Tutoring centre shadowing sign-up and reflection released The programming process assignment released |
2 | Mental models, notional machines, and misconceptions | Getting better at solving programming problems (Hermans) | Slides | |
2 | Learning to program | The Buggy Path to the Development of Programming Expertise (Pea, Soloway & Spohrer) | Slides | Programming process reflection due Workshop initial proposal Educational data mining assignment released |
3 | NO CLASS. ACADEMIC HOLIDAY. | |||
3 | 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 |
Slides | |
4 | Tutoring | What’s known about tutoring (Orendorff) | Slides | Tutoring centre shadowing reflection due |
4 | Learning a 2nd PL | Understanding Conceptual Transfer for Students Learning New Programming Languages 📽️ Talk recording (Tshukudu & Cutts) |
Notes | |
5 | EDUCATIONAL DATA MINING REPORT PRESENTATIONS | Educational data mining reports due | ||
5 | Instructional design | Chapters from Teaching Tech Together (Wilson) | Slides | Workshop proposal presentations begin |
6 | 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) | Slides | |
6 | NO CLASS. CLASS CANCELLED DUE TO WEATHER. | |||
7 | 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) |
Slides | |
7 | 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) |
Slides | Mind-mapping activity |
8 | 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) |
Slides | AI in computing education reading and reflection due before class |
8 | Metacognitive scaffolding | Notes These notes were written pre-LLMs, but the skills involved are still worth discussing. |
||
9 | 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) |
Notes | |
9 | Open discussion about degree programs, our degree programs, and our upcoming transition to the semester system. | |||
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) |
Slides | |
10 | NO CLASS. ALL THE BEST FOR FINALS. |
Acknowledgement
Early versions of this course were based on Zoë Wood’s initial offering of the course.
-
We didn’t go a good job advertising this with enough time, so these were not well attended. ↩