Last year, I was a teaching an AP Computer Science Principles class to help develop and implement a new curriculum. A group of twelve students volunteered to learn Swift as the programming language for the course. Using Apple’s curriculum, I taught them iOS development in Swift while working with the teacher to tweak the curriculum for effective use it in future years.
The curriculum was extremely well received by the class. Due to COVID-19 causing nontraditoinal AP exams to be taken, the score distributions between years would not accurately reflect improvement between year. We had to rely on more subjective observations, but we concluded that it was greatly beneficial. Over the span of the course, the students were highly engaged and it was a joy to develop lessons for them. There were some hiccups along the way, but throughout the year we got them worked out.
As an AP class, the scope of the curriculum is defined by the College Board. Unlike most other AP classes, AP Computer Science Principles does not equate to a particular standard college class. Instead, it reflects an elective credit where the teacher is free to cover the core concepts in whatever way they see fit.
Apple’s curriculum is able to take advantage of that freedom by teaching the required concepts in the context of iOS app development. I am extremely pleased with the Apple curriculum and I feel it is starkly an improvement from all other APCSP curriculums (we did our research before picking it); however, there are still some shortcomings which I think can be attributed to the class being AP.
The difference between Apple’s App Development with Swift (the curriculum for teaching iOS development outside of APCSP) and Apple’s AP Computer Science Principles with Swift curriculum is quite large. The AP curriculum frequently omits fundamentals that are extremely important for going forward though not immediately necessary (such as value vs. reference types) while they were included in the non-AP curriculum.
I feel the primary reason for that disparity is the method that College Board uses to standardize student success. The course has worked itself into a corner by giving a massive amount of leeway while still remaining a standardized class. Almost everything about how the class is run is decided on a case by case basis. While that is a massive benefit in general because each class can be customized to the students' wants and needs, it becomes problematic when trying to assess student performance across every class. This leads to College Board to finding the greatest common denominator for a programming class and testing on that. Since exam preparation is an important component of a course, it leads to the individual courses accommodating arbitrary and unreflective examinations.
Part of their exam is submitting a final project. In the rubric for said project, only one out of eight points is determined by the project itself (which isn’t even required to work). Instead, it focuses on fitting abstract concepts like the design process and algorithms into strict boxes to be checked off.
I feel like that standard is still acceptable because there is typically a much lower bar set for high school programming classes. Programming being present in education before college is a recent development, so people are not generally aware of what can be possible at a high school level.
Since expectations are much lower, the difference between a student making a minimal product and going further is nearly indiscernible at a higher level. That leads to larger structures (such as College Board) only encouraging students to reach the former. A curriculum being good enough for a cover photo of a promotional pamphlet1 is not a marker to stop, it’s a marker to keep going.
This may leave you wondering: “Why even bother with having it be an AP class?” It comes down to the way College Board has woven itself into the core of the high school education system.
AP classes were created to give high school students college credit. That still applies and is why the standardized curriculum for classes such as Calculus, Physics, and Computer Science A (the Java based class equivalent to a first semester programming fundamentals class) are welcomed. Since those classes have college level analogs, there needs to be some way to uniformly exchange them for widely accepted credits. AP Computer Science Principles, on the other hand, is a vague exploratory class with no equivalent college credit.
However, as AP classes became more prevalent, schools wanted some way to signify students taking more advanced classes. To do so they started weighting students' grade point averages (GPAs). In my high school’s district, the unweighted GPA has a 1-4 scale with 4 being an A while the weighted GPA scale has 1-5 with 5 being an A in a class determined to be college-level (AP or dual enrollment). The exact numbers may vary but the principle is fairly universal.
Weighted GPAs slowly became a more prominent reason for students to take AP classes. Now it has reached the point where top students think of any class that is not an AP class as hurting their GPA (and therefore their college applications) even if they are getting an A in it.
Without the AP label thrown in front of the course name and the exam thrown at then end, many of a school’s top students would avoid taking the course.
Giving high achieving students an opportunity to take an exploratory project based class is a significant benefit because there are currently no other classes where that is possible.2
That is why the AP in AP Computer Science Principles is a compromise, and a necessary one at that. I feel like the additional baggage the AP adds to the course holds it back by reducing depth; however, it opening exploratory classes up to high achieving students balances the scale.
For this compromise to change there would need to be larger, structural changes in high school education.
And boy, they sure do promote it. Recently, APCSP has been a golden child of the College Board. Everything from the sentiment of promotional posters they distribute to the schools to the informational website being a big promotion of the class. If you compare that to their website for AP Computer Science A, the difference becomes even more apparent as it consists of little more than a download link to a 220 page PDF with an extremely verbose list of every concept covered in the course. ↩︎
I feel like this may be more indicative that the weighted GPA system is just broken because schools are in a race to inflate the worth of classes. Exploring that is beyond the scope of this post. ↩︎
Published on Sep 08, 2020