Long Nguyen

Resources and online courses for Math and Computer Science.

AP Computer Science Principles

This is a resource for teachers and students for AP Computer Science Principles. This curriculum is being updated for newly revised 2020-21 College Board curriculum. The official language for the course is Python.

Course Outline and Lecture Notes

Introduction to Programming with Python
We will cover the essentials of the Python language: data types, conditionals, loops, basic data structures including lists, tuples and dictionaries, functions, object-oriented programming and inheritance.
  1. Basic Datatypes(PPT, PDF)
  2. Operations and Variables(PPT, PDF)
  3. Conditionals(PPT, PDF)
    • Animation with Processing(PPT, PDF)
    • Intro Processing Lab(ZIP)
      Growing Circle Lab(ZIP)
      Bouncing Ball Lab(ZIP)
  4. Functions(PPT, PDF)
    • Paddle and Ball Lab(ZIP)
      Capture A Flag(ZIP)
  5. For Loops and Strings(PPT, PDF)
  6. Lists(PPT, PDF)
    • Capture the Flags(ZIP)
  7. While, Nested Loops and List of Tuples(PPT, PDF)
    • List of Circles(ZIP)
  8. Object-Oriented Programming(PPT, PDF)
    • Intro OOP Lab(ZIP)
      Control Sprite By Keyboard(ZIP)
      Creating a 2D Map of Sprites (ZIP)
  9. Algorithms(PPT, PDF)
  10. Text Processing: Analyzing Shakespeare(txt, HTML, ZIP)
    Luhn's Algorithm: Validity of Credit Card Numbers(PPT, PDF)
  11. (optional)Tuples and Dictionaries(PPT, PDF)
  12. (Optional)An Introduction to Jupyter Notebook(PPT, PDF)
  13. (Optional)An Introduction to Numpy(PPT, PDF)
  14. (Optional)pandas for Tabular Data(PPT, PDF)
The Create Task
Computer Science Principles
We will cover general computer science principles here.
  1. Understanding Data 1: Representing Data Digitally(PPT, PDF)
  2. Understanding Data 2: Images and Compression(PPT, PDF)
  3. Image Processing Lab(ZIP, online notebook(MyBinder))
  4. Understanding Data 3: Extracting Information from Data(PPT, PDF)
  5. Intro Exploratory Data Analysis with Pandas(ZIP, online notebook(MyBinder))
  6. Securing Data: Cryptography(PPT, PDF)
  7. The Internet: An Introduction to Networking (PPT, PDF)
  8. Impact of Computing(PPT, PDF)
  9. (Optional)Digital Audio Processing with Python: Part 1: Audio Basics (PPT, PDF)
  10. Audio Basics Lab(ZIP, online notebook(MyBinder))
  11. (Optional)Digital Audio Processing with Python: Part 2: The Discrete Fourier Transform (PPT, PDF)
  12. (Optional)Discrete Fourier Transform Lab(ZIP, online notebook(MyBinder))
  13. (Optional)Machine Learning(PPT, PDF)
  14. (Optional)Reinforcement Learning(PPT, PDF)
AP Exam Preparation (PPT, PDF)

Interesting Short Projects/Applications in Python

Computer Animation with Processing
We will introduce computer graphics using Processing.
  1. Introduction to Processing(Python Version)(PPT, PDF)
  2. Processing Python Template(ZIP)
  3. Keyboard and Mouse Inputs(PPT, PDF)
  4. Working with Sprites(PPT, PDF)
  5. Create and Control Sprites Lab(ZIP)
  6. Collision Detection(PPT, PDF)
  7. Pick Up Coins Lab(ZIP)
    Tank Shoots Bricks Lab(ZIP)
  8. Resolving Top-Down Collision(PPT, PDF)
  9. Top-Down Games Collision(ZIP)

How to write a very simple platformer game!

This material uses Processing. Review the Processing lecture notes and labs(see above) before attempting this lab. The two video tutorials were created for my APCSA(Java) class but they discuss the math behind the algorithms and are language agnostic.
  1. How to Resolve Platform Collisions(Youtube)
  2. How to Jump(Youtube)
  3. Platformer Game Lab(ZIP)
Text Processing: Analyzing Shakespeare

A short problem set and tutorial on how to perform a simple word frequency analysis: total words, total unique words and most frequently used words in all of Shakespeare's collection of works. (HTML, ZIP)

Additional Topics

Introduction to Neural Networks

A 2-3 weeks curriculum designed for AP Computer Science Principles on Neural Networks. Students will implement from scratch a Python program that recognizes handwritten digits! The full course resources page can be found here.

Introduction to the Discrete Fourier Transform

This course explains the math behind the Discrete Fourier Transform and illustrates its utility through analyzing and manipulating audio files in Python. The full course resources page can be found here.

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.