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.
Advertisements

6 thoughts on “After a year of teaching Programming with CodeHS

  1. Hi Lisa! Thanks for writing this post and sharing how you’re teaching computer science and using CodeHS in the classroom.

    I’m sorry to hear that some aspects of CodeHS haven’t been working well for you. However, it’s incredible that you’re providing your students the opportunity to learn programming, even though a couple of years ago you didn’t know very much about coding!

    We are inspired by stories like yours, and hope that you continue to work with us to help build the best possible teaching and learning platform for coding.

    Again, thank you for the feedback!

  2. Thank you Lisa for sharing your experience! We are currently brainstorming a coding class for next year at my school and your insights have changed my thinking about how it will work. I have a meeting regarding the structure of our proposed course this Tuesday and have so many questions I don’t even know where to begin…
    1) We were planning to use JavaScript, do you use multiple languages?
    2) We’d like to align the course standards to math (I.e. Variable expressions, loops, Booleans as you mentioned), so I was wondering if you chose your own standards or just followed CodeHS?
    3) Did you try Khan Academy as a platform or just CodeHS? I still have to learn the code as you did a year or so ago and was planning to do so in June…

    Thanks again, extremely helpful and I like your adapted task ideas,

    Mike

  3. My class is only a semester long intro to programming, but I am currently trying to develop a year long intro to computer science class that students can take and earn college credit. In out semester long intro class, we spend about a month using Karel – CodeHS’s basic programming language that works very similar to JavaScript. Then we program graphing calculators for a few weeks which seems to be a nice bridge between a very visual programming language and JavaScript. After this students are much more prepared for the Javascript unit. I recently asked students a few questions about this programming class and their responses are here:
    https://docs.google.com/spreadsheets/d/1zn_RUUmSWoaglZ3AQuVpCMiqWDUfBFnGlmxjR5zbiFY/edit?usp=sharing
    I used CodeHS as a framework for the standards I wanted to teach, but then I added some standards that I knew my students needed. I also opened the class up to all students because I noticed it helped struggling freshman with logical reasoning skills & understanding of functions to be more successful in algebra 1. Let me know what you decide to do because I know my class can be even better.

    • Interesting. Our class will likely be a semester course as well. I did plan on doing a short unit of programming with the graphing calculators, so it’s helpful that you found it as a good introduction to JavaScript. I will be teaching the course to 8th graders, ranging from pre-algebra to algebra 2 in math skills, and as I stated previously we will be meeting to discuss the possibility of adding the course next year. I’ve been told we need to align to what will be taught at the next level, so it will be fun to hear what is being done at the high school. I’ll give you an update once the meeting is done, and in the meantime plan to check out CodeHS and Karel. Thanks again, Mike

  4. Lisa, I am teaching an Exploring Computer Science course next year as well, and though I’d share some resources I’ve found with you. My course will be more than just programming (we will do some robotics, will learn to speak binary at each other, will play some with hardware, etc) but I’m sticking with programming resources for this comment.

    1) Code.org uses a block-based language in their Code Studio: http://studio.code.org . The Intro to CS 20-hour course has students work through a series of puzzles of escalating difficulty. They start super-easy (it’s aimed to be accessible by students as young as 4th grade), but by the end students have learned the basics of loops, functions, and conditionals, as well as done a LOT of procedural thinking; a good start no matter the level of programmer. I have fun doing them and I can code proficiently in 5+ languages! You can also use the Code Studo to create your own random animations and drawings, although for free-for-all creation I think Scratch is a better and similar choice. I currently plan to have my students work through this course entirely on their own as homework for the first couple of weeks while we do other non-programming things in class.

    2) I have had great luck getting some students having fun learning programming concepts with Code Combat. http://www.codecombat.com This is similar to the Code.Org course in that is puzzle-based, but students code using javascript, python, coffeescript, or even lisp syntax. A good bridge. Honestly, could probably start here rather than with code.org – I may do that, still deciding. The basic content is free, and you can do a group subscription for cheaper if you want access to the more advanced content.

    3) If you think students might enjoy a more visual language than Javascript, you could spend some time learning Processing (http://www.processing.org) . It is a great language for learning; it uses a syntax very similar to Java, and is great for simple visual animations and games. When projects are completed, you can publish them on openprocessing.org or embed them in a website, or even put them on an Android device. I taught a 3-week course this year using processing and our class created some pretty fun simple games. One example: http://www.openprocessing.org/sketch/201330 . There is an Intro to Processing book that is good for exploration and learning. Sadly, I don’t know of anything with instant feedback like you get from CodeHS, Khan, Codecademy, etc for Processing, but if you want to roll your own it would be my suggested text-based language for a high school course. It’s what I plan to use.

  5. I have spent a lot of time in the past writing software first in BASIC, then PASCAL and then DELPHI, and about a year ago I discovered javascript, presented as a way of putting action into a web page. I figured that since it was a fully fledged language one could write applications in js and run them in a browser window. So I had a go. Wonderful. Do you do it this way at all? I found w3Schools, which is jam packed with simple examples for every operation, and these examples can be modified, and put into notepad, then saved as .html Just click on the file name in the folder, and magic, your program runs. This is my completed effort to date

    http://www.mathcomesalive.com/geostruct/geostructforbrowser1.html

    Just click, or paste into the browser.

    If you try “view as source” from the mouse right click you will see the code, as js is interpreted.
    The kids can then see that what they have been doing is really used.

    I love js

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s