This post was originally written Fall 2017 for CS 61A staff, which leans more towards learning problem-solving skills.
The purpose of discussion and mentoring sections is to provide a space for students to recognize patterns and build more robust mental models by solving more problems without a computer. To achieve this broad goal, we’d like for students to spend time thinking critically about not only the concepts themselves, but their perceptions and understanding of the material. In discussion and mentoring, students have a unique opportunity to get hands on with problems while still in the safety of your guidance.
Here are a few universal principles that encompass the majority of the feedback I give to teachers.
Focus on Ideas
- Design lessons around ideas. Before showing how to solve a problem, present the intuition and ideas in plain English. Better yet, come up with a more general approach, write it on the board, and have students take a stab at problems with the most general instructions in mind so they can compare their application of the general rules to your intuition.
- Don’t let the worksheet shackle your ideas. Your ideas, wisdom, and experience comes first and foremost. Share what’s really important (to you!) with students. The worksheet questions only serve to provide structure to help guide the experience. (It is still a good idea to follow the worksheet where you can, however! If you wish to forgo parts, come up with alternative material to replace it!)
- When polling for responses, ask students for their ideas in plain English. Asking for “the answer” often results in a confident student spelling out their code to you, which is not only hard for students to decipher but often just as difficult for you to understand and leaves the classroom in a pretty barren state. Encouraging students to respond in plain English helps make sure ideas are clearly communicated and outlines the more general strategy behind a problem. It also helps encourage students who don’t necessarily have the complete answer to share their ideas.
- Deflect unproductive questions. While it might be said that “there are no bad questions”, there most certainly exist unproductive questions. A good rule of thumb is that you should strive to say only things that help (most) everyone in section. Usually, focusing on the ideas will help shift the concern and focus from the minutiae of the code to the larger ideas at work, so hopefully you won’t need to pull this trick out too often. But if you do, you can respond to these questions by saying, “That’s a great question, but I won’t answer it,” or “That’s a great question; talk to me about it after class.”
- Encourage incremental progress. Encourage students who push the discussion one step forward. It’s often more useful to explore the solution process step-by-step, instead of focusing on the solution, so everyone can learn the general process for solving problems. Everyone can look up the solutions, but our job is to leave students in a place where they can come up with the intuition or steps to develop that solution.
- Be careful with slides. Ideas are often diluted or split piecemeal. With environment diagram presentations, for example, all the details are split across several slides making it difficult to see the full picture. In addition, many students instinctively zone out when the slides go up and slides tend to be like kryptonite to teachers: it makes them move slowly and boring, and removes a lot of interactivity from the lesson. If you like using slides, make sure that you have a plan for keeping attention up throughout the presentation and that the information is all sufficiently laid out on any one slide. Think of it as a digital whiteboard, rather than a presentation.
Communicate Intentions Clearly
- Make your expectations and classroom decisions explicit, but also explain why. “In this discussion section, we will rarely ever cover all the problems. Why? Because I care more about the process of solving problems, and I prefer depth over breadth. You’ll have plenty of time to practice and review before the exam, but the time we spend here is short, so I’d like to impart my most important wisdom with you.”
- Give clear and precise instructions. Don’t half-heartedly say, “Work with your neighbor if you want to,” but instead say, “Turn to the person next to you and share what you have so far.” Use physical cues, gestures, and act out what you’d like students to do.
- Clearly define the transitions and boundaries between activities. Don’t allow students to talk over you! What you say is important! Otherwise, you wouldn’t be saying it! Build a repertoire or develop an activity with them such that you don’t need to shout at them to get their attention.
- Commit to your decisions. Don’t hesitate or back out of an activity halfway, or go in with 50% energy. Put your all into it and the students will follow without fail, no matter how ridiculous your request is (for the most part, at least).
- Understand your unconscious biases and choose your words wisely. We might not necessarily realize it, but we often have unconscious biases, or implicit prejudices, toward others that manifest in unusual ways while teaching. For example, we might unconsciously pick on certain students over other students which could make other students feel excluded. Be consistent in how you address students and their questions, in particular. Students notice. There are also more explicit biases in the words we choose, but be aware of unconscious biases by asking for feedback from other teachers.
Develop a Teaching Persona
- Be charismatic. It is better than being uncharismatic.
- Develop a personal style. Some teachers have a style that is more calm and focused, while others prefer high-energy, and there’s plenty of variance and mixing in between. Everything flows better and you’ll find your most natural voice come out when you assume your teaching role. Together with ample practice and an experienced eye for students, you’ll always know what to do next because you’ll know what the teacher you’re imagining would do.
- Modulate your voice, body language, and behavior for good effect. Use your voice and body to highlight the important details. If you normally move quickly, slow down for dramatic effect and you will get students’ attention. If you normally move at a measured pace, consider modulating your voice to demand attention. Control the physical space of the room. You are the section leader; do not hide.
- Teach your own way. You don’t have to copy someone else, or even necessarily teach the same material as everyone else. You have the power to do what you want with your section, within reason, of course. Find what works well with your students, what they appreciate, and put a personal spin on it. I like being a little bit theatrical in section but find something that works with you.
- Make section fun.
Preparation and Organization
When preparing for section, plan out transitions between questions so they’re seamless. Consider writing the next question on the board while students are working on the current problem is a good tactic, but consider the opportunity cost because you could instead be spending that time working with students directly.
Experiment with having students work independently at various points and also working together on paper or at the board. Think, pair, share is a great learning technique, with the caveat that students might need some help getting started with a problem for the “thinking” portion to be effective. Students who are more behind often try to solve the problem but don’t know where to start. It’s helpful to put questions to ponder on the board while they’re working so they have something to work on and make progress towards even if they don’t have the full picture just yet. Include things to look for in a problem and guiding questions that you ask to yourself when working on a problem. Help them build intuition for coming up with these questions on their own in the future.
Before the first session, reach out with emails and check-in with them so they’re more comfortable with talking to you. Break the talking barrier the first day: it’s hard to break the ice after three sessions. Get started early, and make it both your goal (and a goal for the students) to get to know the other students in the section. Even if you have difficulty remembering students’ names, just showing the attempt is often good enough.
The best teachers combine the specifics of solving a problem at hand together with exposing ‘concrete intuition’ and steps that help in solving more general instances of the problem. We’re all very talented at explaining solutions and providing effective walkthroughs, but that doesn’t necessarily teach students how to solve problems independently, particularly freshmen who aren’t as experienced in metacognition and generalizing from your walkthroughs.
Because our time with students is extremely limited, we’d like to leave students with skills for tackling problems instead of getting through all the problems on the worksheet. We can use the problems on the worksheet as a guide for exposing the bigger problems and patterns we’d ultimately like to teach students. Make sure to communicate this expectation clearly to students so they know what to expect and how to learn computer science effectively.
Studies have shown that students ask better, directed questions and monitor their own progress through a problem better by having a concrete framework and set of steps to follow. Our job as instructors is to provide a more detailed application of some of the trickier concepts in the course in the framework of a generalizable problem-solving strategy. With recursion, for example, we might want to:
- Ask questions that pertain to the idea of functional abstraction, for example, when reinterpreting the problem prompt. What are the inputs and outputs to this function?
- After having first identified that the problem is solved recursively from reinterpreting the problem prompt, search for analogous problems by recalling the fibonacci sequence or recursive factorial examples from lecture, or other examples from lab.
- Take the analogous problem and adapt the solution by identifying its constituent parts, the role of those parts, and the kind of adjustments that will be necessary. The oft-repeated three parts of recursion might fit in here.
- Then evaluate the solution by thinking like Python and asking increasingly specific questions that expose problems with the current implementation. Step through and verify the solution by first executing the base case, verifying correctness; then executing the next larger case, verifying correctness; and so forth.