← Ayaan M. Kazerouni

CSC 313 Teaching Computing

As taught in Spring 2024. If you're a current student in the course, please refer to our course Canvas, not to this page.

Contents

Acknowledgement

Much of this course (structure and materials) is inspired by or carried over from Zoë Wood’s initial offering of the course.

Syllabus

Welcome!

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

  • Coding assignments — self-reflection (15%)
  • Reading
    • Weekly reading quiz and/or response (20%)
    • Discussion participation/lecture quizzes (20%)
  • Teaching/tutoring
    • Practice teaching in introductory classes + self-reflection (10%)
    • Virtual tutoring shadow and write-up (5%)
    • Virtual tutoring centre tutoring hours with reflection (10%)
  • Culminating experience — an outreach event to teach a computing topic (20%)

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: We will engage with seminal and emerging computing education research. In most cases this will mean reading research papers.

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. You’ll also hold a brief session in our introductory class lab sessions.

Culminating experience: In consultation with the instructor, students will select a final culminating experience. Most projects will involve teaching a workshop about a computing topic to a real group of learners. I will post opportunities for these in the early weeks of the quarter.

The following workshops were taught in 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.

Course communication

  • Slack channel
  • Invite link (expires _____)

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 #questions 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.

Other benefits of using Slack:

  • You can communicate with your classmates in Slack as well
  • Although there are assigned readings which will sometimes have Canvas Discussions associated with them, you should feel free to raise points of discussion yourself in Slack
  • You’re encouraged to seek feedback about projects in the #general channel—that way you can get feedback from me as well as 34 other smart and motivated people!

Attendance policy

There is no explicit attendance policy for this class.1 However,

  • There will occasionally be graded activities in class that you must be present to complete.
  • This class is heavily driven by discussions of the day’s activity or reading. If you’re not attending class, you’d just be passively following a reading list.
  • A non-trivial component of your final grade is based on participation—participation in discussions, participation in small group activities, etc. You cannot participate if you’re not in class.

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

I do know that you all have a lot going on, so if you need to miss class on a given day, let me know ahead of time and I can let you make up any activity you might have missed.

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 Spring 2024. This schedule shows the “big assignments” and doesn’t include all the quizzes or reflection prompts that accompanied most readings.

WEEK TOPIC READING ASSIGNMENT DUE/RELEASED  
1 Course intro + computing for all Good (and Bad) Reasons to Teach All Students Computer Science (Lewis) Tutoring centre shadowing sign-up and reflection released
Survey about culminating experience
 
1 Learning to program The Buggy Path to the Development of Programming Expertise (Pea, Soloway & Spohrer) The programming process assignment released  
2 Classroom instruction The 2 Sigma Problem: The search for methods of group instruction as effective as one-on-one tutoring (Bloom)    
2 Educational data mining
Basic pandas tutorial
Misconception-driven Feedback: Results from an Experimental Study (Gusukuma, Bart, Kafura, Ernst) Educational data mining assignment released  
3 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)
Active tutoring sign-up and reflection released
Culminating experience initial proposal due
Programming process reflection due
 
3 Continuing How people learn      
4 Tutoring What’s known about tutoring (Orendorff) Tutoring centre shadowing reflection due  
4 Mental models, notional machines, and misconceptions Getting better at solving programming problems (Hermans) Mind-mapping activity  
5   EDUCATIONAL DATA MINING REPORT PRESENTATIONS    
5 Instructional design Guest lecture from Dr. Cory BartInstructional Design is to Teaching as Software Engineering is to Programming
Chapters from Teaching Tech Together (Wilson)
Culminating experience proposal presentations begin  
6 Programming language syntax, behaviour, and environments
Pedagogic programming languages
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
   
6 Learning a 2nd PL
Coursenotes
Understanding Conceptual Transfer for Students Learning New Programming Languages
📽️ Talk recording (Tshukudu & Cutts)
   
7 Diversity & equity 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)
   
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)
   
8 Spatial skills
Coursenotes
Investigating the Relationship Between Spatial Skills and Computer Science (Parkinson & Cutts)
Spatial Encoding Strategy Theory: The Relationship Between Spatial Skill and STEM Achievement (Margulieux)
   
8   NO CLASS. INSTRUCTOR IS TRAVELLING.    
9   NO CLASS. INSTRUCTOR IS TRAVELLING.    
9 AI-based code synthesisers in computing pedagogy Learning to code with an without AI (Henley)
Exploring the Learnability of Program Synthesizers by Novice Programmers (Jayagopal, Lubin & Chasins)
AI and code synthesisers in computing education discussion  
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)
   
10 Topic TBD      
  1. This is changing in future iterations.