In my last article, I discussed how to differentiate CS content by using visuals, unplugged activities, and making short videos like live-coding demos. In this article, I am going to talk about how to differentiate the process of learning computer science.
Process is about how they are learning. The traditional way of teaching is to front-load students with all the necessary information and students should be able to complete the assigned activity. But does this process reflect how the real-world works? Or does it meet the needs of all students?
Computer science is one of the subjects that’s really easy to make a project-based classroom; students will almost immediately apply what they’ve learned and turn it into a product. Project-Based Learning, or PBL for short, is the latest trend in education. According to pblworks.org, “Project Based Learning (PBL) is a teaching method in which students learn by actively engaging in real-world and personally meaningful projects.” This type of method will allow teachers to differentiate the learning process really easily. For example, you can assign a struggling student a role that requires less coding but give them more opportunities to utilize the soft skills. Another way is that you can give students a choice on what kind of project they would like to work on.
I am a special education teacher by trade, and I learned a lot about different differentiating methods. When I was brainstorming for this article, I thought of the Response to Intervention (RTI). “RTI process begins with high-quality instruction and universal screening of all children in the general education classroom. Struggling learners are provided with interventions at increasing levels of intensity to accelerate their rate of learning” (source: http://www.rtinetwork.org/learn/what/whatisrti). RTI is usually a 3-tier model where 80-85% of students fall under tier 1; tier 2 is 10-15%, tier 3 5-10%. This applies to general education settings. CS is a fairly new subject, and most students will struggle. You will have 80-85% students who understand your material right away and are able to do the work independently, and the rest of the class usually needs a little more attention. In order to meet everyone’s needs, I use tiered activities often (even for assessments!).
You can have different checkpoints if you are building a large program, such as designing your own game. For example, students who are meeting standards can create a game with basic functions such as one Scratch sprite with movement using a keyboard and a score system. Students who are exceeding standards will include more than one sprite, score and a timer system, and use at least 2 if/then blocks. Students who are below standards can focus on just making one sprite move in a certain way.
For a simpler activity, you can create 3-4 versions that can meet students where they’re at. For example, I gave students 3 versions of while-loop code instructions:
They will all learn the concept of while-loop but students exceeding the standard will be able to complete more challenging questions while students failing to meet the standard will be able to create a basic while-loop.
Learning CS does not have to be strictly on the computer. As I mentioned in the previous article, you can do a lot of unplugged activities. Also, you can provide students manipulatives which are any hands-on materials or object to reinforce learning. If you are teaching them a block-based programming language, you can print (and laminate) the blocks. If you are teaching them a text-based language, you can cut out lines of code and have students arrange them in the correct order.
You can also get a little more creative if time allows. When you’re teaching variables, have an empty box that represents a variable, and have students put in any “values” that they come up with. As a group activity, they can complete a “mad-lib” by using variables for nouns, adjectives, etc.
Going back to the definition of differentiation, teachers can differentiate contents, processes, and products based on their students’ readiness, interest, and learning profile. “Purposeful grouping allows you to provide personalized instruction in the general education setting. It can help you design lesson plans that set up all students for success, including those struggling with particular skills from the curriculum.” (Source: RTI Success: Proven Tools and Strategies for Schools and Classrooms by Elizabeth Whitten, Ph.D., Kelli J. Esteves, Alice Woodrow, Ed.D)
Group your students based on their readiness, interest, and learning profile. For example, a project like app design would benefit the most from grouping students based on their interest. After you group them based on their interest on a certain topic/app, students who are stronger in coding can take on the role of programmer while other students can be presenters, researchers, project managers, designers or testers.
Pair programming, in a sense, is a type of grouping strategy. Usually, there is a driver and a navigator. A driver is the person at the keyboard, typing and verbalizing what they are coding. A navigator sees the big picture, guides the driver, and identifies any errors as they go. You can strategically pair the students up in homogenous or heterogeneous pairs if necessary, but students should learn the practice before getting comfortable.
This is my favorite activity to do! You can either assign a student (or yourself if you want to have fun) to be a robot. Students will feed the robot the algorithm, and they have to act it out.
In conclusion, these are only some of the ways to differentiate the CS learning process. You may or may not use all of these strategies in a lesson. Remember, you know your students best! Use whichever fits the best to your classroom!
Special Education/Computer Science high school teacher