Thoughts On AP CS Principles

The Advanced Placement Computer Science exam is one of the smallest and least diverse members of the Advanced Placement suite of College Board exams. Very few minorities and very few female students take this exam. In some schools they fact that they dropped from two APCS exams to one hasn’t helped matters. This is not a desirable situation as far as many of us involved with computer science education would like (putting it mildly) and the College Board is not to happy with it either. So what they have down with some help from NSF (National Science Foundation) is to start work on a new additional APCS course. The course is going to be called Computer Science Principles and information is starting to come out about it. Last week they opened a new web site at  https://www.csprinciples.org/.

The process has not been quite as transparent as some would have liked – me included but for the most part I have a lot of faith in the people working on it. (People working on AP CS Principles) I know many of them personally and more of them by reputation. There are a lot of really smart people with strong commitments to computer science education working on it. Still it is not to finally have more information on what they see this course looking like. And so far I like what I see.

The course is based on principles or “big ideas.” (CS Principles: Big Ideas) Beki (CS Principles « Beki’s Blog (there’s an original name)) has a great discussion of these principles that I recommend. Rather than take each one on myself I want to talk about a couple of things that really excite me about a few of them. 

Big idea 1 is Computing is a creative human activity that engenders innovation and promotes exploration. One sentence in the description is “Students in this course will create interesting and relevant artifacts with the tools and techniques of computing and computer science.” Interesting and relevant are interesting words. I think that course creators and instructors are going to have to be careful about how they define them. What is interesting and relevant to students are not always the same as what is interesting and relevant to teachers. If we want students to believe that they can be innovative and that they can explore the projects will have to focus on student ideas of interesting.

Big idea 3 is “Data and information facilitate the creation of knowledge. ” I’m pretty excited about seeing that on the list. I truly believe that helping to deal with large amounts of data is a key contribution that computer science is and will be making to science and industry alike. My hope is that instructors get some good sized data sets to set students loose on.

The look at data directly relates to big idea 7 “Computing enables innovation in other fields including science, social science, humanities, arts, medicine, engineering, and business. ” The description says in part “Students in this course will become familiar with the many ways in which computing enables innovation in other fields. ” I really believe that students need to see computer science not in isolation but as a part of many other fields. The future is “computer science and …” where the “and” can include just about anything a student may be interested in.

It looks like this course will be programming language independent. I am ready to stand up and cheer that fact. There are five pilot runs of the course planned for this fall (Pilot testing the new AP CS definition a post by Mark Guzdial) and it looks like Alice, Python, Scratch and Scratch BYOB at least will be used in those pilots. I don’t think we know what the fifth course will use. My person hope is that people will look at Small Basic as a possibility. And maybe Visual Basic or for the people who just must use a curly brace and semi-colon language C#. I think that many people are comfortable with using those languages for beginners. They offer a chance to create real Windows programs and many students find that to be motivating.

For Small Basic  I see the language and IDE simplicity as being advantages. I also think that Intellisense (which of course VB and C# also have) as something that really encourages exploration which is a key part of big idea 1. While I love Scratch and Alice (and Scratch BYOB looks pretty exciting) I do worry about the transition from those simple languages to more complicated languages later on. We’ll see how this goes and hopefully people will be gathering real data and study along the way though the pilots.

The plan as I understand it is for there to be five university pilots this coming fall. The next fall there will be 10 university pilots and between 5 and 10 high school pilots. At SIGCSE there seemed to be some interest in unofficial pilots as well. We’ll have to wait for still more details on the course before anyone can really design these courses though. Apparently there is a 70 page book with details. Of course as with many things the “devil is in the details.” I’m sure there are a lot of us waiting the release of that detailed description.

One of my teacher friends is very concerned about how this course will be tested. That’s a valid concern since the results of the test will determine if students receive college credit or placement. The language independence is a two edged sward here. One of the main complaints about the existing AP CS A exam is that it is really “AP Java” and focused more on the language than on computer science concepts. It’s an easy trap to fall into. So language independence make that virtually impossible. On the other hand language independence makes some things easier to test. You can not ask people to write code to be graded without having graders who have a deep knowledge of all of the possible languages that students may use. I don’t see that as practical at all. So we’ll have to have questions that ask students to describe activities. I guess. Let’s say that I’m glad I don’t have to write this exam. This is one of the larger details that has to be worked out. Well maybe too large to be called just a detail. :-)