Sunday, October 1, 2017

A New Take on Equity in CSA

Three of my boys are huddled around a lap top in the corner of the classroom during my AP Computer Science A class.  "I think we need to use conditional logic and the use the screen size as parameters to get the fish to move on the screen," says one of them.

"Yeah, but we need to screen to refresh.  I bet we need a timer to call a function repeatedly, in a loop," another one of the boys says.

They continue to tap away at their computers.

To be clear, students haven't "learned" conditional logic, timers, or how to interact with the screen size yet - at least, they haven't learned it from me in my class.

So many of my students bring in previous experience into my computer science classes.  They have a certain privilege from being in robotics club for years or from wanting to make their own video games.  They were able to get access to these tools (and perhaps were socially encouraged to get access to these tools) when other students were not.

In someways it is awesome.  These students with previous experience are not afraid to dive in.  They have an intuition around problem solving with code that takes time to develop.  They are so excited to be in class and push forward.  They take risks and aren't afraid of failure.

Yet I cannot help but look at the other end of the spectrum.  I have a fair number of students who wrote their first computer program on the first week of school.  They were pumped to get "Hello World" to pop on their screen with code they had written.

But, then I started to pick up the pace with the class. Very quickly, we introduced the ideas of escape characters, variables, parameters, objects, public vs private variables and methods, return values, modular arithmetic, using different libraries and getting user input.  That was the first 4 weeks of school.

The pace has been quick.  For the students with previous experience, they are playing along.  They take some of the challenge activities.  They also seem more comfortable collaborating with other people to talk through problems like the boys at the start of this post did.

The students who came in as a blank slate feel the pace is quite quick.  When these students overhear conversations like the group of boys were having, it is hard not to feel "behind" - even if they are right on pace.  While we introduced methods and methods with parameters in one day.  The syntax and the concept was new to them, whereas for other students, this was review.  While it was an "easy" day for those with experience, it was a big cognitive lift for those who are still trying to understand when they need a semicolon or not.

Even in our class code alongs, privilege comes into play.  During code alongs, we have a class dialogue about our goals of our program.  We write out psuedocode in the comments to help guide our work.  Students attack small problems individually or in groups for as I set a timer for a short amount of time.  When the timer goes off, we talk through their code as I type up on the screen.  I experienced the "code along" strategy while at PD at Upperline.  It was a nice way to keep a group of people making forward progress while not being strictly lecture.

While this technique is supposed to support all students, I notice that some students struggle to keep up.  Mainly, this is due to poor typing fluency.  Students who are still typing with mainly two pointer fingers take longer to hunt and search for basic letters, never mind the semicolon key and the curly braces. The result is that the slower typers take all of the time we spend together writing code finding the right characters on the keyboard, whereas my more fluent typers have time to process what they are typing when they finish ahead of the students still searching for the forward slash key.   As a result, although we might all have heard the same information and have the same code on the screen, some students had time to make sense of CS content whereas for others this was more of an exercise in typing.  Naturally, when I refer back to a concept in our code along, it was "stickier" for the students who had the processing time than for those who were just trying to keep up with the typing.  While I have started recording these code alongs for students to re-watch if they like, I know that puts more of a burden on my slower typers.  They have to work harder than others.

These equity issues are in all classes - not just computer science classes.  However for some reason these glimpses into privilege and the unequal results seems more apparent in my CS class. I see really bright and thoughtful students feel inadequate because of the previous experiences and privileged that other students bring into the classroom.  It might be that I am unused to privilege effecting some of these groups of students.  I realize that in itself is a problem.

I wonder how I would react as a student in my CSA class.  I certainly think the students with previous background would alienate me from the field of CS.  I just wouldn't be able to compete with them - if I were still trying to figure out how to use parameters to make a fish, and they were talking about moving a fish on a screen with vocabulary I had never heard, it would be hard for me to see myself "belonging" in that crowd.

Again, comparing this to a math class, I need to do two (and a half) things to address the inequities in the class.

#1)  Assign competence
Look for what students are doing well and give them public props for that.  I need to normalize the feeling of being in the "stretch zone" for learning.  I also think I can do a better job of explaining that the people with previous experience are just trying things.  They fail a ton - they don't get it right away.  No student should expect to get the code right the first time.  I have started to this with some students who are still confused what "static" means or why you would want a "private" method.  These students are freaking out because they don't understand every word's purpose, whereas some of my experienced students, just ignore that fact until it becomes a problem for them.  Wanting to understand everything is a great disposition to have.  It will slow students down, but that is ok.  I need to assign competence to those students who are making sense in multiple ways about what is going on in the classroom.  Everyone can contribute in a positive way.

#2) Choose group worthy tasks
I need to continue to look for "low floor, high ceiling" types of labs for students to engage in.  Due to the content we need to cover for the AP test, it can be difficult to find such tasks.  Additionally, right now all the extensions I come up with require students to have some of that previous experience (like conditionals or loops).  Thus, even for the students who are new to CS and enjoy it, they really cannot engage in the "extensions" without knowledge of these CS ideas.  My hope is that as we get into some of these core topics, I will be able to develop more appropriate extensions for all students.

#2.5) Make group worthy routines
Along with #2, I think I could do more to support group work in general.  It is clear that some of the students feel really comfortable working in groups, looking at one another's screens - even going to a different part of the room to do that.  I want to work in peer programming and maybe even break out some of the large monitors to have students work collaboratively.

Bottom line, I am teaching this course because it is the right thing to do for students. One of my favorite lines for teaching is "teach for students who will be successful because of what you do, not despite what you do".  While I fear that there might be a vocal backlash to introducing peer programming - research says it is good for students of all abilities in CS.  I need to make sure that students are successful because of what I do.  I need to be aware that when the loudest 30% of my class is ready to move on, I need to take a step back and consider why I am teaching the course - what is the right thing to do for 100% of the students.


Monday, August 14, 2017

First Day of School Plans

Here's my contribution to the #iTeachCS movement for the time being!  Following #MTBoS, I decided to write about what I will do my first day of school.

My goals for the first day are to:

  1. Talk as little as possible and have students talk as much as possible
  2. Learn names
  3. Build norms
With those goals in mind, here is the plan!


Everyone will make name plates - I did this last year and enjoyed reading what students wrote and it helped me practice names for the first week.  On the back, students write something they want me to know.  Read the blog post linked above for all the details, but here is my link to the document I used with students last year.

For AP CSA:
I am going to start students with a puzzle activity.  I did this last year as well and it went well.  Essentially students get a 100 piece puzzle for a group of 4 and they have to put it together in a short amount of time.  Afterwards we talk about what skills and strategies they had to use individually and when working with other people.  This gets folded into developing norms.  Last year, it looked like this:


Lots of movement, talking, thinking, etc.

This year, I think I am going transition from this, to logic puzzles.  From a facebook post someone posted a few logic problems.  My goal here is for students to reflect further on the norms they have set for themselves and also introduce the idea that we are going to encounter a lot of problems in class and after a while, we are going to start to develop strategies that are common across problems.  I am going to start this burning rope brain teaser and then have students do this hour glass problem - both of these are related so students should be able to see how the strategy could be re-used for #2.  If there is time we will do a problem about soldiers crossing a river brain teaser and then the animals crossing the river  which again are related.  I plan to continue to reinforce the norms during this time too.



For AP CSP and Concepts of Advanced Algebra:
I am borrowing from code.org's CSD curriculum and going to have students build boats to hold coins. You fan find the complete lesson plan here, but essentially it is a hands-on and collaborative activity for students that will force them to problem solve.  From here we will generate norms using post-its and then share out these norms as a class.  From there, we will reduce the norms down to 3-4 ways we will interact with one another in class.



Then on day 2...
Everyone will make a Flip Grid saying their name, 3 hobbies they have, 2 words their friends would use to describe them, and 1 reason they took this course... From there, we will dive into our content!  I want to use Flip Grid to get to know students and practice name/face recognition at home.

I'd love to hear everyone else's plans!

Sunday, August 13, 2017

What's next for the CS community?

Over the last few years there has been a huge push to train teachers to teach CS in preparation for AP CSP.  I am a product of that movement.  I am hugely appreciative for the work people at the College Board, NSF, and code.org has done to support that movement.

But now I am wondering, what is next for our community?  How do we build on this success?  What does success look like 5 years from now?  How do we get there?

What are the strengths of the CSed community?

  • It seems to be filled with growth-mindset individuals.  Maybe it is because many of us were eager/willing to take on teaching a subject that was outside of our area of expertise.  Or, maybe it is because we are somewhat islands in our buildings, there isn't the same "crab bucket" effect that can take place in other departments.
  • There is a lot of freedom.  Since CS is not held to the same types of frameworks as core content areas, teachers have a lot more freedom.  Even in courses where there are accountability measures like the AP exam, we don't have a PLC that we need to convince of our techniques.  We can try things, fail, refine, and re-try. 


What does success look like 5 years from now?

  • When I think about MTBoS, I think one of its strengths is it doesn't get so caught up in the political nature of teaching.  It focuses on teaching and learning.  It focuses on doing what is right for students.  Obviously being political advocates for students is one way to "do what is right" from a "trickle down" perspective, but MTBoS does cool things in their classrooms and then shares it out.  We need people to advocate for CS education in districts, but I don't think that is really the community's focus.  Doing cool things in classrooms and then sharing those successes to the larger community will get CS in more schools.  I think about how MTBoS has teachers who have written books or been featured on TED talks or NPR... it is all good for the profession AND for students.
  • Powerful, teacher created and tested resources.  MTBoS is really how I survived my first year teaching.  Specifically, Sam J Shah's precalc resources were huge!  His virtual filing cabinet opened doors to other teachers blogs.  It was awesome.  You got to see how so many teachers approached teaching the ambiguous case of SSA and then pick your favorite or adapt it to your context.  I would love to see CS teachers share out their lessons and approach with the same generosity and support as MTBoS.  MTBoS has a "My favorite..." feature at TMC, where teachers talk about their favorite thing they do in their classroom all year or their favorite lesson.  It is a good way to get the "best-of" resources.  I can contribute to this too... this year I can share out the modifications I make to CSP and maybe share out a 180 blog from AP CSA.  
  • A Twitter-Math-Camp for Computer Science.  I would love to get people together who love CS and do an unconference EdCamp Style or model a conference after the MTBoS's Twitter Math Camp which started small and now has grown!  It is still really cheap (unlike CSTA's conference) and has some great teachers presenting on what they do in their classrooms.  We could totally do this too.
  • More "teacher experts" in more branches of CS.  I would love to see teachers who work in pathways of CS - teachers who teach data science, teachers who teach cyber security, teachers who partner with industry to put students in internships, teachers who do purely project based seminar classes... we have AP CSP and AP CSA.  I would love to see what creative teachers do after these courses.  CSTBoS could be the place where we test out these new courses and share out learnings. 

How do we get there?

  • I know it is cheap to answer a question with a question but... What role does CSTA play?  To me CSTA is to build local networks, and while there are state wide NCTM chapters, there role is much different than that of MTBoS.  I think CSTA can help strengthen our CSed community, especially around advocacy, but I don't see them necessarily supporting what teachers are already doing in their classrooms. 
  • Get people on board.  Admittedly, we need a core group of people who are excited about this and are willing (and have time) to participate.  If it is a blog, a #teach180 commitment, or a place for teachers to share out their "My Favorite..." lesson/activity.  I am sure that every teacher has something to share out there - something that they do that we could learn from.
  • Continue to build powerful PD.  So many people have been trained through various avenues, but let's consider what's next.  Can we do a Project Based Learning workshop with all other CS teachers? Can we think about what Complex instruction looks like in a CS classroom?  Let's leverage our expertise in a teacher-led weekend of workshops.
  • Make it loud!  Amplify others' voices when it comes to CS.  When someone reads an idea on twitter or on a blog, and then tries it in their classroom, share how it went.  If you like an idea, build on it - throw out questions for the CSTBoS to ponder.  Contribute to movements #ethicalCS on Twitter to connect to other CS teachers and start a dialogue there.

Not sure how to get started?

Check out advice from MTBoS about starting a blog.   Then consider blogging about anything you are interested in!  Consider some of the following questions to get started:
  • What are your first day plans?
  • Take pictures of your classroom - what does it look like?
  • What are your goals for this year?
  • How are you going to recruit students?
  • What do you wish families/students/admin/politicians knew about teaching CS?
  • What is your favorite lesson that you teach all year?
  • What projects take off in your class?
  • What PD has been most useful to you?
  • How do you address inequities in your classroom?
  • Consider doing a #teach180 blog where you write 2-3 sentences about how your day went.

Sunday, July 16, 2017

What makes for good CS PD?

I have had the opportunity to experience a lot of PD over the last few years with KSTF and the huge surge in support for CS.  After attending Upperline Code's teacher workshop, I have been wondering what makes for good CS PD?

Good CS PD should put the teacher in the role of a learner.  I saw this in my EDC workshop in Mathematical Practices, in Upperline's Workshop, and at code.org.  By having teachers fully engage in a structure or routine for a CS classroom, they can better implement it in their own classes. ....

Good CS PD should have participants planning and teaching lessons.  This seems like a no-brainer to me now, but I will admit it wasn't always that way.  Just like a "good math class" should have students "doing math", good teaching PD should have participating teaching.  In Upperline, we co-planned and taught our lessons which was necessary from a time-saving perspective, but also helpful as we got to collaborate with other teachers and bounce ideas off one another as we planned.

Good CS PD should have a common language.  Whether it is talking about engagement, access, problem solving, abstraction, computational thinking, once we are able to have a shared vocabulary around what we are talking about, we can go deeper into these conversations.  Sometimes this shared vocabulary can become meaningless buzzwords, but I still think bringing some kind of awareness to our goals through establishing a common vocabulary gives all participants more opportunities to contribute.

Good CS PD should have a time to be reflective.  With Upperline, after we taught a lesson, we had a time to reflect on the lesson we just delivered and got feedback from the participants.  I think the feedback part was hugely helpful for me but I wonder how other teachers would respond, especially if there are teachers who aren't psyched to be there.  I think I assume that every teacher is as excited to be at PD as myself, so I forget that there are people who were "volun-told" to be there.  I know there are other ways to reflect on the lesson after it is delivered - by shifting the focus to reflecting on the lesson from the learner perspective or considering how students would react in the lesson.  Regardless, having time to reflect on the lessons helps me think about how I would apply what I saw in my own classroom.

I realize that many of these ideas aren't ONLY for CS PD, but really good practices for good PD in general.  

However, while these guidelines are all well and good, one of the biggest questions is what does the content for CS PD look like?  I have attended many CSP PD workshops (for code.org, CS50, or Mobile CSP) but they all center around the same content.  They focus on one curriculum's interpretation of the AP CSP standards.  When I have attended the EDC's workshop on Mathematical Practices (MPs), we learned how to incorporate MPs into any math course we were teaching from 6th grade math to 12th grade math.  I am wondering if we can do that for Computational Thinking standards.  Is that valuable for CS teachers?  Can we do a 2-4-1 and learn CS content (like, data science) AND computational thinking?  Is that, as the kids say, "doing too much"?  I acknowledge it is difficult to tell a teacher to develop a lesson plan on cyber-security without the teacher really knowing cyber-security, but maybe just giving teachers a direction is enough.   

In the Upperline Workshop, the CS content was all around web development.  We covered HTML, CSS, Ruby, loops, conditionals, etc.  At one point I was supposed to teach p5 - I realize that this is a broad thing to teach, but my partner and I narrowed down our specific goals for the class and then developed a task we wanted students to work towards in the class.  This practice was actually really useful.  I think you could do that with other CS topics as well - cyber-security, data science, etc.

Even while I hope to be able to teach some of the content I learned at Upperline in my CS classes, I expanded my own content knowledge in CS by participating in other teacher's lessons and experienced multiple ways of approaching CS instruction - some ways I liked and others that wouldn't fit my teaching style.  For me, as a teacher who is ready to further develop my own approach to teaching CS, having this experience was really valuable.

Saturday, July 8, 2017

Day 4 of PD reflection

This one is going to be a bit more a "stream of consciousness" reflection... hold on to your pants.


  • I need students to move at least once an hour.  I really liked the mind meld icebreaker idea where students find a partner elsewhere in the room (standing) and choose a word (separately) and then say it out loud.  They need to try to match the same word over time.  For example, if one person says "hamburger" and the other person says "wonder woman" you need to try to think what is half way in between those two.  It's fun, simple, etc.
  • I have seen two different approaches to teaching objects.  One with Dan Shiftmann's processing materials (which were good) and then the one today where Jolson used video games to frame the topic.  I am always reluctant to use video games in CS because of the stereotype issue but... this is how it went.
    • Say we have a video game where we have a character
      • What Attributes might they have (which ones are getable and which ones are setable)
      • What Actions might they do (methods)
      • What "other" things might be important
  • Helping students brainstorm their projects:  Danny warned us against letting students get too attached to a single idea early on.  For this reason, the idea-ation portion was broken up into rapid-fire brainstorming where there were "no bad ideas" - everything got written down.  The general flow went like this with each question taking just 30-45 sections to brainstorm:
    • Who is your audience? (brain storm many, focus down into 1)
    • What problems do these audiences face? (brainstorm many, focus on 2)
    • What how can you help solve these problems? (brain storm many, focus on 1)
  • Scoping: Introduce the idea of MVP early on in the course.  These projects can go on forever.  This goes along with iterative and incremental development.  Have students think what the Minimum Viable Project looks like and work towards this first.  I like how this can be introduced early in the year.  I hope that this helps mitigate some of the perfectionism that arises, especially with female students.  If they see that small successes matter, that is important too. 
  • Hooks - do it. My professor at the U also required us to have decent hooks in our lesson and it makes so much sense.  It is also important to remember that hooks don't (and shouldn't) take up a lot of time. Hooks are there to just get every student into the lesson - they are there so the first 30 seconds of class brings everyone in.  
    • A story
    • A pain-point (aspirin)
    • What the end project might look like
    • A google search/funny video/topic
    • Quick brainstorm of student-relevant topics (what is your favorite movie - and then use that to talk about databases).
  • Spend time on "ta-da" moments.  It takes a while to get to these ta-das, I need to pause for the reveal and really make sure EVERY student sees it.  Sometimes I run through it a bit too fast and if students blink, they miss the "why" behind the lesson.  I need to pause in these moments, replay the "before and after", and make sure students see why they the "aspirin" is helpful.
  • Take time to look at errors and documentation. That's right, I think we want to over-teach a bit in CS.  Giving students the tools to answer their own questions is hugely important.  From what I gather, that's what the real-world does in CS - you google a TON.  I need to get students to look at and read the documentation.  I wonder if some of Nancy Johnson's reading skills could be helpful here.  Technical reading is different from what they are used to.  I am just thinking there are probably different skills involved - you don't read everything, you skim, you look for the code, you look for examples... I need to do more thinking about this.  Similarly, when it comes to reading errors, I need to have students develop skills needed to tackle these.  Some ideas mentioned were
    • read the errors out loud
    • ask students to summarize what they say
    • identify key parts
  • Answer questions by exploring the question.  Try it out (what if we use a different word, what kind of error do we get...).  OR try googling it.  SHOW. Don't TELL.  Model lead learner.
  • VOCABULARY.  In Upperline they use a lot of "anchor charts" to go over key blocks of of code.  They post these on the walls so all students can go back and see them later on if they cannot remember what is going on.  I am also wondering how I can support students in building vocabulary in my classes.  I wonder what my culturally responsive teaching book would say about this too...  Here is an example of what an anchor chart might look like. 
  • Show syntax - you shouldn't do "inquiry" on syntax.  It becomes too much of "guess what is in my head" types of questioning.  You SHOULD probe logic and "what-if" type situations - that is the part to push students and engage in higher level thinking. 


Finally, I realized I need to go back to my web development course to understand where JavaScript plays into all of this.  I think now that I have seen

Friday, July 7, 2017

Day 3 PD reflections: What story am I telling?

A few things have me thinking about the idea of story - a colleague and I had a little conversation about this during the school year, KSTF has us talking about the power of teacher stories, and what I am learning at Upperline PD has me thinking about the story each lesson tells while teachers are teaching their sample lessons.

Now I am wondering, how does each unit I have tell a story?  How do my lessons weave together a content story for students?  Is there a story arch throughout the year I can hang units and lessons on?

More recently, I have been thinking of the role of stories and learning targets in different types of lessons.

Traditional Instruction

When talking about traditional instruction, I think the story still needs to be there and learning targets provide key pointers at the beginning of the lesson to tell people where we are going.  For example, the move "The Breakup" is about, and results in, a break up.  You can still tell a good story if you know the ending.

In my upperline PD, I realized that if a teacher was teaching in a traditional way, I wanted to know exactly where we were going in their story.  I saw it needing to know the key checkpoints along the way.  It was somewhat like peeking ahead to the titles of future chapters in a book so I could see the story come together.

In traditional instruction, the teacher is the story teller.  Every student gets the exact same story from the same deliverer. Some teachers tell stories better than others here and I think there are some tricks to make the story still compelling for students.
  • I have noticed when ever I am super excited about the content (even if in reality I am not super jazzed about it), students engage more.  Seeing story tellers excited about the story is one way to get buy-in from students.  
  • Making the story feature key characters that are interesting to students gets a giggle from kids.  Including references to fidget spinners, Shakira, whatever is trendy or and inside joke at the moment includes students in on the story.
I get that some days even the most constructivst teacher needs to go to traditional methods of teaching.  That's OK.  That's not an excuse to forget about the story you want to tell or to skip a good hook. 

I wonder how else strong traditional instruction teachers are able to engage students in their classrooms.


Discovery/Inquiry Based Instruction

Inquiry based learning puts the student at the center of the story.  It also means that you might have 36 different stories being constructed in the classroom during a lesson.  Thus, it is the teacher's role to weave these stories together to make the picture clearer for all learners.

I truly believe that to give students the learning target at the beginning of an inquiry based learning lesson, you give away the punch line.  It's less fun to explore if you know how the story ends.  In fact, why explore, why take risks if you know the ending.

In discovery based learning, the storyline of a class is revealed by students and through students work.   However, I think we have all read something where the story wonders for too long (perhaps this blog post is one of them).  That's why the teacher is the ultimate architect of the story in these classrooms.  Being able to predict student questions and responses and guiding them to the "a-ha" moments takes a different set of skills.



Wednesday, July 5, 2017

What I would do differently next time - Using Arduinos Part 3

Knowing what I know, now, here is what I would do differently next time:
  1. Display the projects when they are done.  Again, I need to show the school what we are working on.  I think this would also force students to clean up their work and take more ownership of what they did.
  2. Get more supplies, specifically more battery packs, sensors, and box cutters.  The battery packs can be used so that the boards don't need to be plugged in.  Students who wanted to make cars needed to be untethered.  Also, I ended up also purchasing a re-sealable mat but I need more box cutters for students to be able to cut cardboard and plastic.  The sensors would also allow students to make more interactive projects.  I like the idea of the projects being interactive rather than just movable.
  3. Assign one group a kit.  I didn't do this the first time around and it got messy.  The boxes got messy and there was no one to take responsibility.  The second time around I had students put a piece of tape on their box and write there name on the tape.  It made organization SO MUCH BETTER!
  4. End with a "scavenger hunt" - really just to trick students into cleaning up.  I would make a mat with each of the items the box SHOULD have in it and then have students show that everything was in there to "check in" their materials so it would be ready to go for the next group!
Overall - it was a success!  I am definitely going to do this next year.  I am hoping I might be able to collaborate more with our engineering teacher to better understand the circuitry component - I think I am making a dent in it, but expanding my knowledge would be a good thing. 

Tuesday, July 4, 2017

What does CSed Community 2.0 look like?

One of the main goals in our code.org PD is to build a CS community.  I think that happens at TeacherCons and at week-long PD.

But, the big question is, what next?!


  1. How do we sustain this community?
  2. Where do we continue to build these connections?  Twitter?  A forum?
  3. What does the community need to be successful?
  4. What are the goals of our community?

... alright, this is reminding me of KSTF's systems frame work...

(after a bit of Google Drive Digging)


I love the quote I got from a KSTF meeting a year back that "each system is uniquely designed to get the exact result it is getting".  I certainly need to unpack the system here for our CSed community on a national and local scale.  I'm writing that on my "blog-to-dos" now...

I still think the model of an inclusive ed community comes from MTBoS.  I really think the success of MTBoS has come from a few rock stars just rocking.  They blog and share their experiences really freely.  They take risks in their classrooms and share the results.

In talking with one of the participants at the Upperline Training, he mentioned that CSTA feels really inaccessible to many teachers.  It is expensive.  Even presenting at CSTA is cost-prohibitive for a lot of teachers which MAY result in having less strong sessions.

I look at MTBoS's solution to not having a space to celebrate their community in Twitter Math Camp.  It is wildly successful.  CS needs to get the right "whos" in place, but I think we could get there.

Right now, we are just trying to build capacity and get more CS teachers, but once we have CS teachers, how do we continue to support them?  It takes a bit of time, but how can we amplify voices of CS teachers and draw them into the community?

I would love to see CS have their own "CS" Twitter Camp as a place to build their national community.  I suppose the first place to start is local.  Right now, one other teacher and myself meet up monthly to talk about our classrooms. It is an awesome collaborative time.  I have learned a lot from him (and hopefully he has learned something from me).

My goal next year: To open this up wider.  Invite more teachers to grab a drink and talk about CS ed.  If I can do one in the fall and one in the spring, that would be awesome.  I think I want to focus on HS CS teachers at the moment, but I certainly want to grow it from there.


Lessons learned from day 2 of PD

Today we started observing two lessons in our Upperline training.  From watching other teachers teach, here is what I learned:

  • Give the compelling why.  My district internally uses the "compelling why" phrase a lot, but here I thought about using it with students.  Dan Meyer talks about creating the headache so students want the aspirin (the tool to fix the problem) - it is much of the same reason here.  I think when a good hook (a story, an analogy, an unplugged activity) is difficult to find for a lesson, that's ok, just make sure that there is a compelling why for the content.
  • Get students to google commands.  Giving students a command that might be helpful, without showing specific examples, is OK - welcome to the real world!  Googling things is totally ok.  Encourage it, plan specific times in your lessons/labs where you want students to practice the googling skills AND model it.  Students don't always know what to google when you tell them "google it".
  • Model pair programming.  And then, tell students you are modeling what pair programming looks like.  Two teachers did this today in their lesson and I really liked that idea.  I would want to also model what that dialogue looks like from students.  Again, what types of behaviors do I want to instill/encourage?  I don't want students to just grab away the keyboard when they get frustrated with their partner - modeling this dialogue before having students pair program can help with the frustration level. 
    • We did a "daggar, falcon, spaghetti" exercise today to help students see that it is on THEM to communicate to another person in the class.  If the message doesn't get through, they need to try again.
  • Academic dishonesty in CS.  Someone brought this up.  If students are not being honest about their work and code in class, why is that?  Are we giving too common of assignments? Do students not have enough freedom or skin in the game?  I think I need to have very clear expectations for why students should not cheat.
  • Team builders/icebreakers.  We did a ton of these, the name/action/adjective game, the "Wah" games, the "stretch and share" (totally could use that in a small scale - someone names a stretch and then answers a question like "how are you feeling" and then the next person names a new stretch and answers the question), rock paper scissors evolution style (where you start out as an egg, chicken, and then raptor).  I get them.  I like them in theory, it seems like I would have a hard time getting students to buy-into doing them in class.  I ask my students to do a lot.  Will this be too much?  OR will it open them up to taking more risks?  I might be able to do it on a day we have class meetings or half the class is gone for testing or something, but... I think the value in doing it is early on.  It certainly would help students get to know eachother, but does it help me build capital or do I use capital in doing these games.  I don't know... I might use them in my concepts class... I have to noodle on this a bit.

Monday, July 3, 2017

Kenetic Light Sculpture Project - Using Arduinos Part 2

The task I gave students was to do one of 2 things:

A) Create a kinetic light sculpture - literally, it just needed to move and have lights

OR

B) Create something that is useful for the school

I anticipated push back from my boys about having to do "art" in my class, so I wanted to preemptively strike and give them a second option (thus plan B was born).  That was hugely successful.  Most my boys realized that making something move and light up was not the end of the world.  In fact, several of them moved this to more of a "robotics" project where they had a car that could drive.

To do this, we had a lot of materials, generously supplied by a KSTF grant - here were just a few of them.  My full list of items can be found here (note: make sure you filter and sort in the top right corner for purchased AND unpurchased items to see them all).


Also, essential to this project were extra items I got from SparkFun - like motors, jumper wires, more LEDs, etc.

It was interesting to see students start with nothing, develop an idea, and then implement it.  It really pushed them to think differently about programing, circuitry, and problem solving.  During the week, a colleague of mine, Ryan, came to visit my room.  He comes from a science background so he had a different perspective than myself.

It was SO AWESOME to have him there.  I have been excited about what my students were doing and it was so fantastic to get another perspective!  Ryan mentioned that he noticed students had missed the fact that once their spinning motors started spinning, they were going to run into a physical restraint with the wires also getting twisted.  I hadn't anticipated this issue myself either.  Ryan also pointed out that engaging students in the engineering design process earlier in the project could be helpful.  Even doing a hypothetical engineering problem (OR BETTER YET... one of code.org's CS Discoveries problems from their problem solving unit) could help students develop a more coherent plan to start with.

I had given students a project organizer as a starting point, but it was really insufficient and didn't address the new issues that would arise in this project.  I reached out to our engineering teacher to see what he used - in hopes of being consistent throughout courses and he sent me this.

The end result was a lot of different projects.  Here are a few of them:


Day 1 of NYC PD

After day 1 of my NYC workshop, I have a few big take aways:


  1. Thinking about the zones of learning is useful for teachers AND students!  Eventually we want students to be able to design their own learning in the real world and that means helping them monitor their own learning.  Danny's model of different zones of learning, and also thinking about them as a range that we slide into in different times made a lot of sense to me.  He also talked about needing to get students be able to self-monitor where they were in these zones so they could manage their learning over time.  This including asking students some questions:
    • If they were in the "comfort" zone, are they taking enough risks?  Do they need a different task?  How could they modify their project themselves - what would be a "reach" for them?
    • If they were in the "panic" zone for much of class, they really should ask for help.  Knowing when AND how to advocate for yourself is important for students to know and be able to do.
    • We want the "learning" zone to be BIGGER!  To make it bigger, we should try to operate on the edge of panic (this actually perhaps explains my personality a bit).  Operating on that edge "pushes" your learning zone to expand.

     
  2. I need to build a "Whole Class Culture".  I was so much better at this in the math classroom.  I think it was because I forced students to work with people who were unlike themselves.  Teaching an elective class, and a class with a large gender imbalance makes this rougher.  My goal is to really make this happen for my AP CSP class (after the drop period, that is).  There was nothing wrong with my class culture last year, it is just that students didn't branch out socially and I think doing this occasionally is important.  I can do this simply by having people pick ONE partner they want to sit with, and then mixing up the pairs into groups.  I also need to think more intentionally about the following:
    • What beliefs do I need my students to have in my class?
    • What habits do students need in my class?
    • What workflow needs to be in place?


My favorite quote from today:

"Our natural state of being IS not knowing"                                                                                         - Danny




Also, fun fact: After doing the pre-work for this PD, I have gained more confidence in being able to do HTML.  The hr above and some of the formatting I did in the HTML composure screen... successfully!

Monday, June 5, 2017

Physical Computing Meets AP CSP - Arduinos Part 1

This is part of a 2 part post on using Arduinos in AP CSP.  

Last year I borrowed a SparkFun Inventor Kit from KSTF's Tech Lending Library.  I was curious.  I also was low on time, so a few days before I need to return it, I threw it at some students in my CS class.  They dug in and LOVED it.  They showed me what they were able to do in a few hours so I decided to learn more.

The PD
Learning more took me to SparkFun's HQ in Boulder, CO for a week long workshop in Microcontrollers for Educators.  I would HIGHLY recommend this PD.  It was one of the top 3 PDs I have ever attended as a teacher.  There was so many great things that happened that it is impossible to summarize them all here, but the best thing they did was give us a chance to CREATE with the materials.  In a lot of ways, the workshop was run much like you would run your class.  We didn't just talk about projects, we DID the projects.  We even did a hackathon, which, not to brag, our team won with our voting climate system.  It was pretty awesome.



But, from this I saw first hand how "low floor, high ceiling" problems could be implementeed in a CS classroom.  Thanks to our fearless leader, Brian Huang, I decided to have a "movable light sculpture" project for my CS students after the AP exam that would be a final project for a physical computing unit.

Materials
From there, I wrote a hefty materials proposal for a grant.  It included a lot of things.  The biggest chunk of money came from ordering the Sparkfun Inventor Kits.  But along with that I ordered maker materials that I had seen used most frequently in the workshop.  This included polyfill, tissue paper, cardstock, hot glue guns, rubber cement, tape, duck tape, fun duck tape, extra LEDs, extra M/F extender cables, more user-friendly motors, a lot of stuff.  I also stock piled any box that came to our apartment so students could use them in their project later.

Introducing it to Students
I'll admit that the Inventor Kit can be a bit intimidating.  There are wires, lot of tiny pieces that look the same, it is hard to know how much attention to detail you need when putting pieces on the board.  Sure, some students feel really comfortable diving in, but even I was a bit intimidated when I first got the kit.

You know what's NOT intimidating?  play dough.

I saw this done at the MN Coding in the Classroom Summit with Professor AnneMarie Thomas and then once again modeled at the Sparkfun Workshop, but essentially there are two different recipes for conductive and "insulative" (or lower conductivity) play dough.  From there you can make circuits with battery packs and LEDs.

I loved how this was a hands-on, low risk way for students to play with circuitry.  I turned my kitchen into a Play Dough factory and made massive amounts of play dough.

I wanted students to be able to make a basic circuit so they would get the general idea of how electricity needs to go in a loop and will find the path of least resistance and also see how LEDs work with their positive and negative ends.  Realistically, I knew that the lesson would take 10 minutes tops, so I decided to add the idea of logic gates with circuits.  Students had to create a total of 6 different circuits with the play dough and then sketch what it looked like next to the directions.  They had to create an AND gate, OR gate, NOT gate and (as a challenge) an XOR gate.  Here is the handout.

Interestingly enough, some of my physics high-flyers were too cool for play dough and just sketched out the diagrams on the sheet of paper.  When I challenged them to actually make it with play dough, it took them a while to translate their diagram into the real world.  Overall though, it was a hit.



Introducing The Arduino
Play dough day took about one hour class period, but I could have even introduced the Inventor Kit in class that same day.  I start with giving each group or pair of students a kit and putting their name on the outside - from an organization standpoint, this was huge!  I didn't do it the first time around and then all the kits were mixed up with people not really caring where they put pieces.  I had students open up the kit and poke around to see what they find out.  I gave them 3 minutes to take things out and explore before we shared out as a class as to what they found.

Then we made the most basic circuit which is a blinking light.  We used codebender's EDU site on the chromebooks for the code which worked out pretty well.  Keep in mind you need to install the chrome extension and the server was down for two days, but other than that it worked great.  From there, I told students that we were going to take the next few days to explore the features of the tools... and of course, if you're going exploring, you cannot leave without your passport.

Enter the Arduino Passport.




Ahead of time I had identified key "labs" in the Sparkfun guide that I wanted students to experience.  For better or worse, most of the labs come with all of the code they need, so students don't need to read the code at all.  However, for the "kinetic light sculpture" project, students would need to wire and code their own inventions.  I used the labs provided as a jumping off spot and had students modify the code or the circuit and then write about how they did this in their passports before I would stamp them for completion.

The first time I did this, I didn't have students jump off from the labs enough.  So when it got to the final project, students were unproductively frustrated.  The second time, I added more space for students to modify code or add components and the project went a lot better.

And then I introduced the project...


Saturday, June 3, 2017

MakerSpace Projects - 3D printing and Laser Cutting

Our school is lucky enough to have three 3D printers and one Laser Cutter.

I also appreciate how these resources are available to EVERYONE in the school.  There is no special permission needed to use it at all and the woman who runs the whole thing is always willing to help and is SO patient (with teachers AND students).  We have great resources.

But, I have noticed it is the same few students who use these pieces of equipment and often they use them to create something that they found on Thingiverse - most students aren't creating their own plans from scratch.

To me this is inequity, there are students who feel like they "belong" in the space and students who don't.  After the AP test, my goals were 1) to ensure all students could use the equipment, 2) to have students create (not copy) with the equipment.

From there I went to Twitter in search of ideas.

Laser Cutter
The blog A Recursive Process was instrumental as he talked  about using Desmos to create art to cut out on the laser cutter.  This was perfect since it allowed students to take something cool they made in Desmos and bring it to the real world.  Additionally, students could engrave their design on their TI calculator if they wanted too also.

Here is what some students did:










It wasn't all smooth sailing.  I needed to create very careful directions for students which I created collaboratively with our tech person (you can find them here).  The program sometimes had trouble seeing the piece as one connected line which caused some people's pieces of art to fall apart in their hands.  My hope is that students will be able to use this for future Desmos creations as well.

3D printing
For 3D printing, fellow CS teacher Eileen King also suggested doing a 3D printing project around having students design their own monopoly piece.  This was a GREAT idea since the laser printers take a while so doing something small was really the only way to ensure that all students would get to use them.

I decided to use BlocksCAD who also recommended that students try some design challenges before diving in to make their own monopoly piece.  I had students show me that they could create a torus cage, a block of cheese, and a ring of cubes just to get familiar with working in 3D space.  I stamped each of these off as they created them and showed them to me.




To be honest, while most students designed a monopoly piece, not everyone got to print.  And some students decided they wanted to create something else.  I also suggested that students who were already familiar with the 3D printers do something around volume of solids and curves since the 3D printers can be a powerful tool to help visualize that method in Calc. 



What I would do differently:
  • Rent out a space in the library for my class to be so I could float more easily between the MakerSpace and the classroom.  I am so thankful for students I can trust that I could leave my students in either place without worrying about unacceptable behavior.  BUT being closer would make it easier to support all students during class.  There was a few times where a student in the classroom would come to me with a text message from a student in the MakerSpace that said they needed help. 
  • Make a schedule.  Timing was still an issue to get all students through the equipment.  Next time I would make a schedule with different students signed up each day to ensure we were on track. 
  • Fix timing.  Even with a schedule, it takes too long for every student to 3D print.  Especially when they are prone to breaking or other students starting projects on them who are not in my class.  Also, when students come up with a really cool new idea, it usually takes longer than 30 minutes to print.  At most I could get 6 students though the 3D printers in an hour - and that is even optimistic.  I let students watch Hidden Figures while other students were printing this year, but I don't love that solution.  Next year I will need to think of a different project that students could do while others are printing.


Celebrating Successes:
  • I saw all students using the equipment.  I saw more girls in that room than I had ever seen before which was a huge win in my book.
  • Students were creating things. They would always proudly show me the thing they just made which means that the work was meaningful to them.




Thursday, May 18, 2017

What is the purpose of PD?

This week I led a session at the Coding in the Classroom Summit.  The session was titled.  "So you've got data. Now What?!".  If there is one thing I have learned about session titles, they need to have a "Click Bait" type of name.  But essentially the session was about looking at the data side of computer science.  I ended up doing a "Teacher-Learner-Observer" type of session which featured one of code.org's Computer Science Discoveries lessons.

That's not really the most important part of this post or what motivated me to think-out-loud-via-blog.  Really what interested me was the fact that the session went exactly as I had hoped it would, BUT I am not sure if it was what the audience wanted.  I am not sure if the audience would have considered it a "success".

Code.org has totally got me drinking the kool-aid of using the "Teacher Learner Observer" model to create meaningful PD experiences for teachers.  However, at this conference, many of the sessions felt a bit like an information dump.  I suppose there is a time and a place for an information dump, and I usually get my information from Twitter or other blogs/social media - if we are meeting in person, I don't really want a list of all the things you do.  I mean, I want that list, but written down, as a one pager, I don't want you to read it to me.  I am going to google everything on that list later any way.

This made me think about what teachers expect to get out of PD. Each format is a bit different, what you expect to get at a keynote.  Dan Meyer also has a great post about how he presents.

Here are my ideas about how I want to run my PD:

  1. I want it to tell a story.  People like stories.  Stories can captivate.  I want my story to have a beginning, middle, and end.  Just like all stories, I want the middle to be the bulk of the story.
  2. I want attendees to have an experience.  Just like how I strive to teach math and how I teach CS, I want attendees to remember the experience of participating in something meaningful.  I want them to have an "a-ha".   
  3. I want the PD to be either be immediately applicable or be a hook for some big idea.  I want people to leave thinking that what they just experienced will be useful to them in some way.  It might be something they can do tomorrow in their classrooms or maybe a summer research project that they do. 

These are just initial ideas of mine but I wonder what other teachers think of as successful PD?  What is the best PD you have ever attended and what made it that way?

Saturday, April 1, 2017

Getting More Students Engaged with Programming

I love the new project that I gave students on this Typing Game.  I love that every student is doing the "same" thing but it is different.  My students who were doing Python can do it, my students who were doing C can do it, and the students using App Lab can do it.  It's awesome.

There are 3 things I did that I think helped with student engagement here:

  1. Shake up the group dynamics.  I forced all students to show their thinking on a white board space first.  It made students formulate a plan, got students off their seats, and ensured that everyone had access to the ideas.  There is something about physically re-arranging spaces that causes a disruption in student's actions.  By making them move, I could shake up the dynamic.
  2. Create a space that promoted collaboration.  I was able to bring in larger monitors.  Thanks to a colleague who wasn't using them, this was HUGE at the end of the project when students are combining code and working out kinks.  I had students who worked on a larger display in the library the whole time which worked for them.  Ideally, I think if every group had that opportunity each day that would have been best, but it worked for now.


  3. The prompt.  Students had so much space to make it their own AND since it was a game, they wanted to make sure they could be fun.  One group got "done" with theirs and then started racing each other for who could get the highest score.  One person in the group said "We could add more words, or make it so that there was sound also, or a high score board, or... There is SO much more we can do with this!".  When two of them were racing, one student said "that's not fair 'remote control' came up like 3 times for me, and you had the word 'kid' and 'hat' pop up a ton, 'remote control' is WAY harder to do".  It's these sort of problems that now students WANT to resolve to make the game better. 
I gave students a week to do this and one thing that has come up is, when do you want students to have a "finished" project and when is it ok to be in more of a prototype format?  Up to now, much of the Apps students have created have been a bit more prototype-y.  I am still trying to figure out what the pros and cons are for each.  What happens to engagement?  How does it help them with programming content knowledge?  How does it change the UI part of the app?  What value is there in making sure that users actually know how to use the app? Etc.

Also, now I need to figure out a way to structure the share-out.  I think I want students to demo it for students and then also play each others and give feedback.

A New Project - typing game

I had an extra week of time for my AP CSP students this year.  I wanted them to explore the Post-AP database unit, but I knew doing more "stages" wasn't the right approach.  The stages are a little too quiet, not enough collaboration, and students aren't always super motivated to get it right.  They are good, but I didn't want to come back from spring break and put them on that.  

Instead, I decided to have students make a game that would have a high scoring screen which would force them to get used to creating and reading a database.   This would get at the database content without forcing all students to do all stages of the database unit.  Realistically, I think most students would need to do the stages to be successful in the task, but by giving them the task first, they had a motivation for wanting to learn how databases work.  Additionally, students LOVE making games.  Games usually have winners or losers, so a winner board screen is a not a "forced" concept.

The difficult piece is that students just finished an independent open-ended project. SO there were TONS of games that students had already made so I needed to find a new type of game that the project revolved around.

After brainstorming with KSTF's POET (Principal Officer of Educational Technology), I decided that a "typing game" would be a good vehicle for students.  Thinking of the "learn to type" games out there, students could design a game that tested how well someone could type and then score that person's abilities. 

I started looking into creating the database, I felt a little unprepared myself and a little concerned that one week wouldn't be enough time for students... SO... this was the prompt I gave students:

To get a C it MUST:
- Be play-able
- Have scoring mechanism
- Have a way to "end" the game (you shouldn't be able to play forever)
- Use two functions that are used to create a third algorithm*

Anything else - is the Razzle Dazzle Factor.  Consider:
- Top scorers screen
- Different ways to check if the input is correct
- Animation of the words
- Using colors to describe if a person got something right or wrong
- Timers
- Different levels

The starred requirement was just so students get a feel for how they need to write up their "Create" task and to force them into using functions a bit more.  

This "rubric" was intentionally designed to give students freedom and encourage divergent thinking between groups.  The "rubric for a C" idea was something I learned from  Rebecca at a code.org conference.  I actually really like it, especially for this class there is no "cap" to student creativity AND it keeps my trolls going.  It ensures that students are constantly working in class and pushing themselves. 

Students needed to work with at least three other people for this project.  I am excited to see how all of their projects will be "the same but different" when we are all done and I think students themselves might be surprised to see how other teams solved the same problem as themselves. 

Saturday, February 18, 2017

What does a good CS class look like?

This question came up in a meeting I had with someone from the Upperline School in NY.  Really it is what I have continued to struggle with since transitioning to teach more CS than math.

When I think about teaching math, I know what a good math lesson looks like.  It has all students collaboratively solving problems.  But when it comes to CS, I haven't necessarily seen a lot of "WOW! that was a good CS lesson" in other classes - in fact, I've only observed one other person's CS class, and it seemed like an average class.  Nothing I was dying to replicate in my own class.

In my class, so much of the programming tasks are pretty individual - people working by them selves to learn a new aspect of programming.  They talk to one another when they run into problems, but I don't see students wrestling with content the same way I see students in math wrestle with content.

Our class-code-alongs provide a bit of a glimpse into that, but still there is this awkward timing thing that I don't have quite down.

Where I did see collaborative problem solving in my CS class recently was when we did the brainstorming for our Simon game.   I think that can be expanded on to give students a task and see what they come up with.

Next, I want to give students a challenge to make another game - maybe 2048 the game, or a memory game?  I think this could be a fun, collaborative, and rigorous challenge for students.  I could even create my own code to give students who need a bit more scaffolding after they struggle a bit.

I keep coming back to the question of "who is learning in my class, when, and how do I know?"  Here's  how I have identified my "learners" in my class thus far:

  • I have a few students who are constantly asking questions - it shows that they are thinking about processing what they are taking in and making sense of it.  
  • My students who "go rogue" and decide to do their own projects are other students I would identify as my "learners" also - they are creatively arriving at solutions.
  • My students who can look at someone elses' code and troubleshoot it.
  • My students who create things they are proud of... you can see it on their face - they are happy and satisfied with their work.
  • Students who see the need to define the problem - again, they are asking questions and keeping the big picture and the small picture in mind.
  • My students who re-read their code before asking me - have looked at the errors and tried to make sense of them.  I have noticed a gap between students who know how to read code and those who don't.  This was especially true when we took a break from programming and then came back to it.  Some students were writing some funky things like if (x = 6 or 7) - logically I know what they were trying to do, but they were pretty far off the mark from a syntax perspective.  I suppose this is much like PEMDAS in math - they might be capable of thinking about a problem from a big picture, but when it comes to computation, it can be rough.  

When looking at this list, I am noticing that a lot of these things are happening when we do projects - not just the little stages in CodeStudio.  It is so hard to see the learning when they are "plugged" in to the computer...  obviously there is a time and a space for this type of learning, but I am wondering if I need to move to peer programming models or replace it with some more open ended-esque projects.

I really wish there was someone out there doing CS education research much like Jo Boaler is doing maths education research.

Friday, February 17, 2017

DDR re-make - brainstorming and a gallery walk

I started this lesson by having students brainstorm how they would build the app.  In groups they had to answer the questions:

  1. What would the UI include?
  2. What variables do you think you will need?
  3. What functions will you need?
In my first hour, I had them do this as a table on mini-whiteboards, but inevitably one person did the majority of the writing and the other students couldn't really see what was being written since the board was the opposite direction of them.  SO, I moved to a "Harkness" style method and had students in my next class do their work on the whiteboards around the room which got more students involved in the brainstorming process.  Then we did a gallery walk so they could look at other students's work.  

Here is some of the work:





I actually loved this structure.  All students were up and engaged, they were making sense of eachothers' ideas, and problem solving.   I had created a UI for all students to start with along with comments for what the code should include.  I found this structure useful during the ColorSleuth app so we all had the same ID names while we were programming.  I had also seen this commented out skeleton in some of the MOOCs I have been exploring and found it to be a good way to almost literally put in scaffolding in place.  I didn't show this to students ahead of time, but I almost wish I would have given them a screen shot of the UI so they could focus a bit more on logic during this time.  Here is what the starter document looked like.




Taking time to do the gallery walk was important for the class, too.  Doing this I learned, from a teacher perspective, that the problem needed to be well defined if we were going to do this as a class.  Things like, how scoring would work, does the pattern get longer over time, etc. are all questions for which we needed to agree on answers.    I think the brainstorming may have been even more useful had we developed these answers before going to the whiteboards.  BUT, I also think we could have introduced the big problem of "make a Simon game", had students develop these answers and questions themselves, worked for a few days, and then done a reveal of the different approaches to the problem.  For the stuff we were doing together though, we wanted to have the same vision.

A lot of students also brainstormed things that I had decided we wouldn't focus on together (like score, for example).  It was helpful to write these down as "possible extensions" inside the code so students could work on that extension at the end of our time together.  By the end of two days, this is what our program looked like.

Our possible extension list got quite long too, including:

// - Make it auto-check the solution after you are done hitting the keys
// - Make the "Play Again" button work
// - Make a cooler "you win/lose" screen
// - Make the pattern longer as the game goes on
// - Keep a score
// - Add other possible key presses
// - Add sounds
// - Make the pattern go faster as the game goes on
// - Make it wait for the series to play BEFORE someone can enter arrows
// - Protect against trolls so that they cannot "check your work" BEFORE pressing the "start" button (since both arrays are empty, it will say the won)


I also learned that by brainstorming with other people, students developed some creative and elegant solutions, solutions that I hadn't considered when developing the code myself.  This makes me even more excited to try the "big problem" approach later on in the course.

Next, I want to use this problem we did together as a lens for the writing involved with the Create task for CSP.  We should be able to answer a lot of the questions about abstraction and development with what we have done here.