Saturday, December 31, 2022

Looking Back and Looking Forward in CS Education 2023

Traditionally I write a year end look back on thee previous yest in CS education. (Last year at Looking Back on Computer Science Education in 2021) Honestly, that post would largely work for 2022 as well. I attended SIGCSE, CSTA, and the New England Regional CSTA conference. They were all great. There was good learning at all of them. But new stuff? Not a whole lot. A few new tools. Some new robots. Some new AI and cyber security curriculum. But really not a whole lot.

I think we’re in for some disruption in 2023 though. Tools like ChatGPT and GitHub CoPilot are probably only the first of tools that are going to shake things up in teaching programming. Are we even going to still teach programming in computer science? If not, what will computer science courses look like? If we are still teaching programming how will we do it? What will it be all about?

We’re still going to see a need for teaching about cybersecurity for sure. Artificial Intelligence is also going to be more important. We’re seriously going to have to think about how we teach about it. We have to include not just how it works but how it should be used. Ethics in computer science has never been more important.

The discussion about ChatGPT and what it means for education in general and CS education in particular is going to be ongoing. We have to reink how and what we teach. It’s going to be an interesting year. Have you been thinking about it? What are your thoughts so far?

Note: I highly recommend Mike Zamansky's blog post at Kicking off 2023

Monday, December 19, 2022

Thoughts on Optimization of Code

Donald E. Knuth famously said "Premature optimization is the root of all evil." The important word there is “premature.” Optimization is not a bad thing. It isn’t always required though.  The joke is that a programmer will spend hours coding a solution to a problem that can be solved in minutes manually. Is that a bad thing? It really depends on the circumstances. If one is getting paid by the hour one could easily argue that it is wrong. On the other hand if time is not really the issue and writing the code is fun – why not?

There have been times in my career when optimization has been very important. I helped spec a computer for high speed/bandwidth data collection. It was critical that the computer be able to take the data and place it in memory without losing data. We actually analyzed the speed of various machine language instructions for optimization purposes. That’s pretty exceptional of course.

I also remember writing a program of my own that took what seemed like a long time to process some data. I thought about trying to optimize it but as often as the program was to run it would not have been a good use of my time. Before I ran it again I got a new computer which made a bigger difference in execution time than I would probably have been able to get though “fixing” the code.

Old habits from the days of slower computers stick with me though and I tend to think a lot about code execution. Recently I had ChatGPT write some code for me (Coding with ChatGPT–Armstrong Numbers) I looked at the code very closely since I was trying to come to some conclusions about how good the code was. I noticed that the C# version it gave me was highly dependent on modulus and division which are somewhat time consuming compared to addition and multiplication. The program I write didn’t use any modulus or division but a lot of multiplication and addition. Both used the same number of raising to a power of 3 so it doesn’t play an important role in performance differences.

Having some time on my hands, I added some timing code to see if there was a difference. My program turns on to be much faster. Yea me. Of course both execution times are very small fractions of a second. Does it make sense to optimize this code? Probably not in this case. In fact, I would argue that the most understandable code may be a better goal for this project. That is a very subjective goal. Different people might come to honest but different conclusions.

Another goal might be scalability – the ease of adapting the program for other Narcissistic numbers. The ChatGPT probably wins there.

SO much depends on what we want to optimize:

  • Speed of execution
  • Ease of understanding
  • Ease of enhancement/modification
  • Possible other considerations(?)

Getting all three may not always be possible. It’s an interesting question though and one developers do need to ask.

Saturday, December 17, 2022

Coding with ChatGPT–Armstrong Numbers

Trying out ChatGPT seems to be all the rage these days in certain geek circles. I may even be late to the game but I tried a few things over the last couple of days.

I started with one of my favorite little projects. Armstrong numbers are a form of narcissistic  number which is a number that is the sum of its own digits each raised to the power of the number of digits. I first wrote a program to calculated these as an undergraduate when I wrote programs for it in about a half dozen different languages.

I fed in the following prompt using C#, Visual Basic, and Python as the programming language.

Write a [programming language] program to calculate three digit numbers were the sum of the cube of each digit equals the original number.

The results for C# and VB were the same algorithm written in the specific syntax. The Python code was slightly different. You’ll probably not be surprised that the code ChatGPT showed me is very similar, if not identical, to code examples you can find with Google or Bing.

The C#/VB plan depends highly on integer division and the modulus operator to break down the number into its digits.

for (int I = 100; I < 1000; I++)
     int sum = 0;
     int temp = I;

    while (temp > 0)
         int digit = temp % 10;
         sum += digit * digit * digit;
         temp /= 10;

    if (sum == I)

The Python sample changes the integer into a string and used that to address the individual digits.

for num in range(100, 1000):
   # Convert the number to a string so we can access each digit
   num_str = str(num)
   # Initialize a sum to store the sum of the cubes of the digits
   sum_of_cubes = 0
   # Iterate through each digit in the number
   for digit in num_str:
     # Convert the digit back to an integer and add the cube of it to the sum
     sum_of_cubes += int(digit) ** 3
   # If the sum of the cubes is equal to the original number, print it
   if sum_of_cubes == num:

Note that the Python example nicely includes comments. A dead giveaway that a student didn’t write it. All samples come with simple explanations of how the code works. The explanations tend not to be very deep so oral questioning of a student would probably still show if the student understood the code or not.

It looks like, for some simple, student exercises can be solved by ChatGPT. It is not much different from doing any other online search for the most part. How worried should teachers be about ChatGPT especially? I’m not sure. Cheating goes on all the time and there is a lot of sample code already out there for many common assignments. It’s going to be a bigger problem for educators who have very large numbers of students who can’t be familiar with the code their students write. Or who can’t ask them questions to make sure they understand what they turn in.

I think I would ask ChatGPT to solve some of my assignments before I assign them just so I know what sort of answers I might see.

Side note: Neither of the ways ChatGPT suggested is the way I solve this program. There are more than one ways to skin this cat.

Sunday, December 04, 2022

When Computers Write Code

For most of my career I hive been hearing that some day computers will write all the code and human programmers will no longer be needed. Or at least, not as needed as today. Are we getting close to that time – finally? And if we are what does it mean for teaching computer science?

Recently, the CS education world has been discussing GitHub Copilot.

GitHub Copilot uses the OpenAI Codex to suggest code and entire functions in real-time, right from your editor.

While some of the discussion has been about the suit against Copilot (GitHub Copilot litigation) much of the discussion has centered around what it means as a tool for cheating by students. More recently there has been some visibility to the use of ChatGPT to write answers to programming questions.

For example, this year’s Advent of Code seems to have been “invaded” by ChatGPT climbing the leaderboard by answering the problems is seconds. (Adventures With ChatGPT: Advent of Code Edition | Tabs, Not Spaces) Of, perhaps, even more concern to teachers, ChatGPT seems to be somewhat satisfying as a solution to Advanced Placement Computer Science A questions. (ChatGPT passes the 2022 APCSA free response section)

I’d be very surprised if students are not already using these tools. This brings up several questions. One is - how do teachers keep this from happening? We probably can’t. So how do we detect when it does happen? Do we use these tools ourselves to see what sort of code is generated for our assignments? Seems like yet more work for people who don’t have enough time as it is.

Another question, which students are sure to ask, is what is the purpose of students writing code that artificial intelligence can write easier and faster? If you read the article above about putting the APCS A questions through ChatGPT you’ll see that the results are not prefect. So for the time being it looks like good programmers can still write better code than the AI. How long that will last is anyone’s guess. If history is any guide, it will not last long.

I remember when optimizing compilers started generating more efficient than the world’s best assembly language programmers could write. It was painful for some and a real boon for others. It didn’t completely do away with the need for assembly language programmers but it did reduce the need.

What do we tell students who ask “what’s the point of learning to code?” My thought is that we talk about the need for human oversight of AI generated code. We need to verify that it works as we want it to work and that means we need to understand code. We’re also going to need to fine tune generated code for some time to come. Understanding code will also help write good instructions for the AI that generates code. Again, understanding how code works is important for that.

Of course, there is a lot more to computer science than just writing code. Programming languages are the language of that study. Learning assembly language still helps people understand how computers and computing works. So will learning higher level languages.

The AIs will get better. Our conversations with students will get harder. Cheating is always going to be a challenge. We live in interesting times.

Friday, December 02, 2022

Adventures in Taking Code From the Internet

Facebook memories remined me that ten years ago I was thinking about writing a program that would ring bells (nautical time) on the hour and half hour. I didn't write it back then. Probably because I was busy with my day job. It got me thinking about writing one now just for the fun of it.

Now I have written a fancy clock program before. It looks something like this.

That was written in Visual Basic and I really wanted to use C#. Besides that, that program is a bit busy for something as simple as I wanted to write. The Timer and DateTime classes in the .NET Framework make writing a simple clock application very easy. I thought I would take a look on the internet to see what code samples I could find. There are plenty of them. I found several interesting looking samples that also drew analog clock faces.

The first one I found (C# Analog Clock Program ( looked simple enough so I created a project and copied the code into it. It was broken. Looking back at the comments on the original post I found a number of comments saying the codebase broken. None of them had answers.

That seems to be pretty common. No doubt that things worked fine for the original coder but something was lost in the posting. I suspect that most people who come across this sort of thing are beginners which would explain the questions. Having a bit more experience I quickly fixed the errors I had and got the program to work. It didn’t look quite like I wanted but again, having enough knowledge to understand the code without a lot of comments, I made some adjustments and got it looking the way I waned.  I suspect that many beginners would either life with it or try a whole lot of things until they stumbled on the right combination. Or maybe broke the program beyond fixing.

That highlights one of the big issues with beginners taking code from the internet. Without some real knowledge even minor issues will keep success away from the student.

I found a second project that was put on the internet some years after the first one I found. Interestingly enough, it appeared to be a refactoring and modest improvement over the first one I found. The code was nearly identical. No credit was given to a previous coder. In fact it was so close that I copied a snippet and pasted into the earlier project. With a tiny edit (a name change) it worked perfictly. This is what I wound up with.

The Code Project web site has a variety of analog clock code samples. I took at look at one - Analog clock control in C# – CodeProject that was pretty good. and worked more or less right off the bat. Except that is was written in a much older version of Visual Studio than I was using. (2003 compared to 2022). An upgrade was required with Visual Studio handled pretty well. That is not always the case if coders used depreciated or removed features or changed names. Yet another issue with taking code from the internet.

Well, now I have a couple of code samples to play with. Most of all I am more convinced that actually getting code from the internet to work can be more complicated than many would think it is.

Now to think about ringing bells. Which reminds me of one last story,

Back when I was in college during the mini-computer era we had a lab full of ASR-33s. They had actual bells that were hit with a little hammer. One student wrote a program that ran in the background of the computer and "grabbed" control of each terminal as it became available. Then it would start ringing all the bells at once. It so happens that when it ran the only one in the lab was the computer department secretary.

The department chair held a meeting with all the TAs and it never happened again.

Saturday, November 12, 2022

CSTA New England Regional Conference #cstaNE2022

This year’s CSTA New England regional conference is at the University of Massachusetts (Amherst) school of Education. It’s a great venue. There are around 150 people here. I can remember when CSTA national conferences were smaller than that. It just shows the growth in CSTA and the growing strength of CSTA chapters over the last several years.

I am running into a number of people I know and meeting some new people as well. That is what makes in-person conferences so extra special.

The energy level is high here with teachers from all over New England and New York. The opening keynote was by Dr. Cheryl Swanier who talked about “Changing the Face of Technology for Social Good.” Tech has a woman problem – we don’t have enough of them. As part of her talk, Dr. Swanier showed this video Girls in Tech for Web Summit - Ruthe Farmer – YouTube We’ve been taking about this problem for a while but we really need to take our actions up a notch. The case is pretty clear.  Dr. Swanier also talked about explicitly teach problem solving. Much as we’d like to think that teaching programming does that, the truth is that it has to be taught explicitly.

My first regular session was “Teaching with Minecraft: Education Edition.” You’d think I would know all about this but honestly I have trouble grokking it. My grandson has seen it and thinks its cool so I figured I should learn more about it. Minecraft Education requires a license. That may limit what I can do initially. However, it looks like there are a lot of resources for teachers including lesson plans, the ability to share worlds, create NPCs (non player characters), and portfolios. There are Code Builder options for blocks, Python, or JavaScript with MakeCode.There is a demo that can be used with “An Hour of Code” and I will play with that. I was pretty impressed with what I saw today.

There were 10 or 12 exhibits at the event. One that really interested me was the Kibo robot from Robot Kits For Kids | KIBO | Kinder Lab Robotics.

These robots are programmed with blocks. Not virtual blocks! Physical blocks that cane be connected together. Once the program blocks are together the bar codes on the blocks are scanned into the robot which will execute the program This looks pretty interesting.

After lunch, we had a panel of CS/STEM leaders from the New England departments of Education reporting on what progress the states have made in the last few years. The tl;dr of it is that there are been a lot of progress. But the efforts could really use more money. States have created certification programs, made progress in getting states to require schools to offer CS courses. We’ve still got a long way to go. We could use more money for teacher PD. We could require CS courses for graduation. Although in several states CS courses can count for graduation credits in various ways.

Next up for me, Kathy Kleiman, Founder of the ENIAC Programmers Project, who told the story of the women behind the ENIAC. A story I have heard before but Dr. Kleinman tells it really well. I loved that she talked about the history of these women after the war. A lot of information at ENIAC PROGRAMMERS PROJECT

Next up for me, Gencyber Teacher Academy @ the Univ of New Haven: Incorporating Cybersecurity Concepts into 9th-12th High School STEM Curriculum.

This program includes a week long summer "camp" and follow up virtual sessions. Last year the program just included 25 teachers from Connecticut but applicants from other states are welcome to apply for next summer.  Anyway, it comes with a stipend and some good free stuff. And a lot of good learning,

Last regular session of the day for me, Bring Computation to Life with the micro:bit. I love the Micro:Bit and always like to learn about how teachers are using them in their classrooms. I linked to the presentation above and on slide 7 you can find the mini project that opened the session with links to the code used. It uses the ability of the Micro:Bit to send and receive messages. You will find a lot of useful links on that slide deck including in the speaker notes.

The closing plenary involved a lot of recognition of CS teacher award winners. and door prizes!

Next year the conference will be on October 20, 2023 at the University of Connecticut Storrs. Should be a good one.

Tuesday, October 25, 2022

The Computer Science Professional Development Problem

Mike Zamansky is stirring up trouble again. OK not really his intent I’m sure but people can get defensive. I have to say that I agree in principle with most of his post at Why PD doesn't work for CS

Mike lists four different types of PDs.

  • Teachers sharing practices
  • conferences and meetings that teachers choose to attend
  • PD run by content providers, that is, people selling something
  • PD required by schools and districts

It’s as good a break down as any though the fourth kind can really include any of the first three. So I will zero in on those for now. Full disclosure: I have given all three of those types of PD in my time. This includes working for a content provider, Microsoft in this case, that was more or less selling something even though the stuff I was presenting to teachers was free.

I think that these types of PD can be great things for improving a teacher’s knowledge and skills. None of them are really good for starting from scratch.

Teachers sharing practices is a wonderful thing. At least if the audience has a solid base to start. We see a lot of it in social media. Not as much on blogs as I would like but still some valuable stuff is shared on Facebook and even Twitter. I have learned a lot from teachers sharing practices. I hope I have helped some teachers as well. Short bursts of knowledge is not a foundation to start a CS teaching career on though.

Conferences are wonderful. The sessions are short, typically 45 minutes to an hour and a half. They are great for sharing and for helping teachers to build on existing knowledge or to lead them in new directions for further exploration. But one should not expect a new to CS teacher to attend a conference (or two) and expect them to be a trained teacher.

PD run by content providers are typically longer form. Usually a week, sometimes two. These can be awesome especially if they are given to educators who have prior experience For example, a teacher who has taught simple web page building attending a session of a more advanced toolset for a more advanced course. Or a teacher who is learning a new programming language who can relate it to previous knowledge. These sorts of PD can be a mixed bad of course. Some focus totally on the tool and not much of pedagogy. Others are concept focused as much a tool focused. Regardless, these can be very valuable especially when the content provider is a non-profit with goals beyond selling product.

We’re getting to an interesting point in the development of CS for All. We’re rapidly outgrowing the availability of strong technical CS educators. Qualified CS teachers are hard to find. We’re not doing students any favor by putting untrained or antiquatedly trained teachers in the classroom. Colleges and universities have been complaining about having to reteach students who were poorly taught in high school for years. Do we really want to see more of that? I think not.

We really need more long term training for CS teachers. We’re starting to see some programs and more universities are developing CS education research programs and working with schools of education. That really needs to ramp up. States have to start requiring more training for CS teachers AND put some money into making it happen.

Friday, October 07, 2022

Micro:Bit Programming for Grades K to 3 With #MicroCode

The Micro:Bit is a pretty cool piece of hardware being used in a lot of schools. It’s mostly used in middle school and above but that may be changing. New from Microsoft is Microcode beta. Programming is via a MicroCode web editor at Microcode documentation is at Microsoft MicroCode for micro:bit (beta)

Take a look at the intro video below.People who have used Kodu Game Lab will see some simularity in MicroCode. Although the graphics are very different, the programming modularity is similar. With both, programming is drag and drop using cute little kid friendly icons.

Besides the Micro:Bit itself, Micro:Code supports Jacdac devices which opens a lot of new prossibilities. I wrote about JacDac back in July - Jacdac and Micro:Bit 2.0–First Look.

I haven’t tried this with my 8 year old grandson yet but I hope to soon. I think he’ll like it.

Wednesday, September 28, 2022

How Far We Have Come With Programming Languages

Last night I had a dream during which someone suggested that COBOL would make a good first programming language. They tried to promote the data division and English language syntax as plusses. When I shared this on social media it got a lot of laughs. Few would take this as a serious idea and with good reason.

We used to joke that the hardest part of programming in COBOL was learning how to spell environment. (You had to be there) But really that data division was a bear to get right. The cognitive load was a lot for beginners. Today they are some who think that static variable declarations are enough cognitive load to hold students back and COBOL was a lot of effort.

COBOL is still around and I understand that it has changed somewhat. I thought that “Structured Programming in COBOL” (there was such a book) was a stretch but object oriented  COBOL just boggles my mind.

Most of the people in my age group in the industry have some experience with COBOL. For more than a few it was the first or second or, as in my case, third programming language. Learning multiple programming languages was a big thing early in my career. FORTRAN, COBOL, BASIC, and C (before C++)  were all a part of many people’s tool box. I worked on one project that had code in all four of those languages plus PASCAL.

Today we have a lot of new languages. C++. C#, Java, JavaScript, Rust, and I could go on and on. Today’s languages have more and more powerful decision structures, looping structures and libraries that do things for us that we used to have to program ourselves. We have improved error handling, the ability to use classes and objects, and many other cool features. That doesn’t even touch on powerful IDEs and the ability to compile and get results in seconds rather than hours and days.

With power often comes complexity. Complexity means cognitive load and potential for confusion and errors. We walk a fine line determining what to teach and how to prevent students from getting overloaded. It’s an exciting time to be teaching for sure.

Thursday, September 22, 2022

Dealing With Student Misconceptions

I was reading through The Big Book of Computing Pedagogy, as one does, the other night. Specifically, the section on student misconceptions. Misconceptions are one of my favorite topics in teaching computer science. The articles in this book are very helpful in understanding what student misbelieve and why they do so.

I’ve seen students with all of the common misconceptions and, of course, I try my best to help them overcome them before they get students into trouble.I tried to remember if I experienced any of them myself but memory of 50 years ago is very selective. What I do remember is that I had some experiences of getting very close to the hardware early on. While my first course was learning FORTRAN the computer we used required some extra (compared to today) to run. Specifically, it requires that one toggle in some instruction in binary using toggle switches to get it to read in a couple of punch cards that did the next phase of the boot up.

Not long after I learned the first two of what would be 7 or 8 assembly languages over my career. There is something about toggling a memory address so that one could read (in binary lights) or enter information in binary with those same switches to program a computer that give one a good understanding of what memory actually is.t

Those days are long gone of course and while assembly language still gets one close to the computer and gives an understanding of how things like memory work it can also be a gate or barrier to students. It’s actually not the ideal way to understand concepts that one might think. It’s not the sort of visual experience that today’s students are used to learning from.

What we really need is some better visualization tools for introducing concepts. My first thought was using debugging tools such as those built into tools like Visual Studio. One can single step though instructions and view the contents of memory (variable) locations. It works but it is slow and tedious. That may be fine for debugging but for learning it has a high cognitive load that gets in the way of what we’re trying to do in teaching.

So I have been thinking about how to create visualizations that are simple to use and that might help clear up misconceptions. Two things my thinking is focusing on are how variables and memory work and how loops and loop control variables work. Eventually I have to narrow it down to one of them to start. I should probably look at what might already be available first. I thought I would start by asking you, my readers, for suggestions. So, any ideas? How do you help students visualize these concepts? Any suggestions on tools for creating visualizations?

Tuesday, September 20, 2022

Coding It Yourself Can Be Fun

Every couple of weeks I bake a couple of loaves of bread. The bread mostly gets used for breakfast sandwiches. Now my bread does not look as perfect as what I could get in a bakery. And the bagels? Once in a while I try my hand at bagels, don’t look anything close to what I get at my favorite bagel place. But they all taste good and I find it very satisfying to make it myself.

Coding can be a bit the same. Not everyone writes professional looking (or performing) code but sometimes there is some satisfaction in having a program that works just they way you want it to and does just what you need. Maybe it is not “release to the public” neat and tidy. It may be what we used to call a “programmers program.” In other words, a program that only the programmer who write it could (or would) use. My Wordle solver helper program is one such. It works great – for me. It doesn’t have the error checking a released program should have. And maybe it should start at one and not zero. But it works great for me.

Programming is basically stating a process or method using computer code. My Wordle solver represents my thinking of how I think Wordle could be solved. It was fun to write and is fun to use. It’s not ready for prime time though. Does that make it a bad program? No more than my imperfect bread or bagels are bad. They both meet my needs and that, for me, for these, is all that matters.

In some ways, that is the message we may want to pass on to students. Many, perhaps most, of our students will not become professional software developers. They may still write code for their own tasks or interests though. We need to help them enjoy that experience. One way to do this is to assign projects that are interesting to the student. Open ended projects are good for this but even better is letting students select their own projects.

For semester ending projects, I used to allow students to select from a list of suggested projects and also to have the option to design their own projects (after discussion with the teacher) that solved a problem that they were interested in solving.  Helping students find the fun and satisfaction in solving an assignment promotes their learning. And, I hope, helps them think of computer science as worth doing for themselves.

Saturday, September 03, 2022

Names Have Power – Names and Programming

"A rose by any other name would smell as sweet" William Shakespeare.

There are cultures where people have a sort of public name and a secret or true name that is rarely shared because knowing ones true name gives people power over them.  In fact, knowing a name is powerful in all cultures. Consider the difference between calling “hey you” versus calling a child by their actual name. Which way draws them up sharp?

Naming is important in computer programming as well. It’s not always as easy or as simple as beginners assume it is. Mike Zamansky’s post Subtle Errors gives a good example.  Having more than one item with the same name causes the sort of ambiguity that computers do not handle well. Some names (identifiers as we often call them in programming) have special meanings. Getting names slightly wrong can cause other problems.

A name can provide a great deal of information to a programmer. To the compiler names are pointers to more information. A variable name identifies a location to the computer. Other information about the data stored in that location is specified in other ways. The computer doesn’t care what characters make up the name. That it is unique is important but not the characters involved. In many programming languages the case of the letters makes two names completely different. People tend to see them as identical.

Beginners often think that “the computer” pays attention to everything in a program the same way people do. That’s not the case though. I’ve had students write comments in their code believing that the computer will read the comment and perform the action. They may also assume that naming conventions, starting all integer valuable names with “int” for example, will influence the computer. Again, not usually the case.

[Note: back in the day, any variable starting with one of the letters “I” through “n” was automatically an integer.]

Names/identifiers can communicate a lot of information to programmers. They are pretty important for sure.It is easy to gloss over them and minimize their importance. Getting them right though is something worth spending time on.

Wednesday, August 17, 2022

A Spoon Full of Computer Science

I was thinking about data science lately. The problem is that I don’t know much about data science. I learned about data bases in school and worked with them some in industry but that was mostly about how they work internally. I used to give talks on how B* Trees worked and I could (back then) give serious talks on how databases do journaling. But I never did much of anything with real work data applications. Not professionally at lease. But I do like playing around with data and Excel is my friend.

So my first thought was to look at Bootstrap’s data Science curriculum. I did find their definition:

data science the science of collecting, organizing, and drawing general conclusions from data, with the help of computers.

Sounds good to me. I guess I have been doing some data science after all.

Looking though the curriculum had me thinking about Mark Guzdial's work with teaspoon languages. It feels like there are some things Bootstrap and Teaspoon languages have in common. The idea of teaspoon languages is to add some computer science to other subjects to broaden participation in CS. Bootstrap is using data sets from other subjects in their curriculum. So both are using CS and programming to help students learn about a lot more than just computer science or the subject they are taking. Note that Bootstrap also has Bootstrap Physics! and Bootstrap Algebra.

While I was doing all this thinking Mike Zamansky posted this post - Teaching CS - How early and how often? Mike askes a lot of practical questions about fitting CS into grades k through 8. It’s easy for us zealots to say that CS should be in every grade and expect K8 teachers to make magic but that is not really fair to anyone. Maybe the answer is to have some teaspoons of CS in existing subjects. It doesn’t make a lot of sense unless adding this CS makes learning the subject it is imbedded into better though.

We’ve seen for years in higher education that computer science and [some other area of study] can be a big win. Can we move some of that down to lower grades? Probably though it is going to take some time and some innovation. It’s worth doing, in my not so humble opinion. We use math in other subjects. We use reading and writing in every subject. Might not CS help teach/lean a lot more subjects than just programming? I think so.

Tuesday, August 16, 2022

Artificial Intelligence and CS Education

It;s seems like artificial intelligence has been “10 years away” for the last 40 years. Back in the mini computer days every computer was custom and configurations were designed by people. I worked for a company that believed that configuring computers was beyond the ability of computer software. From there I went to a different company that was developing rules based artificial intelligence. Using a special language called OPS5 they wrote software that configured computers faster and more accurately than people. Rules based AI was dependent on people to know the rules and properly prognathism. Limitations became apparent.

Today we have machine learning which basically means the computer is developing the rules. Rules is probably not the best definition though. We’re starting to see AI grow into many more areas than ever before. Think self driving cars for example. It’s becoming clear that understanding the world today means understanding something about artificial intelligence. What does that mean for K-12 computer science education?

The AI3K12 project is working on answering questions about teaching AI in K12. They have a lot of resources now and under development.

For now, most of the education is about AI. What it is. How it worse conceptually. What is  it being used for. And, perhaps most importantly, what does AI mean for society and the future. The math and science of creating AI platforms s a bit too much for most high school students let alone younger students. That can wait. Although there are tools that exist that students can use for their own projects which is pretty cool.

I am very concerned about bias in artificial intelligence (Bias in Artificial Intelligence. Inequality, racism and discrimination is just one article you will find from an internet search for “Bias in artificial intelligence) Systems that do not recognize that people of color are actually people is only one example Bias against women or various other groups of people can be baked into AI systems if developers are not VERY careful.

Also, how is AI being used? Facial recognition and privacy have become areas of concern in many areas and applications. 

These are more than just ethical issues, though ethics has got to be a core part of what we teach, as many other problems are unconscious bias or the result of innocent but false assumptions made by people who mean well but lack understanding of their own environment. Its a reason we need a lot more diversity is AI and CS as a whole. We have to teach students to think about these issues and to think beyond their own identities and beyond “the way we have always done it.”

Companies in industry are taking new looks at AI as well. One useful resource is Microsoft's framework for building AI systems responsibly - Microsoft On the Issues. The blog post talks about some issues Microsoft has faced and how they are addressing them. Companies are asking the “should me” question as well as the “can we” question. We need students to think about those questions from the start. The document itself is at Microsoft-Responsible-AI-Standard-v2-General-Requirements-3.pdf and makes interesting reading. It could start some class discussions as well.

Saturday, August 13, 2022

Cyber Security and CS Education

Way back in time, cybersecurity was all about controlling access to the computer in the locked room with the raised floor. Well, you had to trust the people you did let in of course. I will not say much about the students I went t university with who competed to create the best, most realistic login emulator to steal passwords because, you know, that was all in fun. Later in life I actually had supporting the real login software as part of my job responsibility.

We were more aware of security by then. It was the real world. We spent a lot of design time on our various OS subsystems to make sure that access was verified and that people could only access what they were authorized to access. Dial in lines and then networks made things a bit more risky. I remember one system that required a second password of 16 random characters that changed every 5 or ten minutes (I forget which). Someone broke in anyway. Social engineering not technical engineering. People were and are still the weak link in computer security.

In the early days few people had access to a computer. Fewer still had technical knowledge enough to crack into systems And most of them were (it seems) fairly trust worthy. As more people got access to both computers and knowledge breaking into systems became more common.

Today there is a lot of talk about cybersecurity and the need for more people to be trained in the field. What does that mean for high schools? For one thing, it means a lot of people are saying that high schools should teach it. What teaching cybersecurity means is a question with still developing answers.

Should schools offer a whole course in it or can they cover enough in an existing course? If a full course, a semester? A year? Some part of a year? You’ll get a lot of answers but little in the way of a consensus. A lot of discussion about this on Facebook group for  Cybersecurity Educators. Resources at CYBER.ORG are helpful as well.

For now, individual schools are making their own decisions. These decisions are based on things like teacher knowledge to teach such information, room in the schedule, and resources available. Some school IT departments are not willing to let students experiment on networks in a school. Or even, in some cases, to have students learn about network vulnerabilities! I suspect that career technical schools are going to be the main source of high school courses in cybersecurity. There is less focus on AP exams and more focus on preparing students for the work force sooner rather than later. Oh yeah, colleges and universities but they are not my focus.

Comprehensive high schools are more likely to add some cyber security information into existing courses. AP CS Principles for example. A few will have longer courses but I suspect most of those will be independent high schools and charters as they have fewer restrictions and their politics is different. (Different does not always mean better or worse to be clear.)

Maybe when (if?) we get to a place where the learning of coding is done well enough and deep enough in middle school we can move away from HS courses that “just” teaching programming and start using that programming to learn about other things in computer science. Like cybersecurity. Like data science (although we are seeing some of that in middle school already (Bootstrap:Data Science ) which is pretty exciting. And like more artificial intelligence.

Programming is cool (to me) and important (to everyone!) but there is more to computer science than programming. Security is an important part of that and high school CS educators have to have it on their radar and give serious thought to bringing it into their curriculum.

Thursday, July 28, 2022

Jacdac and Micro:Bit 2.0–First Look

Learning about Jacdac devices was my incentive to buy a Micro:Bit 2.0 The Micro:Bit 2.0 has a number of upgrades and new features from the original. These include a microphone and a speaker among others. That is probably justification enough to get an upgrade but being curious about the Jacdac devices, which requires the newer model, was the deciding factor. I am really enjoying spending time with external devices and the Jacdac devices are really easy to use.

I purchased the Micro:Bit from AdaFruit (micro:bit v2 Go Bundle - Batteries and USB Cable Included) Actually I bought two  because, well, why not? I bought the Kittenbot Jacdac Kit for micro:bit V2 from KittenBot My hope is that more manufacturers and suppliers will be offering Jacdac over time.

The kit comes with:

  • Jacdac Adapter – connects with Micro:Bit
  • Slider
  • Rotary Button
  • RGB Ring
  • 2 Keycap buttons
  • Magnetic Sensor
  • Light Sensor
  • Hub – for connecting even more devices
  • 5 cables of different lengths

Each part is labeled and has a QR code that will take you to documentation for that device. I took full advantage of that. One thing I learned the hard way but would have learned if I read the documentation is that the adapter has a switch that determines if the Micro:Bit powers the Jacdac devices or if the Jacdac (and some external power supply TBD) powers the Micro:Bit. Things worked much better with the switch in the right direction.

Once I got everything out and read some documentation I had to try something out. I started with the RGB Ring and the Rotary Button.  I started with individual example programs and then created my own. I had the rotor determine which LEDs were lit. Going backwards (negative numbers) had some issues of course. I might leave solving that to students if I were doing this in class.

I recommend starting at MakeCode Integration before you get to far on your own. It will step you though adding the Jacdac extensions to MakeCode, connecting to your Micro:Bit, and  other helpful information.

BTW, from MakeCode you can program using blocks (very easy) as well as either JavaScript or Python. You can move back and forth between languages as well. A lot of potential for learners there.

Next up I will be trying to think of some larger projects as well as experimenting with other sensors and gadgets.  I may even cut some boxes with my laser engraver for some projects. Making boxes with 3D printers is also an obvious thing to do.

Tuesday, July 19, 2022

Freedom To Teach Computer Science Our Way

Mike Zamansky had another interesting post (CS - it isn't all that) that got me thinking. The last three paragraphs started me going. For example

As CS becomes more part of the system I expect teachers to have less freedom in what they teach and how they teach. As a community we might be able to steer the ship towards keeping the good stuff but then again, we might not.

In talking to a lot of teachers at CSTA 2022, I realized that most CS teachers have a lot of freedom in what they teach as CS and how they teach it. Other than the Advanced Placement courses there are not many real limits on what and how we teach CS. One teacher said “as long as the students are happy I’m left alone.” That is both exciting and scary.

It’s exciting if a teacher with good content knowledge and skills in CS pedagogy says it, Scary if that is not the case. And the later is probably more common than the former. Of course there is a positive move in standards development and teacher certifiably rules that is trying to fix the problem of “anyone can teach CS.”

That has its risks as well. While most standards programs I am aware of are deeply involving experienced CS educators in their development, once standards start getting implemented by bureaucrats all bets are off. Standards can be inspiration or shackles. They can include people who are good at passing tests and exclude qualified people who don’t fit in the usual boxes.

Many, dare I say most, education administrators don’t really understand computers let a lone what it means to teach computer science. That is the source of some of our freedom but can also be a source of constriction if effective advocates for specific curriculum and teaching resources convince them to push things top down on classroom educators. I see it all too often “My administration wants me to use [some well sold curriculum]. Is it any good?”  Seems to me that excluding subject matter experts in the school should be making those decisions not people inexperienced with teaching the subject.

How we teach today is going to be influential If we teach everyone well we are more likely to keep some freedom in how we do things in the future. People tend to teach the same way they were taught. Given how much we still have to learn about how to teach CS we need to avoid that trap AND to promote a growth mindset that is open to new ways of teaching and learning.

It will be hard to keep computer science from being constrained in someone’s idea of neat little boxes. That is what bureaucrats like to see. As CS continues to grow we have to be flexible and we have to promote the need to be flexable to all the publics we deal with.

Monday, July 18, 2022

A Summary Look Back at #CSTA2022

CSTA 2022 was energizing! After three years of not seeing people in person it was awesome to reconnect with people. And to meet new people. The energy level was high through the whole event. Masks and proof of vaccination were required which I thought was great. It seemed to work out well at SIGCSE. Quite frankly, after lots of stories' of people getting COVID at ISTE which did not have those requirements I really apricated the carefulness of CSTA.

Masks did make it harder to recognize people. I’m glad I wore my trademark hat which one person told me was more famous than I am.

Sessions were very good as one expects. The exhibit hall had about 75 exhibitors and everyone was staffed by engaged, knowable, and upbeat people. The hallway track was really fun. I learned a lot from friends old and new in discussions. As I understand it there were about 1,700 people in attendance for everyone to talk to.

The venue, McCormick Place was huge. It needed to be to all all of the concurrent sessions. We only took up a small part of the place though. If you explored to far you could easily get lost. And I did. There was food available for purchase in the back of the exhibit hall. It wasn't bad. It was nice not to have to go far and wide to search for food. There were many good places to eat nearby however. I liked that I could get from the conference hotel to the conference without going outside. Especially the day it rained all day.

A good number of people approached me to say that they read and value this blog and/or my Twitter feed. I can't tell you how much that means to me. Thank you to all of you. You made CSTA extra special.

It looks like next year’s CSTA will be virtual. Sigh. I know that it will make it possible for a lot of people who can’t travel to an in-person conference to get valuable knowledge from sessions. A virtual exhibit hall doesn’t excite me though. And I will miss the hallway conversations. On the other hand, maybe we can have even more sessions and have them available to more people.

My previous posts on CSTA 2022

Sunday, July 17, 2022

My Day Four at #CSTA2022

It’s a short day today but with plenty to learn. Last night was a great party at the Museum of Science and Technology. I left early (age?) but I know that a lot of people stayed late and partied hardy. There may be some tired faces in sessions this morning. It was a great community building event so well worth it.

First session for me was “You CAN Teach Cyber Security with CYBER.ORG’s Cyber Learning Standards. CYBER.ORG is probably the premier Cybersecurity learning/teaching resources. CYBER.ORG is funded by the US Department of Homeland Security. We heard about a lot of their programs. It seems like they have something for almost everyone. I would start there for Cybersecurity resources for teaching.CYBER.ORG funded a large group of educators to write a set of Computer Science Learning Standards.

I had several good options for the last time slot but Nifty Assignments is a must see for me. The version at SIGCSE is always standing room only but apparently it is not as well known at CSTA yet. Baker Franke does a great job of putting this session together. For reference, CSTA Nifty Assignments are archived at CSTA Nifty Assignments SIGCSE Nifty Assignments are archived at Nifty Assignments. I was paying to much attention to take much in the way of notes but the archive should be updated soon. One of them can be played at Mind Reader - App Lab - The archive is updated and I can’t wait to try some of these when I get home.

That’s a wrap for me. I skipped the closing keynote to get to the airport early. I feel a little guilty but I’m also tired and my brain is kind of full. Some more general thoughts tomorrow.

Saturday, July 16, 2022

My Day Three at #CSTA2022

I got an early (for me ) start this morning. I attended a briefing session for session proctors (after missing yesterday’s) so that was good. A hot up of tea and some review of the schedule and I was good to go.

First session for me, Developing Cyber Sleuths (link to slides here) Cyber security is a rapidly growing area of need and of course creation. The latter not as fast as the former. One of the key early topics was related to the people side of security – policies and training for people. Hacking people is a key security flaw. New to me term, Purple Team. Combining Red Teams who try to break security and Blue Teams who try to stop hackers. Several interesting resources were shared. You can find them in the slides or course but I like Cybersecurity and Infrastructure Security Agency as a place to start. This sessions wasn’t quite what I was expecting but I feel like the links I got were worth my time.

After a couple of great hallway track conversations it was time for Creating All Year with APCS Principles. There were a couple of interesting sessions in this time slot so distance was a tie breaker. Of course, the create task is a special part of the APCS P exam (30% of the grade). This session was packed!

Jill Westerlund has her students create a video of their program running at the beginning of the school year.Videos must be in AP submission format and include what the create task requires. What a great idea for getting a jump on what they will need to the exam later! Snipping tools are introduced and required early as well. Require at least one mock task before they have to do the real thing. And grade it based on what they need for the exam. View it as formative assessment. Its about feedback to make sure they know how to do the real task. Be sure the mock task is not something they could turn in as a real CPT. Jill suggests requiring the official create task before your spring break. 

Bonus link: Jen Manly on Three Keys to a 40 Hour CS Teacher Work Week Jen is amazing. I love her short videos. I’ll bet this was a great session.

I spent lunch break and most of the first session period in the exhibit hall talking to people and catching up with some friends. Following people in social media is nothing like catching up in person. Another post on the exhibit hall is in the works. I took pictures.

My afternoon session was “Fun, Formative Feedback, and Assessments to Improve Learning” Slides are here. One of the first topics was Parsons Problems – one of my favorite tools. Apparently,  there is a Free, open-source graphical Parsons problem creator tool: Next they talked about rubrics as tools to help and advise students. Next up was peer programming Here is a link to a CSTA Presentation - Pair Programming. Next up was some Autograding tools (links in their presentation)I encourage you to look at their slides for more information and resource links.

Friday, July 15, 2022

My Day Two at #CSTA2022

Day two started off great as I connected with several people from my home CSTA Chapter –CSTA New Hampshire. The CS community in New Hampshire is growing and the CSTA Chapter has been a part of that. I’m planning on getting more involved in chapter stuff  in the future.

My first session of the day was about teaching ethics when teaching artificial intelligence. Jeremy Keeshin (a last minute replacement as I understand it) from CodeHS was the presenter.  Seems like some good small group discussions took place. Maybe I was tired but I didn’t get into it very well. My fault. Wasted opportunity. I did get a copy of Jeremy’s book “Read Write Code” which I look forward to reading.

Next up for me was a session on preparing the future developers of the metaverse.  The presenters were from Carnegie Mellon. First I have heard of XR as a generic term to include Augmented Reality, Virtual Reality, and Modified Reality. We had some really interesting discussion of using virtual worlds in school. One school had a virtual birthday party in Minecraft. Minecraft has moved from pure play to an educational platform.

Students are picking different virtual worlds to play in as they age.It occurs to me that younger kids are building things in games like Minecraft and Roblox but older students, especially boys, and moving to games like Call of Duty which are more destructive. Something to think about.

My number one to look more into is Arena XR – An Augmented Reality Edge Network Architecture.

I really enjoyed this session and had some good interactions and learning with my tablemates. Slides for this session are at CSTA2022 NoStudentLeftBehind.pdf - Google Drive

Lunch break and more time in the exhibit hall. I got a close look at the Jacdac devices for use with a Micro:Bit. I may splurge and buy a starter kit. Note that I posted a brief look at Microsoft and other big companies exhibits at Amazon, Google, Meta, and Microsoft at #CSTA2022

First afternoon session was about writing for Hello World magazine. I was proctor and arrived before it started but after most people entered the room. Watching the clock is important as it is so easy to get distracted with so much going on. Anyway, the slides for this talk are available at CSTA_Writing Workshop Presentation.pptx - Google Slides  A lot of good stuff here. I hope this gets more teachers to write for the magazine.

Next up was a session on cryptography with an exercise in creating a Pringles can Enigma machine. We started the session with an brief introduction to and with an introduction to the Pigpen Cipher. (Note that this is one of the ciphers covered in my (PDF) free Tiny Book of Simple Cryptography)  We had some fun creating our mini Enigma machines and working though how they work. We only used one rotor but I brought home some sheets to make a larger one with a larger can when I get home.

Overall, a pretty good day. Some very good sessions, some good conversations at the exhibit hall, and many amazing face to face conversations with friends. I am exceedingly glad to be here this year.

Amazon, Google, Meta, and Microsoft at #CSTA2022

I blog about what interests me or stirs my curiosity. One thing that fits that is what are the really big tech companies doing to support CS education. So I am going to write briefly about the presence of Amazon, Google, Meta, and Microsoft (alphabetical order). Anyone else notice that we never see Apple at CSTA?

All of these companies have sessions at their booths and as regular conference sessions to talk about what they offer. If you are at CSTA you should at least stop by and see what they have to offer. It’s a lot.

Amazon and the Amazon Future Engineer Program

Amazon had one of the large end cap booths with a lot of people and materials. Their main emphasis was the Amazon Future Engineers program. This program offers curriculum for all levels of K-12 as well as resources and opportunities for teachers.

Amazon Future Engineer is a comprehensive childhood-to-career program aimed at increasing access to computer science education for children and young adults from underserved and underrepresented communities.

Google and programs' for CS Teachers Another big booth on an end cap. Lots of color and fun graphics. And swings! Also free messages.

The big thing here is Google’s CS First program. This is a great collection of curriculum and supporting resources that can be used during the school day or as an afterschool program

Meta and Meta Engineer for a week. You’re probably not surprised that the link for more information on this is at Facebook. Engineer for the Week | Facebook but also at Engineer for the Week ( The curriculum has a strong “coding for good” component.

Started in 2018, Meta's Engineer for the Week is a free program that introduces engineering to learners (ages 11-18) historically underrepresented in STEM. Over the course of 15 - 20 hours, learners work alongside adult facilitators to build tech prototypes that address a social issue of their choice.

Microsoft and MakeCode, MakeCode Arcade, and Minecraft

Also a nice sized booth on an end cap. Not as fancy as Google’s it gives the impression it was designed by software people not marketing experts. The emphasis was on writing code, especially with micro:bits, using MakeCode, games with MakeCode Arcade, and teaching CS using Minecraft. Lots of things including Micro:bit powered arcade games to touch and explore.

Thursday, July 14, 2022

Day One #CSTA2022

Well it was day one for me. I know that some people got in yesterday or earlier either because they were taking a workshop today or were part of the Chapter Leadership program. For me, today was about getting settled, meeting with old friend (and making some new ones), and the exhibit hall. Wow! has the exhibit hall grown. The conference as well. Apparently there are about 1700 attendees registered. I remember thinking 300 was big some years ago. Looks like about half the attendees are first timers as well. That is amazing and wonderful

My trip was good. I checked in for my flight with an app. I paid for the El (Chicago’s mass transit trains) with an app, and checked into my hotel with an app. Travel seems to be all about the apps these days.

The exhibit hall was open soon after I arrived at my hotel so I went right in after registration. Proof of vaccination is required to attend and wearing masks is required as well. I’m good with that. I hear a lot of people got COVID at ISTE and these measures make me feel safer. It seemed to work at SIGCSE!

I met many old friends while in the exhibit hall and walking around the conference. Catching up was great. We also talked about CS issues of course. So great to have people who share ideas. I couple of people I have not met in person before but who I know from social media visited with me as well. It is so good to put faces with names and be able to get to know each other. If you are at CSTA and are a blog reader or Twitter follower I would love to chat with you.

I walked through the exhibit hall several times to get a feel for what themes there are. I’ll be blogging for about that as the conference goes on but I’ll share a few first thoughts here now. Physical computing is big in the exhibit hall. Lots of robots but also many other programable gadgets. Cyber security was represented by several exhibitors as well. We really need to teach more of that in the US so I was glad to see thing. Several artificial intelligence programs were being highlighted in the exhibit hall. I want to dig into that more this conference.

Lots of curriculum providers are exhibiting which is not surprise. They’ve all be exhibiting at CSTA for several years. The companies with hardware all have curriculum as well. It’s not like the old days when people dumped some hardware and said “here. Figure out something interesting to do with this.” Progress I think.

Google, Microsoft, Meta, and Amazon have booths as well. There is a set of swings in the Google booth (Pictures tomorrow) I’ll write about their programs as well when its not 11PM my body time after getting up at 6AM and travelling all day.

Today was everything I wanted my first day at in-person CSTA. Still more friends to meet and make and lots more to learn.

Tuesday, July 12, 2022

Dice, Simulations, and Math

My friend Andrew Parsons send me this link to an interesting video The unexpected logic behind rolling multiple dice and picking the highest. Now I love simulating dice on the computer. Creating a Die class is one of my favorite projects for teaching objects and classes in programming classes. I’ve long kept example of dice with other than six sides around to help students think outside the six sided dice box. So this video grabbed my interest.

Basically the presenter is looking at what happens if you roll two dice and pick the higher value of the two. What sort of advantage does it provide?.  So this gets into some probability and some related math. One of the first things he does is to look at the problem through a simulation (His Python code is here) OK now I personally would be happy with the simulation but of course that gives one the “what happens” but doesn’t go into why it happens. The math does that. The math is presented in an interesting way if a bit fast for me. I can see it being useful in an algebra or statistics class though. Lots of good math stuff. (Can I say “math stuff?)

For a computer teacher, the things this goes though are ripe for simulation problems though. What is the result for two dice? For three dice? And what about dice with more sides than six? What do you think? Have students watch the video at home and build their own simulations to compare with the mathematical results?

BTW the dice at the top of the post were made with a laser engraver that I have been playing with. Figured dice in binary would be fun.

Monday, July 11, 2022

Getting Ready for #CSTA2022

The CSTA Annua Conference is only days away. I’m pretty excited about it. It’s my first plane ride since CSTA in Phoenix in 2019. That’s a long time for me. Or was.  The online conferences have been excellent but there is nothing like seeing people in person. Attending SIGCSE this past winter really brought that home to me.

I’ve taken a couple of quick looks at the schedule but I still have to finalize (as much as possible) what sessions I want to attend. I am not doing any workshops this year so I don’t get in until the 14th. But the rest of the conference should be full for me. If not regular sessions, I am hoping for some great conversations in the “Hallway Track.”

Packing is something I will probably not do until the day before I leave but I’m making decisions about what to bring. I got a new phone for example. Battery life on my last on was horrible and my new one will go all day. I’ll bring a laptop as well. I like to take notes for my blog posts and also to Tweet live. Since I am not presenting one should be enough. I tend to bring a backup if I am presenting. I’m loading some books onto my Kindle for reading on the planes. I have charging cables ready for all three of course. And an extension cord with USB plugs as well as standard sockets. Don’t leave home without one!

In previous years I packed extra cables for just about anything I could think of because you never know what someone will need. I’m going light this year. My backpack just got to heavy. Plus I want room for swag. I do plan to come with badge ribbons (Troublemaker and “I follow AlfredTwo”) if I can find them. Probably some business cards. I recommend these if you have them BTW.

I’m looking forward to the exhibit hall as well. I already know some booths that are “must see” for me. I am told that Microsoft will be there with some of their new Jacdac kits and I want to check them out. I am hoping that there will be some booths on cybersecurity (CYBER.ORG is a sponsor so they will probably have a booth). I’m always up for robots and I expect to see some of those as well.

If you’re there I hope you’ll find me and say “hello.” If not, follow the #CSTA2022 hash tag on Twitter and visit my blog for updates along the way.

So are you ready? What are you excited about?

Tuesday, July 05, 2022

Teaching Computer Science–Moving atoms not pixels

On my first visit to the Lifelong Kindergarten Group and the MIT Media Lab, I notices a message on the windows. “Some people would rather move atoms than pixels.” That has stuck with my for years now. And it is quite true. Robots, game controllers, Internet of Things, and more are ways that computer science interacts with physical objects and not just pixels on a screen. These are ways that teachers can bring more students to more interesting (to the student) to get involved with computer science. But where to start?

Recently I posted curriculum resources that are especially good for teaching traditional computing courses. Well, cyber security is a bit new but anyway. Read that post at Welcome New Computer Science Teachers Today I want to provide some resources to bringing physical computing into the classroom.

Starting with a couple of devices that operate as “brains” for deeper involvement.

Raspberry Pi and the Micro:Bit are two of the most popular. Arduino and the Lego ev3 have been around for longer and are in wide use as well. One could get lost exploring all that LEGO Education has to offer. The Arduino Online Shop has a lot of resources as well.

Personally, I am a fan of both the Raspberry Pi and the Micro:Bit. Both the Micro:bit Educational Foundation and the Raspberry Pi Foundation have a lot of resources. Those are great places to start your exploration.

Ok, let’s talk hardware. While the sites for the Pi, Micro:Bit, Arduino, and Lego EV3 have a lot of links to resources there are more places to go depending on your interests.

Two of my favorites are AdaFruit Industries and Kitronik Ltd. They have devices that work with a lot of "brains." They have devices for all sorts of robotics or Internet of Things projects. I can spend hours looking through both getting idees for projects.

Also for the Internet of Things, I have bought a bunch of devices from Phidgets Education. I have been using these sensors and controls with Raspberry Pi in Python but Scratch, MakeCode, and Java are among other language choices. Speaking of MakeCode, that is an awesome platform for programming Micro:Bits.

I recently discovered Jacdac from Microsoft Research. Right now these devices only work with Micro:Bit but Raspberry Pi and a USB connection for laptops/desktops are projected for the future.

I could, and probably should do a post just about robots and robotics. But here are a few places to get started.

I promise a more comprehensive post of robotics soon.

Sunday, July 03, 2022

Welcome New Computer Science Teachers

Spring is an interesting time on social media. I help moderate a couple of CS teacher groups on Facebook and let me tell you, membership is booming! Why? Well, several reasons. For one thing a lot of teachers have been voluntold that they are going to teach computer science in the fall.Some have never taught CS before. Others have some CS background but are being asked to teach a more advanced course. In general, a lot of teachers are looking for help getting ready.

Hopefully, all CS teachers join the Computer Science Teachers Association (CSTA). There are both free and paid levels of membership. I am a paid member (AKA CSTA+) It’s worth it for the extra benefits. You’ll want to join and get active in a local CSTA chapter as well.

A book I highly recommend for anyone teaching computer science is Computer Science in K-12: An A-to-Z Handbook on Teaching Programming I can’t tell you how much I learned from this book.

Instructors are many Advanced Placement Summer Institutes are pointing teachers to Facebook groups. Two favorites for AP CS teachers are:

They're both outstanding resources for teachers of those courses.

Many people also join Computer Science Educators which is a wide ranging group for CS teachers.

Cyber Security is getting huge in schools (which is a good thing) and there is a great Facebook group for that. Cybersecurity Educators

If game development is your thing there is the Unity Teach Community group.

If you’re teaching an advanced placement course, hopefully, someone has pointed you to AP Summer Institutes. Really valuable for first time AP teachers.

There are also some curriculum providers that offer training and resources. A few of them are:

  • – they offer several levels of courses including pre-AP courses as well as AP courses.
  • CMU CS Academy – curriculum, resources, and (I think) training
  • CodeHS – Curriculum and resources
  • CYBER.ORG – Cyber security resources, training, and curriculum
  • Project Lead The Way – curriculum, training
  • Bootstrap – CS with math, physics, or Data Science

I’ll finish off with a couple of blog suggestions

  • Mark Guzdial – He’s currently doing research on teaching other subjects using computer science and what he calls “Teaspoon Languages” but he has a lot to say about how to teach CS.
  • Mike Zamansky – Mike is building a program to teach CS teachers at Hunter College in NYC. Mike shares a lot of good advice and ideas about teaching.
  • Garth Flint – Garth teaches at a small private Catholic school where he wears a lot of hats. He has some interesting takes on things and shares a lot of good ideas.

I’ve only scratched the surface here of course. But they’re a good start with places to ask for more help. Welcome to teaching computer science!

[Edit] if you are interested in using some physical devices in your course check out Teaching Computer Science–Moving atoms not pixels

Monday, May 16, 2022

BINGO Inspired Projects

My son’s school, he’s principal of an elementary school, had a Bingo themed fundraiser yesterday. I can’t help but think about how things are done with any event like this. My first thought was about the Bingo cards themselves.

Typical Bingo cards consists of a five by five grid. The letters B I N G O label the columns and each column has a random number. The center square of the grid is a “free” square and doesn’t have a number. Obviously, generating Bingo grids is a logical project. The numbers in each column must be without a specific range and duplicates are not permitted.

The next obvious project is one to “call” the numbers. The numbers must be identified by number and column where the column is identified by the letter above the column. Drawing duplicate numbers is not permitted so keeping track of numbers drown is important. Keeping track of numbers drawn is also important for verifying Bingos. A program should have a way to do that . This becomes a user interface problem as well as a data storage problem. That may be the most interesting part of the project. At least it is for me.

Now if you really wanted to get complicated, one could design a system where Bingo cards are numbered and their contents stored. One might then be able to use that data with the data of numbers drawn to verify if a Bingo was on the card using only the number of the card. I see this as a group project where individual students would write parts of the program and have them work together. A lot of planning would have to go into this of course.

The Bingo at my son’s school used a traditional ball cag. That seems more fun somehow than drawing the numbers on a computer. That doesn’t mean that software would be a bad way to keep track of numbers drawn and used to verify a Bingo. Another project idea perhaps?

On the other hand, the whole idea opens a discussion of “just because something and be computerized does that mean is should be?” The human factor is an important one. I’d love to have student discuss the pros and cons of computerized Bingo and old fashioned ball cages and physical tracking of drawn balls. Which is more authentic? What does authentic even mean?  That discussion might be just as useful as discussion of what data structures should be used to track Bingo numbers.

Friday, May 13, 2022

Teach CS in K-12? Please Help Gather Data

The Computer Science Teachers Association (CSTA) and the Kapor Center are conducting a survey of K-12 computer science teachers in the United States. The CS education landscape continues to evolve, and we want to hear directly from teachers about your experiences, challenges, and what resources would be most useful to you at this time. Having detailed and current information allows policymakers, curriculum & PD providers, State Departments of Education, membership associations, and other organizations to better understand and meet the needs of teachers. Results will be used to make specific recommendations to improve support for CS teachers.

If you teach K-12 computer science, we need your voice!

We invite you to participate in this national survey, which will take approximately 20 minutes of your time. Responses are confidential and optional.

As thanks for your time, the first 3,000 teachers who complete the survey will receive their choice of a $10 Tremendous gift card. All participants will be entered in a raffle for one of five $200 gift cards.

Please encourage other CS teachers to also complete the survey, and if you have any questions, please contact or Many thanks again for contributing vital insights to improving K-12 computer science education!

With appreciation,

CSTA and Kapor Center


Learn more about the Computer Science Teacher Association here.

Learn more about the Kapor Center here.

Wednesday, April 13, 2022

Last Mile Education Fund–Making a Big Difference

We often underestimate the difference that small things can make. When I was in high school all I could afford was a cheap plastic slide rule (no calculators back then) and it really slowed me down with math. I sometimes wonder what a more expensive and accurate slide rule would have done for me. I had other privileges and did well in the long run. But that is not the case for everyone.

Privilege often gets conflated with potential when in fact a lot of potential gets short circuited because of obstacles that are more common for non-privileged students. Things that are non-issues for many become showstoppers for far to many others.

Picture a student with great potential in computer science who can’t afford a good laptop? Or cannot afford her textbooks or lab fees? Low income students often take longer to graduate because they don’t have adequate preparation and need some extra courses and time to catch up. That often means they run short of funds even with the finish line in sight.  Even good scholarships often leave gaps in funding that limit students from underprivileged backgrounds.

That’s where the Last Mile Education Fund is making a difference today. From the mission statement of the Last Mile Education Fund:

  “The Last Mile Education Fund takes an abundance approach, investing in a broader group of students already committed to technology and engineering fields, providing support for challenges they face beyond their control, and incubating them to be the next generation of innovators. “

Last Mile Education Fund invests in striving, low-income students pursuing degrees in the high-demand fields of technology and engineering to support them in their last mile to graduation and into a career.

A number of grant programs are available. Some of them specifically for female and non-binary students but a number of them are available to all genders.  The Microsoft Cybersecurity scholarship is for community college students of any gender for example. Full information about these opportunities is available at the Current Funding Opportunities page. I have links attached to some that have pages with more details.They include:

  2. Bridge Grants

If you know of students who could take advantage of these grants please spread the word.  And let teams/people at universities and colleges who support low-income students know about these programs as well. They can help a lot of high potential students with some hurtles that could but shouldn’t hold them back.

Monday, March 21, 2022

Word Games and Cryptography

My latest discovery, thanks to Doug Peterson, is Crazy Phrase. Crazy Phrase is something of a variation of Wordle except that in Crazy Phrase the player is a phrase to discover. Clues are similar to Wordle with visual clues like green being a letter in the right place, yellow being in the wrong place but in the right word and blue being a good letter for the phrase but placed in the wrong word.

I was a bit intimidated when I first visited this new puzzle. I soon realized that some things involved in decoding cryptograms can be helpful. As with Wordle, looking for common letters is particularly helpful. With phrases we have the added option of looking for common words. This is especially true with two and three letter words. Words like “to”, “on”, “of” and the like can be very helpful in spotting the direction a phrase of going.

There is a proliferation of games on the internet inspired by Wordle these days. They offer a lot of possibilities for teaching problem solving. Creating new versions of games is an obvious programming project. Discussing these as cryptography related is an other possible topic. The use of computers to analyze strings is widely used for many applications so getting students to think about the process as used in games can be very helpful. And fun.

Tuesday, March 08, 2022

APCS A–Java or Python?

There is a lot of discussion about moving the Advanced Placement CS A exam to Python from Java. The Collegeboard is reluctant to do so. They see APCSA as the equivalent to CS1 or the first course for CS majors in university. They cite research that indicates that APCSA students for very well in CS2 (usually data structures) and that CS2 is almost always taught in Java or C++. On the other hand, at many universities the purpose of CS 1 is growing and the audience is widening to include students from many different majors. I wrote about that yesterday (What Should APCS A Really Be About?) Mike Zamansky took it on on his blog as well (SIGCSE 2022 - What language APCS-A part 1 - the intent)

It seems like we have to first agree on the intent or purpose of APCSA (and CS1) before we discuss language. Given that agreement is never going to happen – CS people can’t agree on anything. So I will start my discussion from the standpoint of APCS A should increase diversity in computer science and prepare students for using computing in CS as well as other disciplines.

This is a concepts first decision not a language first decision. I feel that non-CS majors need the same concepts as CS majors. SO what are those concepts? Not a lot changes except that in computing widely APOs are bringing far more critical than they used to. They enable programmers to easily do things that used to be hard. They also more things we used to do early to later in a CS major.

Sorting is one example. With so many libraries to do sorting why should we spend a lot of time in a first course having students write sorts? We know they sorts they will write are not going to be up to the standards and power of sorts they can call that exist already. Algorithms? Surely there are other algorithms we can focus on to help students learn to study problems and developing algorithms?

So if we want to increase the number of students who study computer science beyond the limited scope of would be computer science majors preparing students for CS2 loses some power in the argument. And Python gains some because of all the APIs that are available and all the other disciplines that are already using it.

At SIGCSE, the panel members arguing for Python talked about much of what I write above. They also talked about Python avoiding some of the “cruft” of Java. How much easier “Hello world” is in Python for example. The “other side” focused mostly on the costs of changing and not specific criticisms of Python. There are things about Python that people do raise. It’s dynamic typing rather than Java’s strict typing. I’m a strict typing person myself but I can be open minded. Also the use of white space. Now it is not clear to me that either white space or curly braces have advantages over the other so I see that as a wash as well.

The post panel poll, FWIW, had 57% saying to switch to Python and 28% saying “keep Java” with the rest being answers all over the map.

I have no dog in this fight since I no longer teach AP CS but I am leaning toward that it is time for a change. I like the idea of a high school course, even on modeled on a university course, preparing a wider range of students for a wider range of majors.

The Collegboard is going to do what they want and the costs of changing may be as big a factor as anything. They are also driven by what universities do and as universities revisit the purpose of CS1 that will have more impact on anything anyone in high school has to say.

Mike Zamansky has a different take on this at SIGCSE 2022 - APCS-A Language strengths and weaknesses

Monday, March 07, 2022

What Should APCS A Really Be About?

Perhaps my favorite panel of SIGCSE 2022 was debating the question of should the APCS A course switch its language from Java to Python? During the discussion it occurred to me that there was a bigger question that had to be answered first That is “what is the purpose of APCS A?” Now the normal and obvious answer is that it should be equivalent to university CS1 courses – the first course CS majors take in university. That's too easy and also not helpful.

What should CS1 be all about? Traditionally, CS 1 was a course taken by CS majors and was preparation for the rest of the CS curriculum. Today it is not that simple. Increasingly, other departments in other disciplines are wanting their students to take CS1 or something much like it. Engineering, astronomy, physics, and business are just some of the areas where programming is growing as a tool. The CS department is the best department to teach this first course.

What does that mean? Well, for one thing it opens the door to more programming languages. While Java and C++ are the big languages for a next course for CS majors the same is not true for other departments. Without getting into the language discussion (until my next post) we need to look at what concepts are needed and ask if they are similar enough for everyone.

Owen Astrachan suggested at SIGCSE that the “A” in “APCSA” has traditionally stood for “Algorithm” but should now stand for “API.” Not that we ignore algorithms of course but that APIs were the way computing was increasingly being done. If we look at how non-CS programs are using programming we see that this is very much the case. This probably means that for CS to remain and improve as a teaching, learning, research tool it has to focus on APIs as well.

That is probably only one example of things we should look at changing (in APCSA and CS1) I  get the impression that many university departments are already changing and looking at changes as they see their CS1 course serving more than just CS majors.

Circling back to APCSA in particular, are all of our APCSA students going to major (or minor) in CS? Probably not. Many? Perhaps. But a majority are probably going to move into other areas of study. To we ignore their needs to focus only on future CS majors? That seems a recipe for turning students off from computing completely. High school courses should never be weed out course. One can have a rigorous impactful course without scaring people away from the field.

There is a lot of thinking about what CS1/APSCA should be about and I want to learn more about how university departments are adjusting to today’s  needs for students. Keeping things the way they are today just because we have always done it that way seems a lot less than ideal.

What is your thinking? What should CS1/APCSA be focusing on?