I’ve been collecting my thoughts on this past year throughout the summer. Since I’m about to start a new school year, now is a good time to review these reflections and share my thoughts and plans for the upcoming year.
Last year was the first time that I taught AP Computer Science. Based on my experience teaching Physics, I appreciated the significant difference between content knowledge and pedagogical content knowledge. I spent the year building my pedagogical content knowledge and trying various types of activities to determine which would be most effective. I expanded my network of computer science teachers throughout the year and attended a couple of great workshops this summer: the [AP Annual Conference](https://pedagoguepadawan.net/260/ap-computer-science-preconference-workshop/) and the [Tapestry Workshop](http://www.cs.virginia.edu/tapestry/).
One aspect of the class that did not work well was the textbook. The textbook was old (it didn’t cover Java 5 features) and didn’t align with my personal teaching preferences (I’m a strong object-oriented proponent and start objects first). We stopped using the textbook after the first couple chapters. My department chair was super supportive and I was able to purchase [Cay Horstmann’s Java Concepts](http://bcs.wiley.com/he-bcs/Books?action=index&bcsId=7875&itemId=111843112X) book for the upcoming year. I spent a lot of time this summer creating units, choosing questions, and selecting programming activities based on the new text, but it will be well worth it.
Students spent most of class time working on programming activities. These activities were small in scope, focused on a specific concept, and not graded. They were formative assessments. I spent most of class time visiting students, asking questions, and providing direction without being too helpful. Perhaps my favorite part of this class was that I had the opportunity almost every day to talk individually with every student and directly observe their work. This upcoming year, I hope to spend even more time on these programming assignments. I hope that with the better textbook, I can minimize lecture and notes and just focus on highlighting key aspects the assigned reading and discussing questions that the students have after having read the chapter.
One part of class that worked out very well, was providing [choice in the programming activities](https://pedagoguepadawan.net/212/differentiation-and-choice-in-programming-activities/). My students were fairly diverse in both interest and background knowledge. Providing them with a variety of programming assignments, all focused on the same concept, but of varying degrees of difficulty and application, allowed each student to challenge themselves and yet be successful. I stumbled upon this by accident when I was unable to decide which of three programming activities would be the best. I decided to offer all three and was surprised at increased level of interest as students chose their favorite. While I’m changing most of the programming assignments this upcoming year, I consciously defined sets of programming assignments to provide students with choice.
Related to these topics of choice and diversity, I quickly realized last year that some students would complete a programming assignment in 10 minutes while others would need an entire class period. Again, by accident or intuition, when I first encountered this diversity, I spontaneously created an extension of the programming activity to challenge student who finished quickly. After that, I made an effort to define extensions to most of the programming activities. I also encouraged students to explore their own extensions. I will offer some of these to this year’s class. Throughout the year, these extensions were generalized into the idea of “add more awesome.” As students finished the base assignment, they would start to “add more awesome” without direction.
While I’m changing most of the programming assignments, many of the summative programming labs will remain the same. The programming labs are submitted for scoring and involve significant effort compared to the programming assignments. We will continue to do the [Game of Life](https://pedagoguepadawan.net/202/the-game-of-life-and-grid-world/) lab, [Media Computation](https://pedagoguepadawan.net/279/media-computation-collages/), [Fractal Trees](https://pedagoguepadawan.net/241/fractal-tree-lab/), and [Capstone projects](https://pedagoguepadawan.net/281/computer-science-capstones/). A few labs will be new. For example, we will try a [Word Search](https://sites.google.com/a/stuycs.org/home/courses/ml1x/zamansky/work/hw-20-duetbd) lab from Stuyvesant High School.
There are a couple of new ideas that I found lacking last year that we will try this year. I want students to have more experience with [Test Driven Development](http://en.wikipedia.org/wiki/Test-driven_development) and unit testing with [JUnit](https://github.com/junit-team/junit/wiki). I also want students to present their work to their peers; specifically, their capstone projects. While there was plenty of interaction among pairs of students last year, I didn’t provide an opportunity for students to present to all their peers.
My final focus for the upcoming year is applying some of what I learned at the Tapestry Workshop to increase the number of female students and under-represented minorities in computer science. Some of these efforts will be outside of class focused on administrators and counselors, but others will be in the classroom. Everything from my choice of programming activities to the decor of the lab can reduce stereotype threats. I hope to see a change in enrollment of the coming years!