Material for teaching basic programming concepts

Hi,

I am currently testing out and refining a concept I have been working on for teaching in elementary school using MakeCode Arcade some basics of programming, like sequence, iteration, selection, variables and functions.

The idea is to have a blank canvas and on start program entry in MakeCode, where pupils can solve different tasks for moving the duck to the water, by use of sequences of custom move blocks in the top blocks menu entry and progress together by various loops, IFs, variables and functions etc.

The underlying program is hidden in the custom.ts file, not cluttering the canvas and drawing away attention, and the obstacles(cars) are fairly easily moved around in the tilemap to make different game levels. Both the programs and the keyboard(if programmed) can be used to move the duck, and sometimes the game is developed further to something more fun and better looking.

Skillmaps and tutorials are great, and I use them in classes, too. Mostly ones that are already made. But they take a lot of time(at least for me) to make yourself, and are often a bit linear and focused more on game making than just the basics.

Anyways, I am sharing these examples here for 3 reasons:

  1. To maybe get some feedback or examples in this thread for improving this concept, or maybe you could post back similar or other different/new teaching concepts/ideas in MakeCode that you have made and tested with success in classrooms?
  2. Maybe somebody could help me on how to export/make available and use as a regular red sprite variable block the now grey mySprite inside the forever loop which is defined inside custom.ts?
  3. To give back a little to a great forum which has helped and inspired me a lot. Copy and use if and as you please.

Basic Demo blank
Basic Demo #2 with examples
Basic Demo #2 blank

Thanks a lot!

Br,
Vegard

1 Like

I think I get what you’re trying to do here. I’ve also been exploring some simplified options for early elementary. I’ve also faced the same issue that you’re facing with the grey variable.

Unfortunately, there are a few things that I can’t get to show up in the toolbox, no matter how hard I try. Those include:

  • Pre-declared variables
  • Pre-filled If statements
  • Pre-filled conditionals

What we can do is make it so that young’uns don’t need to access the sprite directly because all of the blocks make available to them already point to the predeclared sprite in question. Here’s an example of a tutorial that does that:

3 Likes

Thanks for your elaborate answer, @KIKIvsIT! It both expands the perspective on the problem and provides a nice solution and teaching concept which is relevant for this thread.

I, at about the same time as you published, found out a similar workaround, where I make custom function blocks which returns the values from or do other operations with or on the variable.

I will post that later as a share of an alternative attempt at teaching material for selection logic which I am working on now.

But this is quite restrictive for practical use, and a little confusing with different blocks for the plain standard blocks when teaching.

Maybe there is a way to forward the predefined variables as true variable blocks in custom.ts and I just don´t know about it. But that seems unnecessary, when variables are already fully supported natively, and should turn up in the variable menu when defined in the global scope.In any case, not as a grey block.

I also attempted “export default” for the variable, since it is defined in another file, but then I am told that this is not necessary, since it is already globally available. So there is something strange/incoherent with the ways blocks are picked up from text-based code only in the main.ts file. You can also define new real block variables with the same name without conflict in main.ts, even though they supposedly are in the same scope already, if I remember correctly.

I’ll cross post our common issues here on @jacqueline.russell’s Common errors?, since these apparantly are common for us at the moment, and see if this gets picked up… :wink:

1 Like

Here’s an example of some teaching material for exploring selection by use of either

  1. compound conditions in a single IF-statement, or
  2. compound and nested IF-statements with single conditions,

using one(A or B) or two(A and B) conditions:

Use the LEFT button to set condition A to TRUE and the RIGHT button to set conditon B to TRUE.
With the SPACE bare, toggle between the modes:

  1. Using LEFT and RIGHT button to explore results
  2. Truth table with FALSE/TRUE
  3. Truth table with 0/1

Here, with some common solutions for:
Compound conditions
Compound and nested IFs

Anyone else who has some of their own teaching material or concepts to share here?

1 Like

Since it’s so good, I’ll add @rymc88’s great Unofficial Makecode Educator Resource Website here myself:

Anyone else have some nice teaching material or concepts to share here?

2 Likes

@Vegz78 Thank you for bringing this back to life. I have recently updated some of my resources, so I will need to update the site. I would love to collaborate to create some great educational content for all learners.

3 Likes

Some really nice Python skillmaps from @MrDGuy!:

2 Likes

Some nice micro:bit-guides, updated link:

Originally posted by @raster here

1 Like

And how could I forget @KIKIvsIT’s corner?!?:

Originally posted here

3 Likes

@AlexK posted earlier some interesting links about teaching:
Big Book of Computing Pedagogy
Computer Science Education Research

And a lot of interesting material for teaching with Minecraft Education Edition here:

1 Like

This is also really good:

Everything You Need to Ace Computer Science and Coding in One Big Fat Notebook

2 Likes

I’d like to share a relevant and good Norwegian teacher’s site here(translated to English):
Espens klasserom - MakeCode
Espens klasserom - Minecraft

Original language and front page:

1 Like

I second this…I use it to write lessons for my CS classes.

1 Like

Here is a small correction to the logic teaching material further up, which previously did not work with arbitrary commands, only with the logic, and now has a command block to clear the screen, so that one can show, for instance, conditional logic with sprites as ad hoc examples in class, which turned out to help the students understand.

Here, also updated with some common solutions from the truth table of sentence logic for:
Compound conditions
Compound and nested IFs

1 Like

I am experiencing(as expected) some cheating when using various MakeCode teaching material in a classroom setting. For instance, as described here:

Does any of the other educators here in the Educator’s Lounge have some successful anti-cheat measures to share?
(Preferably code-based/technological anti-cheats, but organizational could also help…)

1 Like

What teaching material are you using?

I mostly make my own tailored Google Classroom courses, with combinations of theory and coding challenges/tasks, either as an application or a part of another subject(typically STEM) or for basic programming skills at elementary/jr.high levels.

My core idea is to use MakeCode for coding across different editors(Arcade, micro:bit, EV3, Minecraft etc.), since the user interface and basic language is similar for all, to avoid the threshold og switching to slightly new languages and systems all the time. And I also find it useful to be able to switch seamlessly between text and block based coding, though does not work as well with Python as JavaScript.

My goal is to work with teachers and schools to help implement, build and support teaching material, competence, local teacher groups/environments and regional networks and cooperation to strengthen programming in schools in general. But in a way where the school become self driven, more robust with its own ownership of this, and not having to rely on people like me or other expensive consultants, licenses or equipment.

Currently, I am battle testing my concepts directly on students, together with other teachers.

The programming parts are partly developed from my own ideas and inspired by the MakeCode or other communities, like this thread topic is about, but also ported partly or in whole to MakeCode from the school’s own teaching books/material or wherever I find good stuff(good tutorials on front pages here or shared in the forums). For instance, many teaching books have good coding examples, but they are solved on many different and proprietary languages and systems, which teachers and pupils then instead can solve in MakeCode which they already know, instead og wasting time on these switching thresholds.

I used Makecode for all of my CS classes because of the ecosystem. It gives you different ways to approaching programming but keeping the interface the same, which gives you more time on programming instruction.

I love your goal as I am interested in creating my more Makecode resources and instructional materials.

The student copying issues is something every class faces. From my teaching experience the way I counteracted this by creating open-ended problem or project based assessment that would incorporate all skills taught in a certain unit.

2 Likes

For the first case of cheating - just copying the solution on tasks where I find it beneficial to publish the solution as hints/inspiration - I have found that inserting visual similar characters/homoglyphs in the code or comments, either just to reveal copy cheating, or with a control function that renders and error in the copied code, to be effective…
https://security.stackexchange.com/a/128465

Regarding just copying other students, your experience with open-ended problems or project based assessments seems to be the way to go. Thanks for the tip!