Reading and writing code depend upon students fully understanding foundational concepts [13]. Misconceptions come from students prior knowledge - not a lack of knowledge [2]. If teachers do not instruct on how to use a concept, students will create a faulty connection to what they know from language, Mathematics, or human interactions [1].
CS teachers should introduce a new concept with example programs, point out common misconceptions, show the concept in a variety of examples, and highlight the syntax of the code [13]. Analogies, although powerful in creating a mental image of an abstract concept, must be used with caution as they might create misconceptions of their own.
Vocabulary and phonics instruction are proven to improve reading comprehension. Phonics instruction helps EMLs connect letter patterns to sounds. Students who have learned to read in their native language will understand this concept, but need explicit instruction in how to do this in the new language. It is important to keep in mind that not all EMLs have had formal schooling in their first language. Teachers can help students learn new words by introducing a new word with a student-friendly definition, its homonyms, synonyms, blends, silent letters, and connecting vocab to prior knowledge in the L1 and target language [8] [9].
Cognates are words that sound similar in the first and target language, however, they should be used cautiously, as there are many false cognates that could create misconceptions [12].
PRIMM
(Predict. Run. Investivigate. Modify. Make.)
Students examine code and write/draw/vocalize predictions before
running the code. Then, the teacher walks students through a series
of premeditated questions to help investigate the code. Students
never copy the code (this practice leads to errors). Instead, they
are given a copy of the code to run or modify. Eventually, they are
tasked to make their own code on the newly learned concept [5].
TIPP&SEE (Title. Instructions. Purpose. Play. Sprites. Events. Explore) is a similar code reading & writing model that walks students through making predictions about Scratch projects. TIPP&SEE has shown to improve code reading comprehension [4].
Before reading a text, engage EMLs with decoding the structure of the text. Point out the headings, images, glossary, captions, maps, bold print, and bullets [11]. Ask students to scan the text to look for vocabulary words, signal words, and key information [11].
Read small chunks of text aloud and then pause to help students process the information. Ask open-ended questions or have students sequence information [8]. Use simple language to ask students literal, interpretive, and applied level questions about the text [8].
Provide students with excellent code examples that have been commented to define parts of the code. Adding comments to code will make it easier for the students to decode. Similar examples with pieces of missing code can be given for students to complete while they use the worked example as a reference [6].
Reduce the cognitive load of EMLs in reading, writing, speaking, or listening by giving students partial sentences for them to fill in the blanks. This allows students to focus on the vocabulary or content being taught. This can be further scaffolded with the use of a word bank [10].
Use exemplars to show students a quality piece of writing. Explain why the writing is excellent, show multiple exemplars, and ask students to modify parts of it. Finally, have students write independently with the exemplars as a reference [14].
Parsons Problems are mixed up lines of code that students must put back in the correct order. This strategy reduces the cognitive load of writing code from scratch. Distractors, lines of code that are incorrect, can be added to ease out of the scaffold. Younger learners have a more difficult time with distractors [3].
Reading or listening comprehension can be assessed by using mixed up sentence strips that ask the student to put the story back in the correct order [8]. This strategy reduces the cognitive load of having to find all the words to retell a story.
This strategy can be used effectively in Math or Science to tell the order of steps to solve a problem.
Instead of jumping right into reading or writing code, scan your lesson for concepts and vocabulary that will not be familiar to students and EMLs. This is especially important in high school where CS teachers don't often teach level 1 words (wire, keyboard). Explicitly teach the syntax of the text-based language and learn the names of the keyboard symbols of your students' L1.
Teach students how to read the program description, code task problem, or initial code comments. Ask them to look for signal words that relate to computer science concepts so they can predict what will be in the code. Break the code reading process down into small, manageable chunks and ask students to annotate code with comments in their L1 or English. Use sentence starters and frames when asking students to make predictions about code so EMLs can focus on the concept rather than finding words to express a complete sentence surrounding the concept.
PRIMM & TIPSEE are examples of the "Use Modify Create" philosophy of allowing students to become increasingly familiar with a new concept before using it on their own without support. This philosophy should be applied to both code writing and other forms of writing in the classroom. For example, students could write daily or end of project reflections. Show students a few exemplar reflections and ask for suggestions of how it could be modified before sending them off to write independently.