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.

AP CSA

After 20 years in education at my local elementary school, I have a new position in the fall at my local high school. I will be their Digital Learning Specialist (Tech Integrator) and CS teacher. It is really a dream job for me. I get to help teachers with their technology (my “superpower”) and teach kids computer science (my “passion”). I’m so excited for the fall.

I’ll be teaching two CS classes in the fall- Computer Science Principles and AP Computer Science A, and I’m using code.org‘s curriculum for both. Last year I assisted in teaching AP CS Principles and it was the first time AP CS Principles had been taught at the school. I made room in my schedule to be in their class every Thursday (plus any other special activity day as my elementary schedule allowed). It surprised me how much I enjoyed working with the high school students (half of whom I taught coding to in elementary school).

In preparation to teach code.org’s AP CSA curriculum, I spent a week in Maine at an EducateMaine-sponsored 5-day workshop. It was excellent. It was intense. I’ve just returned from it and while I’m tired, I’m still really excited about getting into the classroom and presenting the content to the kids. During the week I met other high school CS teachers and built a new personal learning community network.

The code.org’s AP CSA curriculum is new this year. Our workshop facilitators piloted the program last year and this summer is the first time code.org teacher training workshops are being offered. At my school, most of the students who were with me in CS Principles will be taking AP CSA, so while I was at the workshop I could envision pain points in the lessons based on my knowledge of those students.

There is a lot of vocabulary in AP CSA. At one point halfway through the workshop we played vocabulary Bingo from the vocabulary list of the first two Units alone and it was a struggle. Of course, we’d had 3 days with the terms. The students will have more time and practice with them through the course. It is good to know this before the year starts so I can plan vocab review activities and encourage the students to keep a journal or binder for vocab. I’ve already asked one student her best strategy for learning vocab and this was her reply:

I think it would be best if all students have some sort of notebook/ composition book where they write in all the vocabulary as it comes up in one section then when they move to a unit start another page and label it. In this way they can customize what they write about each thing such as adding examples or an analogy when helpful. Then at the end of the unit go through all the vocabulary and make sure we have each and every term.

AP CSP student going into AP CSA

The other CS teachers in my CSA cohort noticed the vocab-heavy curriculum, too. One created and shared with us the Unit vocab lists in GimKit. I hadn’t heard of this tech tool and we got a chance to play a quick round of virtual Capture the Flag. I think the students are going to like this vocab practice tool!

Me in a GimKit of Capture the Flag

I learned that the AP CSA test consists of multiple-choice questions (50%) and free-response questions FRQs (50%). The code.org curriculum introduces, scaffolds, and provides a lot of practice with FRQs. The AP test is all paper and pencil so the students will need to practice handwriting Java code, reading Java code, etc.

I’ve still got some more to learn and prepare for the start of school, but I feel I’m in a good place and have the support I need (or know where to find it) for AP CSA. Hopefully, this feeling lasts through to August.

CS Teachers at the Portland SeaDogs vs NH Fisher Cats Minor league baseball game. Photo by Angela Oechslie.

Do you want to know more? Well, I had to learn to accept non-closure at this CS Summer Institute, too.

Make your Heart Grow with Scratch Jr

I like to use February to promote kindness so I had my first-grade classes create Be Kind projects in Scratch Jr as a final project. I used this project to teach the send and receive messages blocks.

The first graders started in Seesaw with a video about being kind online and a music video from Sesame Street about Kindness and then a group discussion and a Kind Kids drawing prompt from Tracy Piltz on Seesaw (I may have played the music video a few more times as well). The next time we met we reflected on our kindness drawing and started creating an animated version in PBS Scratch Jr.

I reminded them that they could draw their own background. After creating or adding the background they needed two Sprite characters – I generally encouraged using people showing kindness to each other but being kind to animals is also good.

Kindness projects by 1st graders

A lot of them wanted to animate asking questions like “Do you want to be friends?” or “Do you want to play?” and then having a response so I showed them the “send a message” code block and the reciprocal “receive a message” block for the response. They did a pretty good job of coding those up.

I made sure to have enough time to share their projects after adding a title and naming their project. I encourage good naming habits. ScratchJr defaults to a Project # which I try to compare to having a library full of books titled Book #.

I’m thinking of making them into an animated movie to share with the school community but it is time-consuming to record all of the projects on the iPad and compile them.

I was having so much fun with this kindness project that I had Kindergarteners make Valentine’s Day animations – or Be Mine projects. In my K classes, I introduced (again?) Scratch Jr.’s drawing and editing tools to draw hearts. They struggled a bit with the order of choosing the drawing tool, drawing then switching to the fill bucket then back to the drawing tool but it was a good exercise.

After making the hearts we added a character to receive them. Then we used the blue code blocks to animated our valentines. I introduced the pink “grow” block to add growing to the movement of their Valentine hearts. It was so fun to say over and over “make your heart grow” to the little 5-year-olds. It was a bucket-filler for me and the kids had a great time – after some initial frustration learning new stuff. Some of them even experiemented with other pink blocks like “shrink” and “hide”. We didn’t have time to share the projects but their teachers came around and saw them.

K example Valentine animation

12th Code Club Starts

I started my 12th session of 4th-grade Code Club last week.  Just like last year, we are going to start off with Snack Discussion. During this first meeting I went over my expectations, rules, and plans for our future meetings:

Meeting # Meeting topic outline
1 First meeting – Rules & goals, intro to Scratch
Ist learning project
3 2nd learning project
4 3rd learning project
5 4th learning project, begin designing your own project
6 Design review
7 Begin individual/pair project
8 Continue work on individual projects
9 Finish work on projects
10 Showcase of projects – Parents invited!

Then I asked them what their goals for Code Club were.  What did they want to learn – because I can present lessons that help them meet their goals.

IMG_2353

What my Code Club wants to learn to make with Scratch

For some, they just want to learn to make Sprites move around using the arrow keys. Others want to make something like a Fortnite or Surviv.io Battle Royale game.  I told them I wouldn’t allow any first-person shooters and I have a general ban on weapons (although I have made the occasional exception for a toilet paper cannon, and a laser gun for shooting blobs).  My 7th-grade helper helped me out by describing the work it would take to “code” the whole landscape of Surviv.io Battle Royale and generally expressing his opinion that it would take too much work to do something of that scale.

I have two former Code Club members as helpers in this session.  I sent out an email last month to the Tech Integrator and other STEM teachers at the high school looking for a possible high school volunteer for Code Club. When I didn’t hear anything, I sent some emails to my first Code Club parents.  Those students are now 9th graders, but I heard back that they are busy.  One younger brother (my 7th-grade helper I mentioned above) was willing to help out. Yay. He arrived (he is really tall now) and asked if it was the same format as when he was in Code Club.  Yep.  I haven’t changed much of the format.  He agreed that it worked as he enjoyed making his own project during the second half of the session.  A fifth-grader and Code Club member from last year also showed up to help.  Once I confirmed with one of his parents that he was allowed to stay, I had two helpers.

I usually start with a maze project or Chatbot.  I decided to start with a Chatbot.  I use Code Club world project directions and I like the first project to be an easy one so they can get used to the direction format. Whenever someone needed help, I’d make sure they had at least looked at the directions.

Other times when someone needed help, I’d have to encourage my helpers to jump in.  I think they had a good time and were helpful.  I heard them complain once about the coders not saving.  “You should save! Often.” I heard the 7th grader say.  I think the students were deleting the whole Sprite when they wanted to make a costume change rather than changing costumes from the costume tab.  I think I’m going to talk about the Sprites and their properties (and saving) next time.

I’m also going to introduce Space Junk as a learning project. It will meet their goals of learning to use arrow keys and the obstacle avoidance games. We are off to a good start.

Computational Thinking

I’m redesigning a coding unit in my New York Academy of Sciences STEM Education in the 21st century online course. I’m building off my Trick or Treat project and the Math Quiz game project that I have taught in the past, infusing the lessons with essential STEM skills like problem solving, critical thinking, and creativity.  The course is really helping me think about my learning objectives for the students. It is also helping me understand the importance of this types of activities – beyond that they are engaging for students.

Concurrent to the course, I’m actually running the unit in two math classes, co-teaching with the classroom teacher so I am able to fine tune the lessons and reflect on what went well or not so well.  Last week we finished up the Trick or Treat project (lesson 1 and 2) just before Halloween.  Here is the project instructions document: Public Trick or Treat instructions. One teacher expressed how organized the project was and how the handout made it easy for her to help students. (All this planning is paying off ) I also had a sample project that I modeled with and had the students brainstorm ideas for different actions when “trick” or when “treat” was selected.

I changed my handout for the next lesson when I heard that students felt they were getting out of learning because it was so much fun.  I wanted to make their learning visible to them.  They needed to know how much computational concepts and thinking they were actually doing. I came across the Creative Computing Curriculum Appendix on Computational Thinking and crafted this reflection page to help my students see what they were learning: Public Scratch: Reflecting on Learning  I went over all the concepts and we talked about how we had already used some of them and some we would use later.  We talked about the different practices, especially testing and debugging.  I was impressed with reflections they did.  I can see that they can identify the concepts and practices they are using as they learn to code.

Screen Shot 2019-11-03 at 6.20.13 PM

4th grader’s reflection

In addition, we spent time on testing and debugging.  I used this project to model how testing and debugging work (I even told the origin story of debugging) and I had a worksheet for them to fill out while testing.

Screen Shot 2019-11-03 at 6.22.55 PM

Reflection on revising

Screen Shot 2019-11-03 at 6.23.19 PM

This student knows how if-then-else blocks work!

Screen Shot 2019-11-03 at 6.24.20 PM

For 3rd grade I simplified it a bit, and still got awesomeness.

 

Screen Shot 2019-11-03 at 6.41.36 PM

 https://scratch.mit.edu/projects/340589577/

(I’m going to just hit send so this doesn’t end up like the numerous other draft posts I’ve written lately.)

Finite State Machine

My monthly middle school library code club met this week on April Fools Day.  I thought it would be fun to make a joke or prank project but I wanted to give some boundaries to the students, too. I was a little bit worried that we might end up with some inappropriate projects.

I kept thinking about one project that a middle school student made during the Winter Carnival coding sessions.  In addition to his animation, he had a simple button on the screen that said: “Don’t press”. Of course, users are going to press it.  Pressing it made a really annoying and alarming sound. I thought this type of project would make a great April Fools project for my group.

When I started to make my own version of the “Do Not Press” project,

I realized that I wanted different things to happen: first one thing would happen, then something else, and so on. Each time you pressed the button something new would happen. I would need a way to check how many times the button had been pressed and use that to decide what would happen. I needed a finite state machine (at least a very simple one).

Screen Shot 2019-04-03 at 9.58.31 PM

A finite state machine, FSM, is a basic computer science concept for controlling the logic of a program. The concepts center around keeping track of the state and what it takes to move between different states. This example is the simplest form of FSM. Now I had a lesson to teach the students and a fun prank project for them to make, too.

Using a single variable to keep track of the state of the project can come in handy for many types of projects. I had a couple of the coders in my mind who would find learning this concept useful in the programming they like to do.

The coders did find the project fun.  A few of them expanded on my starter project and a few them took the concept and used it in their own original way.

I only wish I had not made the final state check “if state > 3” but “if state = 4” in my example.  That would have made it easier for the coders to add on more states.

CS Concepts in Elementary Grades

2018 January Tech Expo LOGOThis last week I led a professional development session titled “CS Concepts in Elementary Grades” for my district’s Tech Expo.  It was one of several dozen sessions available for teachers during the day. I had just a handful of teachers at my session.

 

I started with this video from Code.org. It introduces “why CS?” better than I can.

Next, we took a quick look at the CS Standards at http://www.csteachers.org/page/standards, just to see that there are standards and where to find them.

Then it was on to try out Scratch.  (One teacher had mentioned this is why she signed up for my session.  She wanted to learn Scratch.)  I introduced Scratch by going over these concepts:

    1. Stage
    2. Sprites
    3. Script, Costume, Sound tabs
    4. Block menu

Then I let them try out the Virtual Pet project using the Scratch cards from https://scratch.mit.edu/tips.  I picked the Virtual Pet project as it hits all the concepts I wanted to introduce.

 

Screen Shot 2018-01-22 at 7.36.58 PM

Code from a student-made Virtual Baby project

 

These are the concepts I think are important for elementary students to be introduced to:

    1. Computational Thinking
    2. Algorithms
    3. Commands
    4. Events
    5. Initial Conditions
    6. Decisions / Conditionals
    7. Iteration, Loops and Forever
    8. Coordinate knowledge
    9. Data and variables
    10. Debugging – Checking for errors

I had one Kindergarten teacher attend my session, so I handed her an iPad with Scratch Jr. on it.  She had a great time playing and exploring Scratch Jr. while the rest of us working on our Virtual Pets.

The Virtual Pet project turned out to be pretty complicated for a first time Scratcher. They had a hard time with Broadcast and Recieve, just like my Code Club members when they tried the Virtual Pet project. I guess I knew this would be a difficult concept but it is so powerful. I like all the things you learn when trying this project out, even if it is a bit overwhelming.

After some success, we moved on and I showed them some student work.  I wanted them to see examples of how to incorporate Scratch into their curriculum.

    1. Intro to Scratch was independently made by one of my former Code Club members https://scratch.mit.edu/projects/177914932/
    2. Infinity and Beyond shows how a research topic (math topic in this case) can be shared using Scratch https://scratch.mit.edu/projects/22933952/
    3. Apple Inventory is another case of using Scratch to demonstrate understanding  https://scratch.mit.edu/projects/66568488/
    4. Math Games by students for Hour of Code week  https://scratch.mit.edu/studios/3616910/
    5. Winter Fun is an introductory project I’ve done with students https://scratch.mit.edu/studios/3664546/
    6. Spirograph Studio (reminiscent of the old Turtle paths play)  https://scratch.mit.edu/studios/3984733/

 

Screen Shot 2018-01-22 at 7.32.51 PM

Using Scratch to show your math solution.

 

I have many more, but as we were running out of time I quickly went through some Debug-It projects I found on the Scratch site.  I think it is important that teachers feel confident in helping students when they get stuck.  Knowing how to debug Scratch projects can help.

Debug it

  1. https://scratch.mit.edu/projects/23267245/
  2. https://scratch.mit.edu/projects/24269007/
  3. https://scratch.mit.edu/projects/2042712/

I didn’t really pick the right Debug it projects for my attendees.  These were more challenging for my audience than I thought they would be.  I wish I had chosen easier ones or left this for another session altogether.

I hope my session left them with an idea of how to start using Scratch in their classroom.  I also hope they will reach out to me if they would like support facilitating Scratch projects in their classroom.  I worry that they were a bit overwhelmed with all I presented. They were a pretty quiet bunch, but I guess I’m used to a room full of rambunctious 10-year olds.

Oh, and I also compiled this list of resources:

Resource List

ScratchJr:  http://www.scratchjr.org/

Scratch online: Scratch.mit.edu 

Teacher accounts https://scratch.mit.edu/educators/

Scratch cards & Educator Guides https://scratch.mit.edu/tips

Offline editor https://scratch.mit.edu/download

Starter Projects https://scratch.mit.edu/starter_projects/

ScratchEd online community http://scratched.gse.harvard.edu/

Creative Computing Curriculum using Scratch http://scratched.gse.harvard.edu/guide/

Code.org Teaching Computer Science Fundamentals PD

https://studio.code.org/s/K5-OnlinePD

Code.org Lessons: https://code.org/student/elementary

https://code.org/educate/curriculum/elementary-school

CS4NH resources:

http://www.cs4nh.org/resources/framework-standards/

CSTA K-12 Computer Science Standards, Revised 2017

http://www.csteachers.org/page/standards

CS for All Teachers 7 “big ideas”:

https://www.csforallteachers.org/computer-science-principles

CodeClub.org:  https://codeclubprojects.org/en-GB/scratch/

K-12 Computer Science Framework: https://k12cs.org/