← Ayaan M. Kazerouni

CSC 513 Computing Education Research and Practice

A collection of reading reflection prompts used in various offerings of CSC 513. Click on items to expand them.

Some of these prompts (the ones on computing for everyone, introductory programming, contextual CS education, spatial skills, research study design) were inspired by or adapted from Mark Guzdial’s blog post about a graduate course in CS education research.

Computing for everyone

What are your core values for why CS Education is important?

This is a 2-part “reading”:

  • Take the CS Visions Quiz. What are your core values for why CS education is important?
  • Read Good (and Bad) Reasons to Teach All Students Computer Science by Colleen Lewis.

Respond to the following prompt (100–200 words):

“We should teach computing to everyone.” Why or why not? Use the visions quiz, the reading, and your own experiences to respond.

Introductory programming

What’s your hypothesis for why learning to program is challenging?

Read chapters 1 & 2 of How People Learn.

Use ideas and quotes from How People Learn to explain what’s difficult about learning to program. You may also draw from your own experiences learning to program. Come to class ready to discuss your hypothesis and how you would go about testing it.

Programming environments

Evaluate a programming environment

Read:

Think of a programming environment that you’ve used while learning to program(e.g., simple text editor, VS code, DrRacketp5js, IntelliJ IDEA, a blocks-based environment, ….). Analyse your chosen environment as a “pedagogic IDE”.

  • What aspects of it helped or hindered your learning?
  • Do you believe there are principles of a pedagogic IDE that are missing in the post above, perhaps that you observed in your chosen environment?
Contextual CS education

Where does programming help or get in the way?

Read Chapter 4 from Learner-Centered Design of Computing Education.

Use programming to create something interesting or answer a question of interest. If possible, choose a system where you’re not already familiar with the environment or programming language.

For example:

  • Use p5js to create a picture that you find fun or interesting
  • Use BlockPy to answer a question using one of the ready-made datasets
  • Use Sonic Pi to create an interesting audio clip
  • Use Observable to create a useful data visualisation
  • Or some other contextualised environment and media that you may be familiar with, as long as it involves “programming” (broadly construed)

Did this motivate you to learn more about CS or the context? Where did programming help, and where did it get in the way?

(Also, turn in a screenshot, audio clip, or a link so we can see what you made!)

Meta-cognitive scaffolding

Read:

Use ideas we have talked about in the learning sciences as well as quotes from the two papers above to explain a “big idea” that connects them. What about the big idea do you find interesting?

Note: Try to add something to this combination of papers. I’m less interested in a paraphrasing of the two papers, and more interested what (you think) connects them and is interesting.

AI and computing pedagogy

Read:

The first paper is some early work in educational data mining that (I think) is a good example of the kinds of targeted opportunities available to us. The next two papers are more concerned with the Chat-GPT/Copilot types of AI products, and their impacts on computing education.

As you read these papers, spin up Chat-GPT or Copilot and poke and prod at them, specifically in the context of solving programming problems or understanding APIs etc. For example, I used Chat-GPT while learning the language OCaml, and it gave me some sense of its limits and abilities. If you don’t have an “organic” programming task ahead of you to experiment with, try to use question prompts or code snippets from places like Leetcode or even your previous CS courses.

Concretely, answer the following in your reflection:

  • Briefly describe the computing task(s) you performed to experiment with these AIs.
  • What kind of help did you seek from the AI? Was it syntactic help, help with APIs (e.g., because it’s quicker than searching the documentation), code explanation help (“what does this code do?”), etc.
  • What did the AI do particularly well?
  • Where, if at all, did the AI lead you astray? How much domain knowledge would a user need to notice mistakes in the AI’s explanations/suggestions?

Come to class ready to discuss two things:

  • How will AI change introductory programming courses in the immediate future? How should pedagogy change to take this into account?
  • What’s your vision for how AI will affect introductory programming in the longer term (3–5 years)?
Research study design

Read:

Compare and contrast MIMN studies, RCTs, and longitudinal studies. What are each good for? Come to class ready to discuss your viewpoint.

Spoken langauges and pedagogic languages

Read:

This reflection is in two parts:

  • Are you convinced that there is a relationship between a person’s spoken/native language and their programming language learning? Are you convinced by the experiment reported in the “Native Language’s Effect on Java Compiler Errors” paper?
  • [OPTIONAL] If you are bilingual or multi-lingual, or if you are closely familiar with people who are bilingual or multi-lingual (e.g., family members), or if you have simply formed a hypothesis based on your readings, do you think this has any bearing on how you learn programming languages? Note that this question includes but is not limited to whether you think it would be “easier” or “harder” to learn a (first or subsequent) programming language.
Pedagogic programming languages

Do the readings (from the course schedule), and try out the Pyret and/or Hedy languages.

Consider not just the languages (syntax and semantics), but also the design rationales for the languages, as described by the creators on their websites or, in the case of Hedy, in the paper.

  • What are some “big ideas” in the designs of Pyret and Hedy that stand out to you?
  • Keeping in mind “mindshift learning theory” (as described in the Tshukudu & Cutts paper for learning a 2nd PL), what difficulties or opportunities do you see for transitioning learners from Pyret/Hedy to a more “mainstream” language like Python or Java (or Racket)?
Cybersecurity education

Read:

Answer the following questions in your reflection:

  • Do you think the “networked robots” workshop effectively taught the cybersecurity concepts it aimed to teach? Drawing from the topics we’ve talked about this quarter (look the schedule or your mindmap), what aspects of the workshop do you think might have been particularly helpful?
  • What’s your hypothesis for why peer instruction works?

Respond, and then read and respond to your classmates’ responses if something they said resonates with you.

Spatial skills

Read:

Support or refute the following claim: we ought to teach spatial reasoning in all our introductory computing courses

Educational data mining

The promise and peril of educational data mining

Enormous data streams are now available to us to observe and analyse students’ learning, engagement, time on task, problem-solving, etc. What are some promises and perils of this type of educational research? Give concrete examples, i.e., not a vague sentiment that we all agree with, like “teachers shouldn’t be able to spy on students”.

For examples:

  • The wealth of data can lead to developing “metrics” to measure aspects of student activity, like their time management, software testing practices, error recovery, etc. My own work is an example (which you should feel free to criticise).
  • Availability of high-resolution data streams enables the burgeoning area of Intelligent Tutoring Systems (e.g., work from Thomas Price at NC State)

What are some promises and perils of this kind of research?

Diversity & equity

Read the following papers:

Think about the main takeaways from these papers:

  • What did you learn that you didn’t know before? Were you surprised to learn it?
  • Based on your experiences in CS Education (either as a student, teacher/tutor, or budding researcher), what resonated with you?