So catch me up on what is the latest at Microsoft and education?

Microsoft is currently getting TEALS out of the staffing business, MakeCode Arcade is ramping up, Minecraft Education seems to be holding steady over the years, and VS Code for Education is the latest. 4 organizations at Microsoft.

Anyone know the relationships? Does anyone know the future direction of Microsoft?

Kiki vs IT just told me Computational Thinking is deprecated. So what is our goal now?

I am guessing we will use MakeCode Arcade for a semester then go to VS Code for Education of a second semester. That is what I would try to do. I have not been using MakeCode Arcade for Python because some students take the class specifically to learn Python.

Insider information?

MakeCode and VS Code for Education are made by the same team, i work on both :slight_smile: We also work with Minecraft education as we’re hosted in game Minecraft Education Setup for MakeCode

2 Likes

Minecraft Education is still a paid subscription. Do me a favor and remind them about IBM and Google.

Joey’s right. VSCode EDU and MakeCode are like brother and sister. We’re working on a pathway of sorts that leads students from blocks in the web through to VS Code with Python. They can be used together or separately, and all are free.

Personally, here are my recommendations, but you’ll know your class best, so definitely tailor to what makes you happy:

  1. Pre high school: Code a carnival
    This is a fun, modular, maker-style curriculum that provides a lot of freedom for the educator or afterschool facilitator. Great for courses who are doing here-and-there CS/STEM.

  2. High School Entry-Level
    I’m working pretty hard to get Intro to CS with MakeCode Arcade in top shape right now. @AlexK co-wrote that curriculum and is also still working very hard on it. The first semester is blocks and the second semester is text. It’s scheduled for a pretty big improvement next year, so if you have feedback for us, please let us know!

  3. High School Second-Term (or Second Year)
    VSCode Edu. This can be done as a term, a year, or even activities here and there. The big benefit of this is that it teaches students to use a valuable IDE while maintaining the step-by-step maneuverability of tutorials.

  4. High School AP
    We also have an Advanced Placement CS course with Arcade. This covers more than just coding, and gets students college credit

Except for Code a Carnival, these do all require GitHub Educator Verification to help keep the answer keys and assessments safe. But, once that’s been done, you can teach them all together or separately at will :slight_smile:

1 Like

Thank you for that. Many schools are planning next year now and TEALS has left us hanging. My fear right now is that schools are not going to schedule CS because all they know as of now is that they are on their own.

if you have feedback for us, please let us know!

Be careful what you ask for. I have plenty to say about these things.

1 Like

Trust me, we’ve been reading it!

@AlexK and I will be rewriting some things so feel free to add thoughts here. We can’t promise to do all of them, but we can at least take time to digest it :slight_smile:

For teachers that suddenly find themselves on their own in this area, we’re going to be putting together async trainings, online conferences, and cohorts, so please keep following the TEALS channel for more. Also, please send friends to the link below if they need a helping hand.

1 Like

The top of the mind at the moment are unit project recommendations. I think I have mentioned this before.

Unit 2 Events, variables, conditions

In the student guide we recommend 3 projects. Two of them, Arkanoid and Mastermind, are better with loops and arrays. I don’t like setting them up to bite off more than they can chew. Can it be done without loops and arrays, I think so. But I don’t see them debugging that kind of code into something that works. Students will require more face to face time than we have.

Unit 3 Loops, arrays

Recommended projects here are Space Invaders, Wumpus, and Fashion Show.

Space Invaders have a problem they need to overcome. How to keep a group of sprites together as it moves back and forth. That requires a flag/semaphore kind of thing. A student guide that explains that is probably good enough. However, arrays are not really needed at all.

Wumpus is usually done as a text game. The version here is on a 5x5 grid. So probably an array of arrays. No loops are needed for this game.

Fashion Show can be done, but not well on 160x120 pixels with 15 colors. I would just be frustrated trying to draw those sprites. The student who wants to do this project is not the correct student to do it. If you see what I mean.

Unit 4

Recommended projects for this unit are Flying Space Rocks and Memory. (AKA Asteroids, Concentration)

The hard part of Asteroids is turning the ship in circles and firing bullets. This needs a long student guide. We don’t show them how to use the Images library and they will need it. They could also use a little trigonometry cheat sheet.

Unit 5

We don’t show them infinite scroller games which could open up some possible projects for them. Recommended games are Pinball Wizard and Traveling Fashion Show.

Pinball games are great, but do they require a tilemap? If you use a tilemap, can you make a ball roll down an incline? Pinball is also best with a portrait orientation.

Traveling Fashion Show. Enough said.

1 Like

Lab 4.3 should start with arrays instead of if time permits. We just taught them arrays this is a good time to use them.

1 Like

1.5 Student guide. Part 2 step 5.a “The extraLife sprite is destroyed.” There is no mention of how to do that. Students are just as likely to destroy mySprite2 as they are otherSprite. That may actually seem to work and cause misunderstandings later. While it is true that Part 3 shows the use of otherSprite my students won’t realize they made a mistake.

1.4 is where the sprite overlap container is introduced. The speaker notes make no mention of how important it is to drag down sprite and otherSprite and use those instead of global variables. The graphic is an empty container block so there is no hint of how to use sprite and otherSprite.

As far as I can tell Lab 1.4 does not use sprite collisions at all. Instructing the kids on using the sprite and otherSprite parameters would have been here. But the lab doesn’t use them.

1.5 Slide deck does not mention the overlap container again so there is nothing there to instruct the children on using sprite and otherSprite.

I see the mistake of trying to use a global variable instead of the parameters a lot in class. I feel like we should address it some place.

I just got the latest version of the first semester. Unless you still have big changes I will go through it.

0.5. It says “recall the Cartesian coordinate system” that means there is a math prerequisite. I didn’t think we had one. We spend a lot of time on the Cartesian coordinate system before telling them it isn’t used. I usually swap that out for an explanation of how RGB colors work and how our eyes perceive color. Pass a magnifying glass around so they can look at their Chromebook screens and see the pixels.

0.6 has slide 5 which has the needed blocks on a slide. I don’t remember it being used throughout the class. Perhaps it should be.

1.4 student guide steps 7 and 8 use random numbers from 10 to 142 and 10 to 102. At the end there is a question as to why those weird numbers. The kids are supposed to think why the center of the sprite is 10 from the left and 18 from the right? I am not even sure myself looking at those numbers. If you said 8 to 152 and knowing most of the gallery sprites are 16x16 I would say it keeps them on the screen.

1.6 nice example projects.

I like what you have done with the discussion of variables in 2.2.

2.2 slide 9 don’t mix defining memory with defining a variable yet. Save the punch line. Swap 10 and 11. Stay with memory until the punch line which is don’t try to remember an address give it a name instead. Maybe take a slide or two out it seems a bit long.

2.2 slide 11 last bullet. I would not talk about a phone number as address here and a phone number as value two slides later. Don’t mix your metaphor. On slide 11 tell them instead a 4GB Chromebook has 4 trillion possible addresses instead of the phone number thing.

2.2 last slide.

An array or an object (e.g., a sprite) is simply a collection of variables.

An array is not a collection of variables. It is a value that holds many other values. Tight vocabulary.

Also in 1.1 we told them “A sprite is any object in a game that has properties and behaviors.” So not simply a collection of variables.

The VS Code EDU Python class has taken a different approach to variables. They take the perspective of values having tags. Consider switching to that for consistency.

2.3 debrief: part 1.

Subtract the number from zero (simplest for the computer) or multiply it by -1 (more complex for the computer)​

Deja Vu. Simplest for the computer? More complex? That makes no sense. Are you saying faster? Does it take less electricity? Produces less heat? What? Do you know what hardware and software stack everyone of the students is using? Do you know how hardware will change in the next 10 years? Just don’t say that.

anecdote 1

I was working on the M1 Abrams Main Battle Tank simulator. The most expensive video game ever made at that time. The game controller was an actual tank turret on caster wheels.

We had an old guy who would look at our code and chastise us on efficiency. Nothing made him more angry than multiplying by 2 instead of using the bit shift operation. After years of getting beaten on for writing code with less than peak efficiency, we made a measurement.

It turns out bit shifting took two orders of magnitude longer to run than multiplying by 2. A little research yielded that the computer manufacturer was bit shifting in software while multiplication was using a floating point accelerator. When assembly language died bit shifting wasn’t used much anymore so why waste the silicon.

anecdote 2

I was at Ford working on a program that calculated the cost of making a single car or truck. It is good to know how much money you make when you sell one.

There was a guy there who thought he knew everything. So much so that he optimized the program to within an inch of its life. Doing that meant that it was also a mess. So many bugs.

It also took over night to run. You start it today to get results tomorrow. Even with the extreme levels of optimization.

But then we had a problem we needed to make a change that would double the run time! We had six weeks. I said no. I am going to rewrite the whole program using Extreme Programming making it the world’s second XP project and validating the method at the same time.

So I rewrote it not to be efficient, but to be understandable. Absolutely no optimisation. It was a Friday when it was done. Time to kick off the final test. I expected it with not just no optimization, but anti-optimization to take all weekend. I hit return and it came back immediately. I checked the output and it was perfect. Premature optimization hurts not helps.

moral

Don’t tell the kids to think about theoretical up front optimization. Coding it to be readable always comes first. You can optimize later when you know it doesn’t run fast enough by making a measurement.

And let me know if I need to write you another book on why we (computer programmers) never say such things.

2.4 slide 6 “Lab 2.4 introduction”. That slide is going to need some speaker notes.

Last slide.

Variable types serve different roles. For example, adding two sprites together does not make much sense. You need numeric variables for that.

There could be some misunderstanding with the way this is worded. Do you need numeric variables to be able to add sprites together?

I don’t think we have talked to the kids about variables having type and the consequences of mixing them at this point. This is a problem that seems to hit them out of the blue when they start making complex programs. More about variable types and how to fix a type error could be very helpful to them later.

These are all very helpful, thanks! I’ll have @AlexK look over these posts, though I’m pretty sure it’s all still a work in progress, since we’re not releasing until summer. Expect a note in the forum when it happens! Until then, I love having you as a beta tester!

Also, have you taken a look at using the new tutorials for Units 0-3? What do you think? (Note: I’ve seen that there are still a few design things and some typos, but if you could comment on the gist, that’s a helpful first step.)

The 2.6 student guide was changed to “There’s only room for three of us!” because we allow 3 projectiles. But the slide show on slide 6 still says " * There’s only room for two of us!​".

Tight vocabulary. 3.4 slide 5 “An array is a variable which can store more than one value.” An array is a value not a variable. One could say a variable of type array can…

3.4 slide 10 “You can store numbers or text in an array.​” add to that “Avoid storing both.” While you can store both it never works out for you in the end.

3.4 is very long. I don’t think we can introduce that much stuff in the allotted time.

I would make arrays with loops a separate lesson. If you do that then you have enough time to explore the 4 main reasons to traverse a list:

  1. Filter. Loop over a list to create a subset of values.
  2. Transformation. Loop over a list to transform each value into a new value in a new list.
  3. Reduce. Loop over a list to summarize into or choose a single value.
  4. Side effects. Loop over a list creating a side effect based on each value.

Give them a pattern and examples for each type of traversal.

3.5 Animation. It doesn’t belong here. I always cut this lesson in half just showing them the built-in animation blocks.

3.5 appears to be either left over from the Snap! version of this class or a contrived way to get them to use arrays. Either is not useful. Move animation to unit 0 where we talk about sprites. You can introduce some of the history of film and video and how animation works. Only show them the built-in animation blocks. Because…

If you split 3.4 in half then you already have a 3.5 that focuses on arrays. Give them a lab based on different types of traversals. Create a do now that calls out different types of traversals in the real world. (e.g. Go to the grocery store and purchase the cheapest can of soup available. How do you find the cheapest can of soup? Reduce.)

4.1 slide 10 Convincing the kids that functions are useful all the way out in unit 4 is a challenge. They are already stuck in their ways. You might want more than one slide to convince them.

If you have a lot [of] blocks to do something, you can put them in a function.

I like something like this better: “If you find tall piles of blocks pull out sections of code to make functions instead. Keep making the pile smaller until what it does is obvious”

A function would also make changing the sprite say message easier.

Is this a reference to the Bell Ringer? I would never make understanding the end of the lecture contingent on the Bell Ringer. In my school at first hour that does not work. Buses are late, kids are late, kids are still sleeping, kids urgently need to tell someone something, or watch something before it is no longer viral. The Bell ringer is best as a bonus, not an essential.

Other reasons to use a function:

  1. Even a single block that is hard to understand is better as a function with a name that explains it.
  2. Instead of creating or copying the same code several times. Just use a function.
  3. Functions help you find the right code to change easily.
  4. A function that is used in several places only needs to be changed in one place.
  5. Abstraction. Seems like the right place to talk about it.

There is so much that can be included with functions I am not sure what to hold back.

We do have several ways of managing/monitoring code. Generally, for the Intro curriculum, we try not to make sure they are in lockstep (though we are able to) but instead, we want to slowly wean students from our guidance.

Have you seen our Tutorial Tool? Your classroom seems like a unique enough experience that you might benefit from creating your own tutorials or even making some small edits to ours and hosting them on your GitHub for your students to follow. I’m working on a Tutorial-Tutorial…maybe you could be one of my beta users?

@Don I’ve been following your posts since they were first on the GitHub repo. Glad to see your still providing feedback to improve this curriculum. :clap:
@KIKIvsIT I would love to be a beta tester for your Tutorial-Tutorial as well. :crossed_fingers:

1 Like

Bring it on. Randy and I will try it.

Do my eyes deceive me or do I see a Jupyter labs kind of thing for MakeCode micro:bit tutorials? https://makecode.microbit.org/tutorials