Tuesday, March 22, 2016

Philosophy of Computer Science Education

Next year I will be teaching 4, that's right FOUR(!) sections of AP Computer Science Principles.

I became a teacher to teach math - and I have thought a lot, intentionally about math education, the kind of math teacher I want to be, what kind of skills I want my math students to develop, etc.  I have enjoyed the challenge of trying to make these things happen in my math classroom with varying levels of support and challenges from my department and PLC.  And, next year, I find myself shifting to be teaching more computer science than math - a lot more!

A bit of background: I had to take CS as part of my math major.  I thought it was going to be terrible, but I was going to get through it.  I ended up loving it.  I was frustrated that I had no idea that I liked (or was maybe even good at) computer science until I was forced to take it in undergrad.  From there I made it a side-mission of mine to spread the joy of computer science.  AP CSP seemed to come along at the perfect time.  I had thought about trying to teach AP CSA but hadn't heard good reviews from students who had friends at other schools who took it - I heard it was dry.  While doing some research, AP CSP seemed like a perfect fit - a focus on creativity and equity was right up my ally.  With administrative support, I taught a soft-pilot of the course in the 15-16 school year.  Now, it has taken off and I will be teaching 4 sections of it next year.

With that, I feel like I need to focus my computer science instruction around a philosophy that I can get behind.  In math, I always said I was teaching students to be collaborative problem solvers.  I think I can continue with that focus for computer science but HOW that looks might be different: 

Collaboration in computer science:

  • More peer-to-peer feedback on projects
  • Equity when it comes to partner projects - define expectations between partners
  • Promote team norms when collaborating (communicate productively, work persistently, take risks)
  • Collaborate with potential users of their creations (proactively and reactively) 
  • Inviting others who have yet to participate


Problem solving in computer science:

  • Focus on problems that are WORTHY of solving (getting at that idea of impact)
  • Get meta about what problems they encounter
  • Test their programs regularly
  • Be able to break apart big problems into smaller problems
  • Develop a critical lens about what problems technology might cause (problem creation) and how technology might fix some problems
  • Emphasize the risk taking with students who tend to play it safe
    • With most projects, there is no reason to play it safe in my class
My philosophy of math education dealt a lot with the mathematical baggage students bring to the table in my math class.  They have years of seeing themselves as being "good" or "bad" at math.  They have parents who have supported them or down-played the role of math in their lives.  There is a lot going on by the time I get to them in high school.  Computer science does not have that in my district.  For most students, I will be their first exposure to the content. This is an awesome privilege but also a terrifying one.  

This year I spent a lot of time giving students written supportive feedback - but next year, with 100 students, I am not sure if I will be able to do that to the same extent.   I need to find a way to help students experience success but also feel challenged in the class - the same as I wanted for my math class.  I think I need to do more research into how students received the feedback I gave them from their projects and how that contributed to how they viewed their abilities in computer science. 

What can I do to make sure student's experiences with computer science are positive?
  • Provide students with abilities to drive their own experiences (esp. in programming)
  • Build a classroom community/culture
    • This might be tricky to do with how independent some of the learning-to-program tasks are... I need to integrate these into the class more so we don't lose that culture second semester. 
  • Recognize student strengths
    • Have a list of strengths ready to go... look in the CSTA practices, TGT leadership dimensions, AP CSP concepts, etc.
  • Prepare for the AP test - doing well on the AP test will make students feel better about their abilities
Those are some initial ideas.  Clearly there is more crossover there than I thought between my math teaching and CS teaching which is encouraging.  There is always more work to be done!