I will be student teaching an AP Computer Science Principles class next year and have run into an issue. All of the high schools around us are using the Code.org curriculum but from talking to students who took the class 2016-2017, they remarked that code.org was very poorly setup and very remedial. These were students with background in CS and they seemed bored of block programming and so-called 'spoon feeding' but I am stuck deciding to stick with Code.org and try to figure out a way to make it more interesting for the more advanced students, or to use an alternative like https://ap.cs50.net/ a class that is more difficult by review but seemingly more rewarding.

TL;DR - Should code.org be used for APCSP and should I personally make it more difficult for the more experienced students, or should I use a more difficult curriculum and give more help to new students?

  • 2
    Quick clarification: what are the backgrounds of your students coming in? This particularly seems relevant given the way you've framed the question. – Ben I. Jun 27 '17 at 17:39
  • The pre rec for the class is an intro to programming class that teaches the basics of python, but many students have done work outside of class and picked up skills. So students come from backgrounds ranging from basic python to advanced web development or game making, it is a very broad range of students, this is where the issue lies. – itsjtwright Jun 27 '17 at 17:42
up vote 9 down vote accepted

TL;DR Teach CS50 AP.

I taught AP CSP this past year, and I cannot speak highly enough for the curriculum that CS50 has written for this course. I'll try to enumerate its strengths as objectively as possible:

  • It actually feels like a legitimate AP course in the sense that it is a college course (the most popular one at Harvard and I believe the most popular MOOC as well) adapted for high school. The connection to Harvard adds great legitimacy to the curriculum and engages students.
  • The curriculum scaffolds nicely for beginners or students with a little background (especially Python). The language progression from Scratch to C to Python helps students build a foundation in computational thinking and progress towards more advanced programming constructs, culminating in building engaging web apps.
  • The resources available are unparalleled. CS50 has every lecture on video from every past iteration of the course. There are video shorts for every important concept along with additional study pages. Plus, there are communities here on SE and on Reddit.
  • It is about more than programming. CS50's three pillars are "accessibility, rigor, and culture." It brings all students to the table, challenges them, and also creates a classroom environment that stress community over competition. Events like CS50 Puzzle Day set it apart from any other class out there, AP or not.
  • The teacher support is incredible. I'm a part of a community online of other CS50 AP teachers, and it was invaluable throughout this past year. They constantly reach out and cultivate connections among teachers of the course.
  • The course stress student growth. As they say on their syllabus, "what ultimately matters in this course is not so much where you end up relative to your classmates but where you, in Week 11, end up relative to yourself in Week 0." This stress on a growth mindset approach is perfect for beginners.
  • Students are more than prepared for the AP Exam.

I could keep going on and on, but this is sufficient for now. I believe strongly in CS50 and CS50 AP. The edX course CS50 quite literally changed my life. As one of their shirts says, I am "CS50 Proud."

  • 1
    CS50 AP is what I wish A Level Computing was when I took it - it's a class I wish I had the chance to take, and the attitude towards learning and growth is a really healthy mindset to encourage. – Adam Williams Jul 4 '17 at 18:43

Code.org is definitely meant to introduce more and more students to Computer Science. Students who are already familiar with the basics and want to learn more are likely to get bored with Code.org.

We have instructors who use CS50 AP curriculum which serves as a great pre-req to what students will learn in college. The assignments focus on algorithms, design, data structures, networking etc.

I would suggest using assignments from the CS50 AP curriculum and providing the proper tools to students to encourage self learning practicing in their own time outside of the classroom.

Just wanted to chime in here. I'm a bit biased as one of the founders of CodeHS, but I think you should take at look at the CodeHS AP CS Principles course we made. Here are a number of reasons why I think it's pretty great:

  • It's free. You just need a free CodeHS account to track and save your work. Students and teachers can access the entire course for free, including numerous supplemental materials.

  • The CodeHS teacher community has created thousands more practice problems and playlists to supplement the default materials, so there is always so much more you can do.

  • It's customizable, so if you want to add in your own lessons, activities, or quizzes, you can add them into the system and track student work all in the same place--even writing your own autograders to give students instant feedback.

  • Students who really excel can proceed at their own pace and study ahead even into any of the rest of the numerous courses, so there's no limit to how much you can learn.

  • Because students can move at their own pace and teachers can track their progress, students can be taught individually to their current level as opposed to only teaching to the average or the bottom.

  • It's College Board Endorsed, which required a rigorous review process, so you know that it covers all of the required topics and will prepare you to ace the exam.

  • There is a pro version that comes with even more resources, support, and numerous time saving tools for grading, code review, tracking student progress, and more

  • Most importantly, we care. We want you and your students to be successful and learn, so we're always listening to our teachers, gathering feedback, and making improvements to the courses and curriculum. If you have suggestions

Your curriculum for CS Principles should evolve over time as your students' background evolves over time. If your students' background is not evolving from year to year, your district is implementing CS too late in the K-12 sequence. That is, if your AP CSP is a 10th grade course, a 2017 crop of 10th graders might be new to programming and you can softball and differentiate your instruction in order to avoid preparatory privilege.

In designing a CS program, school districts should aim for CS experiences and achievement in elementary and middle schools (ages 6-14) such that a 10th grade (age 15-16) course should be full of students who have already created and debugged a program. If that's your use case, rigorous projects can be achieved across the CS Principles framework of objectives. On the other hand, if a school district is just starting to develop a CS program, CS Principles is not an unreasonable place to start. Indeed, most CS Principles curricula assume no CS background knowledge. There are still lots of schools that don't teach CS, so most students transferring into a district require this differentiation anyway.

Just to elaborate on some of Peter's excellent points. I would use Code Org for two reasons: 1) Because it is a "common" curriculum, and 2) because it prepares students for the AP test. You are "teaching to the test" but that's what you are being paid to do.

In order to develop a challenge for the better students, give a test at the end of the first week or so. Then instead of measuring "absolute" achievement at the end of the course, measure everyone's "relative" achievement, compared to the week one test results. That's how you can develop curriculum modifications for the better students. Also, a person that did "poorly" on the first test but reached level X by the end of the course will get a higher grade than someone who did well on the first test and only reached the same level.

Your Answer


By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.