AP Computer Science Principles Blog List

If you teach and blog about AP CSP, please fill out this form so I can link to your blog here too.

This is my first year teaching AP Computer Science Principles. I am super excited to bring the first AP class to my tiny alternative high school. I attended AP training through code.org’s TeacherCon in Phoenix, AZ in July 2017. It was very helpful and so far, I am enjoying using their curriculum.

I created a new blog to use to post a short daily post for each day of my AP CSP class. You can access that site here.

I know other teachers who also decided to blog about their AP CSP classes. I want to learn from you, so I am linking to those here.

Daniel Schneider normally blogs here and has an AP CSP blog here.

Matt Owen normally blogs here and has an AP CSP 180 blog here.

Kaitie O’Brian blogs about both AP CSP and AP CSA here

David Griswold blogs about AP CSP here

Steve Svetlik blogs about AP CSP here

Steph Reilly started a 180 blog for AP CSP here

After a year of teaching Programming with CodeHS

I started teaching programming for the reasons that I mentioned here. I felt pretty clueless about how it would go and I didn’t know exactly how I would even grade students after the first few weeks of the class had passed.

Things I’ve noticed:

  • Similar to Khan Academy, using CodeHS alone and expecting students to work in isolation is dehumanizing and will teach them very little. One of my primary reasons for teaching programming is to help students feel confident taking risks and being creative. Michael Fenton’s Ignite talk sums up this comment better that I can.
  • Students do not look at and think about examples. They just don’t. They have to interact with it for it to be useful.
  • Most of the CodeHS instructional videos begin with a brief explanation of a new coding concept, then go on to write a program using the concept. I’ve learned that that first minute is beneficial, then I stop the video.
  • Some of the units progress a little too quickly, leaving students feeling very under-equipped to write programs. I felt the same way when I completed the unit myself – particularity sections of the JavaScript unit.
  • Some of the programs students are asked to write could be more engaging. For example, they write a program that decides if it is a weekend, there are a few programs that discuss apples & oranges.
  • The instructions for each program could be explained more clearly. A 10 point font paragraph is tough for some students to follow on a screen. A bulleted list of expectations for the programs, or a checklist would be even better: where students check off when their program is able to complete each component.
  • It is missing a projector mode where I can project a complete program with a large, bold font.

What works for my classes

I anticipate areas where students will struggle and develop activities to bridge the gap. These activities include:

  • Modifying the example programs to do something similar, but different then what they currently do. This is much more productive then having students watch the program being written in a video.
    • Some examples:
      1. Change the example program that converts US dollars to GB pounds to instead convert minutes to hours.
      2. Change the example program that draws a blue circle to draw 1 large circle centered exactly on the canvas, and change the color.
      3. Change the calculator example to instead prompt the user for how much money they waste per week and calculate how much money they waste per year.
  • Pencil & paper activities that allow students to think through a challenging coding concept and better understand the computations behind the code. Here is an example of an effective activity to help students understand how for loops can be used to sum numbers:

  • I employ the concept behind the 5 Steps to Orchestrating Productive Math Discussions with students programs:
    • They attempt & submit their programs
    • I pre-select and sequence their programs
    • Student present their code as the class completes a form keeping track of each program and their observations:Capture
    • Students discuss and compare different approaches their peers have to complete a specific program.
  • Minimum lines of code contest: especially at the beginning of the school year, I’ll tell students that we are having a contest today to see who can make their program work using the smallest number of lines of code. This encourages them to think about programming efficiency and style and not just accomplishing a task.
  • Students get choice in a final project for each unit. There is a separate part of CodeHS that includes “supplemental material” I used these and assigned a point value to each program and told students they just had to earn 30 points. some students opted to complete 1 challenging program while others completed many more simple programs.

Grading

  • I currently grade with 70% or their grade being successful completion of each programming unit (for loops, variables, booleans…), 20% of their grade is their final project for the unit, and 10% is supplemental practice, worksheets, etc.
  • I’m not thrilled with this system. I keep edging closer to eliminating grades in programming, but I’m not quite ready yet. Maybe after some serious consideration this summer.

Programming: SBG skills list for the first 6 weeks

As I mentioned here, I am a little unsure of exactly how this class will operate, but I have to start somewhere. This took me a long time, mostly because I’m not sure how to pace this class. It will be a whole different animal compared to geometry. The fun part is that I will learn something & hopefully students will too! I am still blown away at how quickly this class filled to capacity. I’ve never taught a class that students really wanted to take! Lots of pressure!

Little Fish / Big Pond / Why Coding

This post bugged me. I could go on and on about why. I think I found it disturbing because I agree with some of the points, but there is something fundamentally wrong about the whole post. Something that I think is hard to see unless you know your students and how to appeal to them.

I’m currently reading Malcolm Gladwell’s David & Golaith which is about perceived underdogs compared to who is most likely to actually be successful. There is a chapter where Gladwell compares students pursuing STEM degrees in the top, middle, lowest thirds  based on SAT scores at Hartwick College, a small college in New York, to the top, middle, lowest thirds of students at Harvard. Even the lowest third at Harvard scored better on the SAT then then top third of students at Hartwick. The interesting thing is that the top third in both schools were equally as likely to complete their degrees, similarly the middle & bottom thirds had the same likelihood of completing a STEM degree from either  school.

The reason being that students perception of their ability is a large factor in their success (also, standardized testing doesn’t measure anything meaningful). Students are more likely to be successful as a “top” student at a “lower” school then as a “low” student at a “top” school, because they will see themselves as being “smart”. Parents are setting their child up for struggle when they encourage their teenager to go to the most selective schools.

This is obvious to me after being in a classroom for 10 years, but I couldn’t verbalize my thinking until reading this chapter.

So, what is the “Big Deal” about coding? 2 things:

1) Students currently value technology and it is mysterious to them. Their parents don’t know how to code (mostly) they have seen all the recent movies where some fancy smart hacker guy saves the day. They know the stories about Mark Zukerburg & they use Snapchat and have heard about Evan Speigel’s recent offer. There’s momentum here. It’s new & its exciting & there is a lot of potential to turn it into a career. More importantly, they think that only really smart people can code. Logically, in their minds, this means if they can code, then they must be really smart. Then, if they are really smart they will feel capable of completing a college degree which leads to a greater willingness to apply and increased likelihood of their completion.

2) It has great educational value. Coding is one of many ways to expose students to logical reasoning, to break a task down into small, manageable pieces, problem solving. It provides immediate feedback, teaches persistence, and how to learn from failure…All of the critical elements of being successful. I could go on & on, but you have probably heard all of the hoopla here.

So my big problem with the article linked in the beginning of this post is that it focuses on coding. Coding is just the vehicle. I agree that it won’t always be, but right now it is a tool that I can use to convince my students that they can be successful and their perception of themselves is what creates their future.

Jumping in

It is our Holiday break & I should be planning for the Intro to Computer Programming class that I’ll be teaching starting in 2 weeks. Problem is, I don’t really know how to code. I can write simple programs in a TI-84, and I wrote some C++ & Matlab programs back in college.

I think programming is important & I teach in a very small alternative high school (about 100 students). I have supportive administration. I noticed a significant proportion of students who expressed interest in programming, especially after completing the Hour of Code. Being an alternative school, there are a lot of students who need additional math credits in addition to students who need elective credits & I want them to choose math! Last semester I taught Financial Literacy, which supplies beneficial life skills, but I can’t teach it twice since students need a variety of math elective options. So, programming it is! I asked for it & I got it. IT filled to capacity within a week of scheduling next semester.

So here its what I’m currently thinking about the structure of the class:

The class meets for 90 minutes Tuesdays, Thursdays & every other Friday.

  • I’m going to be heavily dependent on CodeHS’s curriculum. At least this first time. I’m not going to drive myself crazy developing everything from scratch. This is effective when I know what I am doing, but I don’t. I’ll gradually develop this class as I learn more about Javascript & HTML.
  • Since this is for a math credit, I’m going to start every class using Fawn’s Math talks. If I plan to learn a lot by teaching this class, why not try something new for warm-ups too?
  • Since this class will be largely student paced, I need a way to hold them accountable and to stay motivated. I am going to create a student form for daily reflection in the last 5 minutes of each class. This will include: What they learned today, Where they struggled, if they helped or got help form any peers, what activities they completed, room for their comments, and room for a reply from me. I’ll post it here when I make it. hopefully that will be soon.
  • I wish I could think of a fair way to encourage collaboration, but I haven’t been able to figure that out. Maybe we will have discussion time on the every other Fridays where students present where they are stuck and we work together to fix it?
  • I plan to do a hybrid standards based grading (SBG):
  1. 50% of their grade being the standards: all of the programming skills students should demonstrate: for loops, indentation, commenting, while loops, if/else loops, debugging….
  2. 30% Successful Completion of the Challenge projects within each CodeHS unit – I am considering a grading scale where students can choose their grade based on how many of the projects they complete. I don’t know. I may just assign all of the challenge projects because this is their chance to use the 8 Standard of Mathematical Practice and what is cooler than that?!
  3. 20% successful completion of the learning activities.

This all may change as I work through it with students & I’d really like to make more of it my own. I can;t remember the last time I was so dependent on a pre-designed curriculum. I get a little nauseous thinking about it!

[update 1/7 I made a progress log. I’m not sure what I’m missing, so Im only going to make copies for 1 or two weeks, and then I’ll see how they are used & what I should change ]