As we continue to have conversations about coding in schools I routinely am asked where to start. I usually mention an app or two but I always question whether this is the right approach – many students already have a more natural understanding of coding than their teachers and I know nothing about someones’s skill level. I know nothing of someone’s experience. This makes it difficult to suggest a starting point when it comes to apps and entire groups of students. I hate to say “Let your entire class play LightBot for starters”. Where is the differentiation?
Starting day, I would like to share a new model I have created – #BOSC.
B – Bot Coding
Under Bot coding, teachers and students learn about block code. They run through games and tutorials to move objects from one point to another to complete a task. Levels are scripted, there is no open space, just a linked set of block code instructions to move a bot. A great place to model math concepts like estimating distance and moving across a grid.
O – Open Space Coding
In this category, coders are familiar with block code and understand how to link it. Using tools like ScratchJr., Hopscotch and Scratch coders can use block code to create games, stories and simulations. Possibilities are endless but coding modules are limited to the functions within the app itself.
S – Syntax Coding
Like Open Space Coding, users start with a blank slate and begin to think critically, solve problems and code applications using syntax. Coders at this level are learning language. The “Hello World” program you would learn in your first CS class. In a nutshell, similar to above but writing syntax instead of block yielding many more opportunities for creativity.
C – Collaborative Coding
Coders in this level have a firm understanding of syntax, computational thinking and logical reasoning. Coders at this level use existing frameworks and APIs to make improvements to existing applications. Coders at this level make use of open source and build applications. The Coder Ninja.
Please share the visuals below and as always, feel free to comment.
You have outlined a very logical progression. I question the need for using languages that require rigorous syntax. I would suggest it is possible to understand the concepts of programming without having to deal with the issues created by needing to create syntactically correct code. Will the use of text to create code become extinct? I’m not sure anyone predicted the abundance of “GUI” programming environments (except perhaps Seymour Papert). The tools that professional programmers are using must be evolving. Perhaps the use of text (syntax) should be, at the present time, limited to senior high school courses to introduce to those students who might continue with future CS education?
I would suggest collaborative coding not be the end goal but something that is incorporated into each stage. My definition of collaborative coding is creating code together. What you are suggesting by collaborative coding might be better renamed? Perhaps “Applications”?
I commend you for your efforts in developing coding for kids.
I agree with much of the comments from Peter. I really think collaboration, group/pair programming should be done early and often throughout the process. There’s nothing that can stifle the process than working by yourself and hitting the wall.
One of the concerns that the graph could pose to some, particularly new to the concept, is the abundance of programming languages that you’d identified. Do I have to teach them all?
I’d suggest a good look at TouchDevelop as a solution. It supports block programming, simple text coding, and advanced text coding on virtually any platform.
One of the complaints that I have with some of the applications that are developed for education is the lack of internal documentation. Without comments, reusing code or remixing code becomes pretty difficult. I think that’s a significant pedagogical consideration. When you look to help a student, or a group of students work together, no documentation can be a time waster.
Where do you see these graphics going?
In my mind, collaboration is at the local level for most of this (group / pair), but becomes global in the final stage. I think you touch upon that with internal documentation.
TouchDevelop is a great resource, thank you for the reminder. Like Robot School it is blocky but offers syntax.
Re: graphics – I am trying to internalize the “how do I start coding without a curriculum?” questions I now get almost daily. I just think many need a reference point. I can no longer be happy with “Try LightBot since you teach grade 2” which has been my answer for sometime now. Those new to coding are so far removed from it that suggesting an app is not suffice. I am not content with that as it doesn’t consider the “why”. What is the next step and why the blanketed approach and whole group teaching? LightBot is great for many grade 2s but I am not content to suggest it for all. I need a model as a reference point.
I appreciate the feedback. More for me to consider.
Brian, my reply is in response to your comment to Doug. I don’t think that we need a curriculum to start coding. I think that we need to instead understand how coding best meets our varied curriculum expectations. As a Grade 1 teacher, what I want out of coding for my students (to meet my desired expectations) may vary from what they’re actually able to do. I see coding like a language, and I wonder the impact on successful coding if students are struggling in language. Where might they hit a wall? How can we support them when they do (or what can they do to problem solve on their own)? What basic language skills do they need to solve these problems? What are the basic language skills that they need to continue with having greater success as they code?
Thanks for giving me so much to think about!
Aviva
I also agree with comments by Peter and Doug. Text based programming languages may be best left to secondary CS and engineering courses once the students are comfortable with logic and basic programming structures. I have used Scratch and gameMaker as starting points in grade 10 and 11 programming course as it helps them focus more on logic and programming structures and less on learning a text based language. And as SDKs and programming languages evolve I think it is beneficial for CS students to be familiar with text based and visual languages.
I would argue that all programming languages have some syntax (set of rules). Even visual languages like Lego and Scratch have their own syntax as the puzzle block pieces only fit together based on programming structure. Learning any programming language will involve learning a set of rules and I believe the MIT developers have taken child development into consideration as they developed Alice, Scratch , scratchJR , etc syntax. Perhaps non CS educators just need guidance in term of which platform/SDK is suitable based on child development and purpose in the classroom. You have provided examples and I think teachers appreciate that. I don’t think a continuum makes sense but perhaps platform examples by division and purpose.
Collaboration and working in teams is something that could be happening for beginner programmers including K-8 students. I wouldn’t put this as a separate concept on the continuum. I think collaboration and teamwork could be taught as part of any basic design process.
Hi Michelle. Thank you for the comment. Please remember that I teach elementary school and we have no CS curriculum so it is rather difficult to decide who gets what in terms of block vs. syntax. I have grade 8s writing syntax and using block, depending on the task – which fits our curriculum (math, LA, science, dance, drama, phys ed, health, geography, history etc.). Coding is another way to demonstrate understanding of concepts in other curriculum areas, not CS. We can’t and don’t assess coding or one’s ability to code. Without a reference point, it will never happen in K-8.
With respect to the non CS educators you mention, that’s pretty well everyone at the elementary level. Imagine throwing an art teacher into foreign languages and told to teach it. I get asked “where to start” almost daily so I think the continuum fits for the non CS people. I hate to group students by division over skill. We have expert grade 4 coders and novice grade 7 coders, for example. If grade 6s want to try coding for the first time, LightBot is a great place – similarly with grade 1. I feel the skill level trumps the age group for us.
I never considered block code as having syntax but I think you are on to something there. Thanks for sharing that.
As for the collaboration bit, like I said before – I agree it happens at every stage but really isn’t global until the end. That to me is the difference. Our grade 2s are not using APIs and frameworks but they are working together on their bot programs!