July 1, 2016 marks the completion of my first ever high school credit course, Intro to Computer Science. It was nice to be able to focus on just one course as well as rehearse the curriculum planned for release this school year as a required technical credit for graduation.
I’ve got to give a LOT of credit to Daniel Shiffman, author of Learning Processing, for writing perhaps the best book for teaching Processing to beginner programmers. I’d also like to thank Stephen Derrington for bringing back this book from a workshop he attended at Southern Methodist University. Stephen is teaching 8 out of 12 of the sections we are offering this year.
The course could appropriately be subtitled “Foundations of Programming.” If all our students are to learn how to code, then these are the foundational concepts they will begin with. It’s tough to really put the Science in Computer Science without getting these concepts out of the way first:
- Expressions and Operators
- Conditional Logic
- Arrays and Lists
We place less emphasis on the traditional text-in, text-out style of problem solving and more on the creative computation and animation style. The programming language of choice is Processing. It extends Java and features a text-in, visuals-out experience. Following is a screenshot from the semester final project coordinated by student Jake Gose and contributed to by every student in the class.
There’s another type of Intro CS course I’ve seen emerge. It’s the same style of course the new AP Computer Science Principles represents. Check out Harvard and Yale’s CS50 course. If truly interested, there’s an online version of the course anyone can take: https://www.edx.org/course/introduction-computer-science-harvardx-cs50x.
The course we offer is more like the MIT 600x Introduction to Computer Science and Programming Using Python. Now, I’m not touting our course as being on the same level as any of these I linked to, but I do think there exists an interesting distinction between the two approaches to teaching Intro to Computer Science. I see value in both. The question asking to compare the two has been asked on Quora, edX: What are the differences between CS50x (Harvard) or 6.00x (MIT). There are some good persepctives offered on that page.
Does this “teach everyone coding” approach really hit the mark? Is it what our students need to prepare for their future world?
What do you think goals of an Intro CS course should be?