Download the full syllabus as a PDF with mappings to the AP CSP Framework’s Learning Objectives


CS50 is Harvard University’s introduction to the intellectual enterprises of computer science and the art of programming for students with a diversity of technological background and experience. CS50 for AP Computer Science Principles is an adaptation of CS50 specifically tailored to align with the AP Computer Science Principles curriculum framework. The course’s assignments, materials, and resources are all identical to the version of the course taught at the college-level, albeit adapted to suit a secondary school audience.

Among this course’s objectives is to supply students with a comprehensive introduction to the fundamentals of the discipline of computer science. We will do so using programming in several different languages as a vehicle to introduce these fundamentals, including such topics as algorithms, abstraction, data, global impact, and internet technologies. Though the course is programming-heavy, it should be stressed that this is not a “programming course”; rather, this course should be considered one of problem-solving, creativity, and exploration. By year’s end, students will have a richer understanding of the key principles of the discipline of computer science. Students will be able to speak intelligently about how computers work and how they enable us to become better problem-solvers, and will hopefully be able to communicate that knowledge to others.

Whether students elect to take no other computer science courses in their lifetime or consider this class the first step in a longer course of study, it is our sincere hope that they feel more comfortable with—and indeed sometimes skeptical of—the technologies that surround us each day.


Students are expected to submit all problems! If students would like to receive AP credit they will need to take the AP CSP Exam and complete the Create and Explore Tasks.


The only background required for CS50 for AP Computer Science Principles is completion of Algebra I or its equivalent.


No books are required for this course. However, students may want to supplement their preparation for or review of some lectures with self-assigned readings relevant to those lectures’ content from either of the books below. The first is intended for those inexperienced in (or less comfortable with the idea of) programming. The second is intended for those experienced in (or more comfortable with the idea of) programming.

For Those Less Comfortable

For Those More Comfortable

The book below is recommended for those interested in understanding how their own computers work for personal edification.

This last book below is recommended for aspiring hackers, those interested in programming techniques and low-level optimization of code for applications beyond the scope of this course.


Consistent with the AP Computer Science Principles curriculum framework, the course’s material is organized around seven so-called “big ideas” as well as six computational thinking practices. The seven big ideas are:

  1. Creativity
  2. Abstraction
  3. Data and Information
  4. Algorithms
  5. Programming
  6. The Internet
  7. Global Impact

And the six computational thinking practices are:

Unit 0

Computers and Computing. How Computers Work. Binary and ASCII. Logic and Processors. Memory. Algorithms.

Unit 1

Pseudocode. Scratch. Syntax. Variables. Data Types. Operators. Boolean Expressions and Conditionals. Loops.

Unit 2

Compiling. Functions. Arrays and Strings. Command-Line Interaction. Exit Codes. Libraries. Typecasting. Bugs and Debugging.

Unit 3

Linear Search. Bubble Sort. Selection Sort. Insertion Sort. Binary Search. Computational Complexity. Unsolvable Problems. Models and Simulation.

Unit 4

Principles of Good Design. Ncurses. Structures and Encapsulation. Recursion. Merge Sort. Hexadecimal. File I/O. Images. Version Control and Collaboration.

Unit 5

Internet Basics. IP Addresses. DNS and DHCP. Routers. TCP and IP. HTTP. Trust Models. Cybersecurity. HTML. CSS.

Unit 6

Python. Python for Web Programming. SQL. MVC. JavaScript. Ajax. Artificial Intelligence and Machine Learning. Virtual and Augmented Reality.

Academic Honesty

This course’s philosophy on academic honesty is best stated as “be reasonable.” The course recognizes that interactions with classmates and others can facilitate mastery of the course’s material. However, there remains a line between enlisting the help of another and submitting the work of another. This policy characterizes both sides of that line.

The essence of all work that students submit to this course must be their own. Collaboration on problems is not permitted except to the extent that students may ask classmates and others for help so long as that help does not reduce to another doing thier work for them. Generally speaking, when asking for help, students may show their code to others, but they may not view their peers’, so long as they respect this policy’s other constraints. Collaboration on the AP Computer Science Principle’s through-course assessments, namely the create and explore task, is permitted to the extent prescribed by their description provided by the College Board.

Below are rules of thumb that (inexhaustively) characterize acts that the course considers reasonable and not reasonable. Acts considered not reasonable by the course are handled harshly.


Not Reasonable