Teaching CS50 AP

Below you will find information about bringing CS50 AP to your high school. For questions, email ap@cs50.harvard.edu

Description

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. They 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.

Getting Started

Interested in teaching CS50 AP at your high school? Great! Follow these steps and you’ll be on your way.

  1. Take CS50! The best way to teach this class is to take it; indeed we require it of all our own teaching staff! You can find us on edX or you can take the class online via Harvard’s Extension School. You may choose to take the full course, CSCI E-50 or as a two semester variant via CSCI E-50a and E-50b. In both cases the course content is functionally identical; the main difference between them is that taking the class through Harvard Extension provides you with more resources: In particular, you will be assigned to a teaching fellow, who will lead you through weekly sessions to dive deeper into the content, help you stay on track and on schedule, and you can attend live online office hours with course staff to help get you unstuck in your weekly problem sets.

  2. Sign up for a workshop. Go to https://cs50.ly/workshops to sign up for one of our upcoming workshops.

  3. Familiarize yourself with our tools. At the CS50 AP workshop we will introduce you to many of the tools we have developed to make your life as a teacher easier. All our curriculum lives at cs50.harvard.edu/ap, which is publicly accessible once you create an account and it is activated. We also have a discussion forum where you can ask questions to our team as well as the CS50 AP teacher community; to access it, you only need to have an active edX account, which are freely obtainable on edx.org.

  4. Submit our pre approved syllabus to the College Board with 1658725v1 as the syllabus number to get approved. You can view it here; you must use exactly this PDF if you use the syllabus number above. After submitting, confer with your school’s AP coordinator to check on the approval process.

  5. Once approved, start teaching!

Website

This course lives at https://cs50.harvard.edu/ap.

Visit the course’s website to watch videos, to get help, to download handouts and software, and to follow links to other resources.

Overview of Curriculum

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:

  • Creativity

  • Abstraction

  • Data and Information

  • Algorithms

  • Programming

  • The Internet

  • Global Impact

And the six computational thinking practices are:

  • Connecting Computing

  • Creating Computational Artifacts

  • Abstracting

  • Analyzing Problems and Artifacts

  • Communicating (both orally and in writing)

  • Collaborating

This course consists of 7 core chapters and 2 fast track chapters. In chapters 0-4, students will work mainly in C. In chapter 5, students transition from a command-line environment to the Internet. Finally, in chapter 6, they will begin to dabble in other languages to prepare for the create task. The fast track chapters A and B are meant to fit into the curriculum between chapters 4 and 5, since they touch on some of the more complex concepts in C. Chapter A covers different ways to manage data and Chapter B is a toolbox of sorts for those interested in the development aspect.

Chapter Topics Recommended Timeframe

Chapter 0

Computers and Computing

Computers and Computing. How Computers Work. Bits and Bytes. Hardware. Memory. Binary. ASCII. Algorithms.

3 weeks

Chapter 1

Building Blocks of Programming

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

4 weeks

Chapter 2

Putting the Blocks Together

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

5 weeks

Chapter 3

Thinking Computationally

Linear Search. Bubble sort. Selection sort. Insertion sort. Binary Search. Time Complexity. Unsolvable Problems. Simulation.

4 weeks

Chapter 4

Design, Elegance, and Efficiency

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

4 weeks

Chapter A

Managing Data

Stacks. Queues. Pointers. Dynamic Memory. Valgrind. Trees. Tries. Linked Lists. Hash Tables.

optional (no timeframe)

Chapter B

Developer Toolbox

Abstraction and API. Data Compression. Huffman Coding. LZW Compression. Scalability. Modern-Day Computing Problems. Collaboration (cont’d)

optional (no timeframe)

Chapter 5

Networking and the Internet

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

3 weeks

Chapter 6

Problem Solving in an Interconnected World

PHP. PHP for Web Programming. SQL. MVC. JavaScript. Ajax. Artificial Intelligence. Virtual and Augmented Reality.

5 weeks

Explore and Create Tasks

In addition to the end of course exam provided by the College Board, students are required to complete two through assessments. The first of which is the explore task. Students will show their understanding of any computing innovation they choose through a computational artifact as well as a written response.For more information view the curriculum framework page 72.

The second task is a create task. In this task, students will create a program that integrates mathematical logical concepts, develops abstractions, and implements algorithms.There is no restriction on programming language or languages that students can use here. For more information view the curriculum framework page 76. Both tasks need to completed and turned in via the AP Digital Portfolio by April 30.

License and Fair Use

This course’s content is licensed by David J. Malan of Harvard University under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License, which means that you are not only welcome to "take" this course,

you are free:

  • to Share — to copy, distribute, and transmit this content

  • to Remix — to adapt this content

under the following conditions:

  • Attribution — You must attribute this content to David J. Malan of Harvard University but not in any way that suggests endorsement of you or your use of the work.

  • Noncommercial — You may not use this content for commercial purposes.

  • Share Alike — If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.

with the understanding that:

  • Waiver — Any of the above conditions can be waived if you get permission from David J. Malan of Harvard University

  • Other Rights — In no way are any of the following rights affected by the license:

    • Your fair dealing or fair use rights;

    • Apart from the remix rights granted under this license, the author’s moral rights;

    • Rights other persons may have either in the work itself or in how the work is used, such as publicity or privacy rights.

  • Notice — For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to https://creativecommons.org/licenses/by-nc-sa/3.0/.

FAQs

Can I teach CS50 AP internationally?

Indeed you can! We are currently located in nearly 20 countries and would love to share our resources and tools with anyone willing to teach our curriculum!

Can I teach CS50 AP if I am not affiliated with a high school?

Typically, our workshops are geared towards high school teachers. If you intend to teach high school or are looking to adapt our course for middle school, feel free to follow the steps listed above. If you are in fact looking to teach to in a community, city, or university, refer to http://docs.cs50.net/2016/x/resources/teaching/teaching.html

Are the workshops only for high school teachers?

No, anyone who wants to use our curriculum to teach some variation of CS50 should feel free to sign up for a workshop, just keep in mind that they are geared more toward a high school teacher audience.