CSP 22-23 Year in Review

I just finished my first year teaching Computer Science Principles at my local high school and it’s time to reflect on the year and celebrate some of the outstanding projects made by my students. It was my first official year of teaching CSP and high school students. I had a group of 15 mostly seniors with a couple 10th & 11th graders. Eleven students took the AP CSP exam in May.

I used code.org’s CSP 22-23 curriculum, which I enjoyed. I was fairly true to the course, only augmenting here and there. I was pleased with it overall but I have some ideas for next year. I want the students to make more coding projects – especially before they start the AP CSP performance task. I could have been more prepared myself for PT expectations and have better prepared my students for it. This summer I will be taking more code.org professional development to dive deeper into CSP. I’m excited for cs teacher summer camp.

Early in the curriculum, the students learn about digital data and binary. I had them create bitmaps in Google Sheets. I’d like to do more next year. I have an addressable RGB matrix from Ada Fruit I’d like to set up for this unit.

First project: The students’ first project in code.org’s App Lab is in unit three. My students worked on a project in pairs and played with designing screens, adding and naming elements, and doing the coding of onEvents. App Lab’s IDE makes it pretty easy to get started with Javascript – being both text and block-based coding and having a full design toolbox. Here are two memorable first projects:

The next unit was on variables, conditionals, and functions. Most of the parts you need to make a decision-maker app. One of the key takeaways was to make an updateScreen function to call when onEvents happened. The updateScreen function would check all the conditions and display the results. It could be called from any button. I liked the EIPM setup of the unit. Lessons were ordered in Explore, Investigate, Practice, and Make to learn the concepts. Students worked in different pairs or individually for the final Make project. Here are two fine examples of their decision-maker apps.

I also started requiring comments. I think I’ll refine the comment requirements for the next round with a title, purpose, and author at the top. I did have some good commenters:

Unit 5 – List Loops and Traversals. This is where the rubber meets the road. For new-to-coding students, lists with indexes are a lot to take in. Loops can make sense, but then algorithms to work with data and very big lists can be daunting. The unit project is big and at the end, we’d had enough coding for the moment, which is unfortunate, because we could have used one more project before the AP Performance task began. Here are a couple of outstanding Hackathon projects:

After the Hackathon was the end of the first semester. Some students only take the first semester of CSP, the rest stay on to prepare for the AP test. One student who was going to take the full course bowed out at the end of the semester saying coding wasn’t for him. Another decided to stay – say coding was definitely for him and he is planning to major in Computer Science now. For the midterm, I wrote some review questions from Units 1-5 and had the students pick one project to improve.

In the Google form for the midterm, I forgot to collect any personal identifying information 🤣. I could mostly tell who’s test was who’s from the short answer questions, but I had to go back to the students to be sure I gave the right grade to the correct person. Here are a couple of improved App Lab projects:

Unit 6 was a very short unit on algorithms. It was a dry topic for them even though there were plenty of unplugged activities and online simulations to enhance the unit. I need to do better with it next year. I think it would balance nicely with creating a game in App Lab. Fortunately, I found out about Gimkit last summer. Students really enjoyed using Gimkit to study vocabulary. It didn’t seem to matter what game they played.

The last unit before the AP CSP Performance task is Unit 7 where we learn about functions with parameters and returns while creating libraries. I feel I could have done a better job on this unit and that would have prepared them better for the PT. Their functions turned out okay but most were not complex enough to meet the PT expectations. The concepts of a function as a black box, scope (the notion of global versus local variables), and how to deal with returns was lost on a few. The project guide had questions that were similar to the questions that were going to be on the AP Performance task – a nice preview of what was to come that I could grade and give them feedback on. I think I will need to figure out a way to improve my teaching of this unit. Here are a few example functions made by my students:

As a teacher, I felt Unit 8 was the hardest to orchestrate. I went over the AP performance task rules, examples, and planning guide. Then I had to be hands-off while I gave them three weeks of class time to complete the task. So much independent class time. It was hard not to answer their questions and only “keep them on task”. After all that class time, I still had three students not complete and turn in the PT task until days before it was due. I have to figure out a better plan for managing this unit – perhaps grading them for staying within the outlined time frame. I can’t post any of their projects yet as the AP CSP scores won’t be released until next month. I have my own unshared “scoring” of their PT tasks and will compare my expectations to their scores when the results come out.

Unit 9 was about data visualization and interpretation. I think this was a fairly easy unit for most of my students because a number of them have taken AP science or math courses, which would cover this. I also knew that we were going to do an extra unit on machine learning after the AP test which would address data bias even more. Their projects met all of the expectations but none of them were exemplars.

By Unit 10 we needed another App Lab project to create. I remember seeing the presentations of Unit 10 projects from the previous year and I remembered I was underwhelmed. It seemed quite a bit of time was spent not coding but looking at innovations and global impacts. Those are important topics but the end result didn’t justify the time invested. So I set a different end-of-unit project. I still made sure that they completed all of the relevant lessons on cybersecurity, innovation, and global impact, but I gave them the task of creating a clicker or other animation game.

This time I got some stellar projects from my students. It also helped relieve some of the monotony of taking the full-length MCQ practice tests I was simultaneously assigning as we prepped for the AP test. Here are some good examples:

Here are some great examples: Invisible Maze where you have to find the hidden walls to navigate to the trophy. Donut Clicker – so many levels, such great detail, and a Doodle Jump remake from an amazing coder (and future CS major).

And here is a legendary example: Castle Clicker will go down as a mega game that almost caused this future CS major to fail a class (different from mine) because he spent all his time on this game – in that other class and basically his whole available time for the two weeks. Here were my comments to this student about his project:

There are so many layers to this game. He definitely went beyond the expectations I had set for this project. He is a gamer and now wants to be a CS major.

The students felt prepared for the AP test and came back saying they have plenty of time to complete all of the MCQs. AP results come out in July. I’m only concerned about a few students.

After the AP test, we had about four weeks of class before the end of the school year. That reflection will need to be another blog post.

It feels good to put my reflections down in a blog post again.