It was great to have most of these resources free of charge, if only for a specified time frame. Teachers could select the curriculum that best fit their individual needs and requirements, without having to worry about getting administration to approve within their department budget. Hallelujah! From a business standpoint, this was certainly a smart move. If teachers adopt a particular curriculum now, it is likely that they will also want to purchase it for the next academic year.
Even though I was certain that my curriculum was fine for remote learning, I decided to take a look at other curricula and see how they have changed and what has been added since I chose my curriculum three years ago.
In the end, the curriculum I have been using for three years is the one I chose to stick with. Carnegie Mellon University has developed a free introductory computer science course (CMU CS Academy), which is taught in Python. The course offers high-quality instruction in the development of programming skills, exercises with engaging graphics that are interesting and fun, an opportunity to focus on individual creativity, and the ability to challenge even the best student.
Fostering higher-level thinking skills
Of course, not every student who takes an introduction to programming course will want to pursue a future career in software development. Not every student is even going to like programming. So why worry about the quality of your curriculum? Don’t we just want to give them a taste of coding so that they can understand the digital world around them a little better? Not in my opinion. That would be a disservice to all students, in this era of twenty-first-century learning.
We need to prepare our students for success in their future endeavours. High school computer science curricula that just teach a student to use syntax and allow them to randomly code — or even worse, drag and drop code until they get it right — is like teaching a student words without explaining the difference between an adjective and a noun or allowing them to write sentences. If we want our students who are entering third-level computer science programmes to have a competitive advantage in the field of software development, we need to ensure that the quality of their learning is of the highest standard. To go a step further, we need to ensure a high standard if we want enough students to be capable of entering these fields in the first place.
Beyond providing students with a good foundation in programming, a good-quality curriculum can also reinforce a student’s ability to think critically and problem-solve in an ever-changing world. In my experience, I have found the CMU CS Academy’s flagship CS1 curriculum to be excellent in terms of fostering higher-level thinking skills and creativity in my students. They have created a curriculum in which problem-solving, critical thinking, and comprehension skills are reinforced, challenged, and honed to the highest of levels. Students can use these skills to progress through differentiated and levelled exercises, and design and create what is uniquely their own work.

What is essential to a good computer science curriculum?
Graphics
We need to offer high school students graphics that are interesting, engaging, and challenging, and the CS1 curriculum makes use of good graphics from the very first lesson. As students learn about syntax, they learn to use graphics as tools. From the start, debugging is as much a visual act as it is a check for errors during compilation. It often makes more sense to ‘see’ the error than to have to search through text for it. I find the exercises visually interesting and believe that they provide various levels of challenge for students. At the end of each unit, students get to create their own graphical designs and animations, which helps to encourage their own unique creativity.
Event-driven programming
What drives most high school students to learn about computer science? We all know the answer: games! And what is involved in all the games that students like to play? Great graphics, and interaction with the graphics. When educators introduce events to their students early on, they are able to interact with their projects sooner. Starting in unit two, the CS1 curriculum introduces mouse events, allowing students to make their graphics do something. This has helped my students to become even more engaged and has made them want to learn more events. Many curricula do not present event-driven programming at all, and if they do it is often after most other programming concepts have been taught. By that time, many educators will have lost most of their students to boredom or frustration. Adding events early is a good incentive for students, as it will enable them to do more; they can learn the necessary programming concepts in order to progress through the units and create cool animations and games.
Critical thinking and problem-solving
Problem-solving and critical thinking refer to the ability to use knowledge, facts, and data to solve problems effectively. For our students, this doesn’t mean that they need to have an immediate answer — it means they need to be able to assess problems and find solutions. According to the US Department of Labor, this is one of the critical skills employers are looking for in the present-day workforce. Furthermore, this is a skill that all employees will need, and not just computer science employees.
For my students, I have found that the CS1 curriculum helps with the development and strengthening of these skills. Each exercise contains prewritten code and/or commenting and hints that help to develop and reinforce a student’s ability to think critically and solve problems to complete the exercise successfully. It is not enough for a student to simply code an exercise until it produces the solution on its own. They need to use what given information they have, to find and create the solution as they are directed. As logic becomes more and more a part of the exercises, students need to use their critical thinking skills at higher and higher levels to solve the problem that the exercise presents.
Teacher support
What teacher doesn’t want tools that can help to relieve the burden of mundane tasks? Whether teaching remotely or in the classroom, we all want to be more available for the important things: answering students’ questions, differentiating learning, and providing supportive instruction. The tools provided by CMU CS Academy have allowed me as a teacher to determine classroom pacing, collect individual academic data on each student, access student work, limit the ability of students to share or copy each others’ work, and autograde exercises.
The Teacher Portal offers everything a teacher could possibly want, as well as the ability to pick and choose the tools and resources that best suit their teaching style. While teaching my students remotely earlier this year, the hardest thing for me was to know how much effort my students were putting into their work. Then CMU CS Academy added a feature called the Daily Usage Chart, which allowed me to know how long each student had actively used the site. This allowed me to track those students who were not working on the curriculum as much as they needed to in order to succeed.
Cost
One major benefit of the CMU CS Academy offering is that it is free. Not only do you receive the curriculum and all teacher support tools, there is no cost for professional development through Carnegie Mellon University, and there is no cost for using their resources for assistance through the year.
Final thoughts
I have always found programming a fun challenge. When I began teaching, I noticed how little students think — truly think — when they are learning to program. Get those synapses firing! More and more I find that computer science curricula are focusing on the fun of coding and not on the thinking that is necessary for deep and lasting learning. Unlike when I learnt to program (before the internet), students today have the ability to simply change code haphazardly until it works. Skills such as writing flow charts, hand tracing through code to find logic errors, and testing with all boundary conditions seem to be things of the past. However, the more students do use them, the more these skills help them to find logical errors and create more efficient programs.
While teachers and their students will all have different requirements, the CMU CS Academy has certainly worked well for me. In my experience, it promotes proper learning, and facilitates and hones thinking skills. Although we are teaching twenty-first century learners, our curricula should still be reinforcing the value of thinking in all areas. Our students may be keen on using fun and engaging activities to increase their knowledge base these days, but we should never choose learning that does the thinking for them just because it looks fun.