CIF Strategies for the CS Classroom
The Common Instructional Framework, or CIF, is a framework for incorporating effective instruction strategies in the classroom. This framework was developed by the Early College High School Initiative to support students who in their transition between high school and college courses. Within this framework we can find specific strategies and techniques that can be implemented in the classroom. The strategies can be found in a book called The Little Itty Bitty Book of CIF. These strategies & techniques can be applied to any class but most of the examples out there are for core classes like math, history, and language classes. How can we implement these strategies in the CS classroom?
Let’s start by breaking down the overarching themes of the strategies. They are:
- Collaborative Group Work
- Writing to Learn
- Scaffolding
- Questioning
- Classroom Talk
- Literacy Groups
Each strategy falls under at least one of these groups, usually more. All of them can be used as formative assessments to see how students are progressing through the class without the pressure of being graded (besides a completion grade). The original source contains 155 different strategies but we will only cover a few here to get an idea of how to apply them in a CS classroom.
Quiz-Quiz-Trade
This is one of the easier strategies to implement in CS. Basically, students formulate their own problems and exchange them with other classmates. This engages students in higher-order thinking (creating the problem) and mid- to lower-level thinking (applying previous knowledge to solve the problem) depending on the problem. A good example of this is asking students to create a conditional statement or two using variables or values you provide as the instructor. It can be as simple as the following: You have 2 integer variables and 1 boolean variable. Create an if-else statement using those variables. Students will come up with various different ways of incorporating the variables in their conditional statements. Maybe they’ll add them up and compare them to a certain value or simply compare both of them.
There are quite a lot of combinations and possibilities for using these variables in a conditional. The important thing is to keep the prompts short and concise without much overhead. Instead of simply telling students “write a program, then exchange it with a classmate and determine the output”, be as specific as you can. The previous example is too vague which will lead to a wide range of difficulty in programs instead of focusing on the current concept being taught. Provide specific instructions such as “using 3 integers, write a program using conditional statements to compare these integers with each other or other values”. Instructions like these are specific enough that students have an idea of what to do but not so specific that everyone creates the same program. It allows students to focus on the particular topic at hand instead of bogging down on other topics.
Code Bingo
Vocabulary bingo is a good review activity for language classes which can be incorporated into the CS classroom. Each student gets a bingo card with a collection of outputs or values. As the teacher, we write actual code on the board and let students trace it to determine if the output of the given code is in their card. This activity resembles quiz-quiz-trade but relies more on code tracing than on constructing the problems. If we want to still include the problem creation process, simply ask the students in a previous class to make their own code snippets and outputs, then use them to create the bingo cards. We could even use the code snippets from the previous activity and incorporate them into this one at a later date to see how much students have learned. Or take snippets from the student’s own work and incorporate it into the bingo cards.
Regardless of which method we use, this activity offers a great opportunity to build syntax literacy for the particular programming language used in the class while also reinforcing current topics. One set of bingo cards can be about if statements and conditionals. Another can be about loops and iteration. And yet another can be about classes & objects. Or a combination of various topics. After covering the topic and students complete the related assignments, these bingo cards can be used as reviews.
Get Computing Macroxela’s stories in your inbox
Join Medium for free to get updates from this writer.
Interactive Notebook
You might be thinking “why use an interactive notebook? Isn’t computer science solely about using computers?” While computer science is about computers, there’s more to it than just that. Computer science is about solving computational problems independent of the language. The programming language is simply a tool to express the solution to such problems. Thus the solutions and problem solving techniques can be recorded in written form. An interactive notebook can be used to store code snippets that represent common code structures (loops, conditionals, functions, etc.), vocabulary words, and programming concepts (recursion, inheritance, polymorphism).
After every lesson, they can record some samples of the topic along with a quick explanation of what the concept is. This is a good way of collecting student’s thoughts in a way they can reference later on when they forget something or are stuck. It also allows students to express their knowledge in ways different from just writing code. That’s an important skill to have because without being able to communicate their ideas, students will struggle to work well with others and answer questions appropriately.
Parson Puzzle
Not exactly a CIF strategy but it does resemble other similar activities like Jigsaw. The basic idea is to write a short code segment and break it up into different lines of code. Once it is broken and jumbled up, students must piece together the code again to get the desired output. Just like a jigsaw puzzle but with lines of code instead of parts of a picture. This reduces the cognitive load by not requiring students to remember the specific programming language syntax but still exposes them to it, allowing them to passively learn the syntax while focusing on the procedural logic. This is a good way of practicing concepts such as the order of if — else if — else statements, loop structure, as well as the scope of variables in the code. All that is required for this activity is simply printing out various programs and cutting them up line by line.
Telephone Line
The basic premise of the telephone line is to start with a question which one student provides an answer to and then other students build upon it. Like a game of telephone but making sure that more information is added by every student. This is more commonly used in math classrooms where each student writes down a single step to solving an equation before passing it along. In this case though, students will take turns writing down an individual line of code. We can use the same coding problems as would be typically assigned but ask students to solve them in groups or pairs using this method. Students have to read code which they did not implement, understand what it does & what the problem is asking, then add to that solution. We can think of this like pair programming but with students constantly taking turns writing down the code.
Evaluation Rotation
This strategy is typically used to review rough drafts of essays. Students are placed in groups of 3 or 4 and asked to review each other’s drafts. Typically, each student focuses on a specific technique or aspect to evaluate. After evaluating the drafts, they rotate them between each other and repeat the process until all drafts have been evaluated. The same can be applied to code. It would function like actual code reviews used in real programming jobs. Each student handwrites their solution then take turns reviewing certain aspects of the code. One may focus on syntax errors. The other may focus on logical errors. Another may focus on readability. This strategy helps students build their code tracing skills, internalize their syntax knowledge, and teaches them how to provide feedback.
Prescribed Solution
The idea behind this is to give a general problem to students for which they need to write ‘symptoms’ the problem has i.e. a particular subproblem, structure, or requirements it shares with other similar problems. Such an example is determining the properties of a triangle which typically requires knowing a combination of its angles and sides along with a few trigonometric identities or other formulas specific to triangles. A similar idea can be applied to programming problems. You can provide various problems requiring a particular coding structure but without telling them so students need to figure out what makes these problems require such structure. For example, you can give students problems requiring the use of lists. They will identify that some of them require loops (like searching and sorting) while others do not (recalling specific positions or appending at beginning/end).
Sort it Out
The name states exactly what this activity does, sort something into specific categories. We can use this to categorize problems according to common structures they have or tools used to solve them. This activity can actually go hand-in-hand with the prescribed solution activity. Once students have identified the symptoms of certain problems, they can be given a variety of other problems which they need to categorize according to their symptoms. Such activity helps students identify the proper tools they will need to solve problems. Perhaps whenever they see lists or arrays it will most likely require for loops. Or whenever they see a problem that requires repetition in which only the stopping condition is known they will identify it as a problem requiring while loops. This helps students build an intuition of what works with specific kinds of problems.
These are just a few examples of implementing CIF strategies in the CS classroom. With some minor adjustments, most CIF strategies can be adjusted to work in programming and computing classes.
[1] Common Instructional Framework. https://www.theprincipalsplaybook.com/educational-leadership/common-instructional-framework-common-instructional-languageexpectations
[2] The Little Itty Book of the CIF. https://hannatli.weebly.com/uploads/1/8/8/3/18838262/not_so_itty_bitty_book_of_the_cif.pdf
[3] The Common Instructional Framework: Rubrics and Support Guides for Teachers. https://apps.esc1.net/ProfessionalDevelopment/uploads/WKDocs/64737/ECDS_CIFrubric_STUDENTS_080712.pdf




