Facilitating a Classroom Discussion

Your status as a teacher gives you power that you will need to use and power you will want to relinquish. At first, you may need to be quite active to build participation and get students to discuss, both agreeing and disagreeing constructively, and with some system that keeps them from all talking at once or breaking into independent conversations. But, to get them to debate with each other, and not just to you, you need eventually not to be the person who responds to each student's statement before another student can chime in. The mid-path between running the show and allowing total chaos is tricky, as all of teaching is. You will find some practical ideas in chapter 6 of Making Sense of Algebra from Heinemann Publishers. Here are a few.

Sensible Norms for Classroom Discussion

The last suggestion was "Minimize rules that apply only to school and not to normal conversation," but this is a classroom with large numbers of people and so not quite a "normal" conversation. Some norms, all pretty obvious, are useful. Use or ignore the following ideas.

You may want to ask students periodically what they think might help the discussions.

Other Ways to Engage Students in Meaningful Discussion

This list was generated by some of our field test teachers in New York.

Engaging Students in Building Algorithms Offline

Periodically, the curriculum will ask students to develop an algorithm for a task and then build it in Snap!. Other times, you may opt to focus on building an algorithm offline before students dive into coding it Snap!. Either way, working through the process outside of Snap! supports algorithmic thinking and collaboration and also helps to prepare students both for the pseudocode that appears on AP CSP Exam and for coding in other programming languages.

Note that we do not suggest "teaching" pseudocode. Pseudocode is not a language to master (even for the exam)—in fact, it's not a language at all but rather a technique for getting computational ideas out on paper and communicating them with others before doing actual coding. So, while it's reasonable to model the College Board style of pseudocode and even to offer some sample exam questions where students have to interpret pseudocode, as they will have to on the exam, it's not a good idea to try to get students to "learn pseudocode" as that would defeat its purpose of allowing programmers to think about code without the constraints of a formal language.

For example, in the Unit 2 Lab 4 page, Developing a Number Guessing Game, you may choose to explore the concept of a binary search algorithm and to develop an algorithm offline before even opening Snap!. Some teachers have used this approach: