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.
- As teacher, you obviously need to retain control that is needed but, otherwise, try to participate only as much as any participant's fair share of the air time in class. At first (and at times), you will need to participate more than "your share," but keep aiming at having students do the discussing.
- Though you are not your students' peer, aim for discussing in the way you would with peers. That is, in a conversation with peers, you would not normally say "That's very good. What do other people think?" You might well say, "Oh, I never thought of that" or "I think that, too, but I heard a friend say____." You are participating in that discussion, not evaluating students' contributions.
- Show your interest in what students say. One way to express genuine interest is to be totally honest in your response, but remember to aim (over time) to respond only in your "fair share."
- You can be sure that many of the things students say will be incomplete or unclear in some way. Again, you can express genuine interest without critique just by being totally honest: "I'm not sure I understand" or "Could you say a bit more about what you mean?" or "Did you mean ____ or ____?"
- Sometimes sitting at a student desk rather than standing (or sitting) in front of the class can get students facing each other and can reduce your role as the wall off which every ball bounces. Decide, of course, what is comfortable and natural for you.
- Sometimes, recall what a student said earlier that may be more relevant now. "But wait, didn't Marta say earlier that____?" That can bring some controversy or richness and also shows that you were listening to and noticing Marta and that you're interested.
- If there's really nothing to discuss, the discussion will be boring.
- Feel free to challenge students' viewpoints and expand the debate, especially if students lean toward a collective bias. You are a participant and your ideas count, too. But remember you are one nth of the class. Don't let your automatic power as a teacher dominate more than you absolutely need in order to maintain order.
- Minimize rules that apply only to school and not to normal conversation.
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.
- We want to hear from as many people as possible. (It may make sense for students to raise their hands when they have something to say, and a facilitator - teacher or student - to write down students' names in order on the board. The students then know what order in which to speak, don't have to keep their hands raised, and the facilitator doesn't have to interrupt to call on people. In this case, it might also help to have a special sign students can make for when they would urgently like to respond to a comment, though this should be used sparingly.)
- We will be discussing sensitive topics; we should treat all contributions with respect. We also know that people's views can change or may not come across as they intended, so we won't jump to conclusions about people's views from their short contributions here.
- We want to keep a spirit of inquiry during discussion; this is not the time to insist on being "right."
- We want to acknowledge each other's contributions and speak to each other, addressing each other by name.
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.
- Think (give a moment to think first), pair (let students talk with one other student before being asked to speak publically), share (with the whole class)
- Encourage leadership (ask the most vocal participants, at a discreet time, what they think might encourage others to speak more and how they might support the learning community)
- Look up Danielson's "accountable talk" and adapt ideas for yourself
- Have students role play: "Ok, you're a Google executive and you're a privacy advocate — argue your side of the data collection debate"
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:
In both of the in-person Number Guessing Game and the Guess My Word games, be animated about the halving process after each clue.
- First, play a round or two of the Number Guessing Game in small groups or as a class.
- Then, play a round of 'Guess My Word.' One person selects a (perhaps random) word from a dictionary, and the other person tries to find that word in the dictionary by selecting a word about halfway through the possibilities left and asking if the chosen word is before or after.
Then, have a class discussion:
Emphasize how the previous guess becomes the new upper bound or lower bound for the new range of possibilities.
- How were we making our guesses?
- What did we do with the information received (such as "no, the number I'm thinking of is lower", or "no, my word comes after that")?
- Then introduce the idea of writing out an algorithm in regular words (e.g. "prompt the user to pick a number within the range"). Provide chart paper to each group if available.
- Encourage students to record the bounds of the range and the number guessed on paper in a new row of a table to help keep track of their algorithm-testing process and to communicate their progress with their group-mates.
- After a group has established a successful algorithm, they can write the pseudocode (also on chart paper). Ask students to write instructions for the computer this time. Their syntax will likely mimic the programming language(s) with which they are most familiar (e.g. Snap!), but they should not be held to this as a constraint.
- As the very last step, they can code the algorithm in Snap!. If all goes well, the time spent programming in Snap! will be significantly less than the time spent building the algorithm offline as the majority of the debugging will already have been done on paper.