top

Home page for Blocks to Text

View the Project on GitHub blocks-to-text/top

Blocks to Text

Transitioning from blocks to text involves developing multiple distinct but equally important skills, and isn’t a single smooth transition. Students will need to develop their typing and literacy, learn about computers & file systems, improve their computational thinking skills, and build an understanding of dynamic program behavior, just to name a few.

Helping your students navigate this transition will take some planning but isn’t an impossible task, and doesn’t require you to be an expert programmer yourself. There are a few things you can keep in mind that will help manage expectations and smooth the journey.

Index:


The Transition

Transitioning from beginner programming environments (Scratch, Turtle drawings, Blockly, …) to more “authentic” programming is not really about the blocks. The most important change students need to master is going from programming animations to programming the computer directly.

Learning environments like Scratch or Turtle drawings show students their code and the final animated result, but leave a black box when it comes to how the coded instructions are interpreted and how the programs manage state over time.

Guiding your students to programming the machine directly is a process of removing analogies and black boxes, replacing them with level-appropriate (but correct) understandings of how computers and programming languages work. Whether students write their code with letters or blocks is not actually important.

TOP


Isolate the Notional Machine

Guiding student’s attention to the computer itself doesn’t require a deep dive into compiler design or hardware. It’s enough to teach a series of visualizations, diagrams, refactoring techniques, and vocabulary that are accurate but manageable for students.

This combination of skills makes up a student’s notional machine: their understanding of how the computer interprets and executes a program. Explicitly teaching a notional machine for your programming language will give students a common vocabulary for talking about what they are learning, and will help them avoid understanding their programs by analogy.

This skill goes beyond just writing working code, it will also help your students to develop their algorithmic skills by making it easier for them to distinguish between flaws in logic and flaws in implementation. Often what looks like difficulty with problem solving is actually a poor understanding of the programming language.

TOP


Ease into Text

It’s easy to overlook that coding with text requires a high level of literacy, programming is one of the most exacting forms of writing. Students not only need to spell words exactly right, but also need to format perfectly and are expected to use a wide variety of characters that never appear in every-day life.

Working with existing code is also an extreme form of reading. Students need to understand what the code is supposed to do according to the programmer’s intentions, figure out what the interpreter will actually do, and modify the text to have new behavior without interfering with what already exists. This requires a level of pattern recognition and attention to detail in spelling & format that is simply not expected elsewhere.

Focusing on typing skills, using word processors in other classes, studying code as a text without executing it, and playing off-line games that involve reading and writing pseudo-code can go a long way towards preparing students to write code from scratch.

TOP


Transitional Learning Environments

Choosing the right programming language and environment is one of the most important decisions you make. It’s possible to come up with new projects and lessons on the fly, but it is very disruptive for your students’ learning to change languages or environments partway through a course.

You know your students, what are they ready for? what would be most engaging for them? The transition from beginner environments to full text-based programming isn’t one skill and one step. Choosing an environment that matches your students’ current levels and interests is key.

Making the right choice will involve determining which of the skills you want to address (text? notional machine? computational thinking?) and the types of projects that will be most effective for your students (visual? investigative?). The different environments provide more or less support for different skills and project types.

TOP


Prepare to Teach

Doing and teaching are different skills. Studying code to teach is not the same as studying code to program. You will need to learn to code a bit yourself, but more imprtanlty you’ll need to learn what concepts and skills are most challenging for novices and how to teach them. This is called Pedagogical Content Knowledge - knowing how to teach a thing not, not just do it.

Helping your students transition to full-on programming can take a bit of preparation You’ll need to familiarize yourself with your students’ programming language & environment, create exercises & projects, and ideally figure out how to integrate programming with other subjects your students are learning. Knowing the environment and langauge from your student’s perspective will allow you to make the best exercisees and projects.

Fortunately some of the most effective programming exercises are also the easiest to prepare, with a little modification you can turn your own practice scripts into a series of exercises that you already know inside and out.

Unfortunately, programming outside of Turtle drawings or Scratch is not as immediately rewarding for students. A working program no longer result in an engaging animation or game. This creates for you the challenge (and opportunity!) of integrating programming into other subjects, treating it less as a separate subject and more like the applied & embedded skill that it is outside of school.

TOP


Diapos pour Sett Namur

Programmation : de la souris au clavier, une transition en douceur

Les environnements de programmation visuelle, tels que Scratch ou encore Blockly, constituent des outils prècieux pour s’initier à la logique de programmation. Cependant, ils ne permettent pas tout. Tout programmeur en herbe qui persévère sur cette voie doit tôt ou tard faire la transition vers des environnements de programmation plus professionnels, permettant d’écrire des lignes de codes compréhensibles par une machine.

Tout en conservant les techniques d’apprentissage intuitives et visuelles propres aux environnements de programmation visuelle, l’attention des étudiants doit très vite être portée sur les interactions avec la machine notionnelle, et non sur les seules techniques de résolution de problèmes complexes.

Présenté au conference Sett Namur 2019.

TOP



Blocks to Text