Advanced Computer Science in Python

  11-12 graders

  Credits awarded on transcript  

  Algebra II completed with B- or better

  UC A-G approved for [C] Mathematics credits

  90 minutes per class

  8-10 students per class

  Twice per week over 36 weeks

  1249 per student, per semester  

  Self paced instructor-guided  

  Online community

  Office hours on-demand

  879 per student, per semester  

The Python programming language is one of the fastest growing and most popular programming languages in the world. It has a wide range of syntactic constructions, standard library functions, and interactive development environment features. It is the most widely used language for machine learning, data science, and artificial intelligence.

The Advanced Computer Science in Python course is a technical deep dive into the fundamentals of programming with an emphasis on producing clear, robust, and reasonably efficient code using top-down design, informal analysis, and effective testing and debugging. Starting from first principles, we will cover a large subset of the Python programming language, including its standard libraries and programming paradigms. We will also target numerous deployment scenarios, including standalone programs, shell scripts, and web-based applications.

This course provides students with all the essential knowledge and skills needed to become solid intermediate programmers and problem solvers so they can take on decent sized problems on their own and design a solution and make it work. By the end of the course students will creatively solve a problem of their choosing through a capstone project. Students will also be able to demonstrate career readiness through professional certification as this course aligns with the PCAP Exam requirements.

In order to take this course, students must have completed at least one year of computer science. This can include the Introduction to Computer Science, AP Computer Science Principles, AP Computer Science A, or any equivalent course. Students will also need to have completed Algebra II and Geometry courses so that they can manage the mathematical nature of the programming concepts that we will be covering in this course.


  University of California A-G approved for [C] Mathematics credits.

Course Outline

    hide details
  1. Computer Programming and Python Fundamentals
    In this unit students will acquire a mastery of the fundamentals such as running their own program, tracing through code, and leveraging the basic components of Python, including managing input and output. Students will compute expressions, concatenate strings, and manipulate the basic building blocks that make programs through operators, variables, and function calls.
  2. Control Flow
    Students will learn about controlling the flow of their application based on results of expression evaluation. Few programs run from the first line of code and simply execute every line, straight to the end. Flow control statements decide which instructions to execute under which conditions. Students will map out the flow of their programs using flow diagrams.
  3. Data Collections
    Data is everywhere. Most real-world programs have to acquire, store, process, and understand data. Python data structures such as lists, dictionaries, tuples, and sets, are critical ways to handle data during processing. Students will use these inbuilt data structures and recognize when it is best to use each data structure.
  4. Functions and Exceptions
    In this unit we will organize program logic using functions. Students will learn about the difference between parameters and arguments and how information flows in and out of functions. Students will use Python’s built-in exception hierarchy and implement the basics of exception handling.
  5. Object-Oriented Programming
    Students will learn about Object-Oriented Programming - bundling behavior and state together through class definitions. Students will define a class behavior by creating a method, and learn about declaring and initializing class variables. Next, students will simplify their programs further by using powerful concepts such as inheritance and polymorphism.
  6. Deployment Methods
    Students will learn to deploy their code through a variety of modalities. They will package their functions and programs into modules, leverage cloud based deployment for web applications and use connection libraries to communicate with databases and across networks. Finally, students will automate tasks using various types of documents and spreadsheets.
  7. Capstone Project
    Students will explore an area of Python that we have not explicitly covered throughout the class but is aligned with their interest. This might include web development, data science, GUI’s with Tkinter, machine learning with PyTorch, or anything they want to learn more about. Students will start with a problem statement and will present their process of choosing the best technologies to develop a solution.

Our technology requirements are similar to that of most Online classes.

A desktop or laptop computer running Windows (PC), Mac OS (Mac), or Chrome OS (Chromebook).
Students must be able to run a Zoom Client.
A working microphone, speaker, and webcam.
A high-speed internet connection with at least 10mbps download speed (check your Internet speed).

Students must have a quiet place to study and participate in the class for the duration of the class. Some students may prefer a headset to isolate any background noise and help them focus in class.

Most course lectures and content may be viewed on mobile devices but programming assignments and certain quizzes require a desktop or laptop computer.

This course includes several timed tests where you will be asked to complete a given number of questions within a 1-3 hour time limit. These tests are designed to keep you competitively prepared but you can take them as often as you like. We do not proctor these exams, neither do we require that you install special lockdown browser.

In today's environment, when students have access to multiple devices, most attempts to avoid cheating in online exams are symbolic. Our exams are meant to encourage you to learn and push yourself using an honor system.

We do assign a grade at the end of the year based on a number of criteria which includes class participation, completion of assignments, and performance in the tests. We do not reveal the exact formula to minimize students' incentive to optimize for a higher grade.

We believe that your grade in the course should reflect how well you have learnt the skills, and a couple of timed-tests, while traditional, aren't the best way to evaluate your learning.

Top