Performance Assessment in CS

In my middle school CS class, I started a unit on text-based programming. I’m using the JavaScript language for this unit and working through Khan Academy CS, which I love! The CSTA standards help set some boundaries for the unit:

CSTA:L2:CPP:5 Implement problem solutions using a programming language, including: looping behavior, conditional statements, logic,
expressions, variables, and functions.

So interesting that the stuff we spend most of our time on in CS class is summarized in this one standard. Each item could be (well, usually is) expanded into a whole week’s worth of content or more!

I chose to start our JS unit with variables, expressions, and conditionals – the assessment was focused on these topics.

I decided to give the students a written quiz and also a performance task. I put both in a Google Doc, and I created an assignment in Google Classroom for the students to submit their performance task to me.

Google Classroom made it super easy for students to submit, and for me to grade, web-based programming assignments.

The written quiz has 3 questions, which are in the Google Doc. I had the students answer these on paper.
Question 1 asks students to determine the value of variables after several assignment statements.
Question 2 asks them to choose the best assignment statement for a given situation.
Question 3 asks the students to evaluate Boolean expressions.

I had a devil of a time writing the assessment, and at a first glance, I don’t think the students did very well. There are so many interwoven strands that it’s very, very hard to isolate individual skills you need to be a programmer. Kids need to know the syntax of the language, order of operations, mathematical modeling, the meaning of percents and decimals, and rules for operations on integers. They have to be detail-oriented enough to notice nested parentheses and they have to be good writers to explain their reasoning. If a student misses a question – how do I know which skill is deficient?  Some students don’t understand that multiplying by a decimal makes a number smaller, or that multiplying by 0.25 doesn’t give you a 25% discount. Can I still assess whether they understand variables and expressions, or are those skills too entangled to separate them?

Tough call, and I’ll continue to search for ways to get that information.

I was prouder of the performance task. Here was the prompt. Students needed to create a new program on Khan Academy and work individually.

In a sports tournament, the tigers will play the lions, and the eagles play the hawks. The winners of these two games will play in the championship.

These 4 variables represent the scores in the first game.
var tigers;
var lions;
var hawks;
var eagles;

Write a program that will write the names of the two teams playing in the championship. If there’s a tie in either game, you should write a message explaining that the game goes into overtime.

Everyone must do their own work.

When I gave kids the task, the room got very, very quiet and there was 100% focus on creating their computer programs. I kept a clipboard with me. If students asked a question or if I gave them a hint, I made a tally on the clipboard. Some very quick students finished their programs early. Some took the entire class period to write a pretty simple program. Some kids took the entire class period to make programs that were really elaborate, with functions and multi-game simulations. The cool thing was, every kid’s program was different.

Here are some of my anchor quizzes.
A “4”: This program meets all of the requirements, and shows understanding of JavaScript syntax, “if” statements, and logical reasoning.

A “3”. Shows understanding of JavaScript syntax, “if” statements and logical reasoning. Made mistakes, but no major misconceptions. (student didn’t read entire prompt and did not address ties.)

A “2”. Student shows some misconceptions but is progressing. In this case, the student isn’t clear on the inequality symbols.

A “1”. This student is missing some major concepts.
I knew I would have some students who had been letting their friends carry the load of learning to program, who would be mighty lost during the assessment. I was right, but ultimately I want the kids to learn to code and my interest wasn’t in letting them fail. I made marks on my clipboard and pointed them to the documentation on Khan Academy – the sample code that used “if” statements and created text. I re-read the prompt with them and questioned them, and then cut the kids loose when the light bulb went on.  I won’t give those students the grade for mastery, but some may have shown proficiency.

One of these students was really grateful for the opportunity to do the individual work. “I finally understand if statements!” That was the goal!

I’m bothered by the handful of students that turned in programs that were obviously not close to working. In programming, it’s very clear whether or not your product meets a standard. Why turn it in otherwise?  I want the kids to demand more from themselves. On one hand, they were academically honest and didn’t turn in someone else’s work, but on the other, there were resources available to help them and they chose not to use the resources. I gave one student a pass to come in during ELO time and get help. He didn’t show up. What makes you just throw your hands up and quit?

Those students are high on my worry list, not just for computer programming – but for life. Here I go, fretting over teaching Grit.

To end on a positive note, most kids persevered, they created interesting and creative programs, and I loved grading the assignments using Google Classroom. I had the kids paste a link to their program in their assignment submission, and I’m in the process of working my way down the list and assigning grades. Easy!