Language

Python

What You’ll Learn: CCC301 is the most essential course in the algorithm learning path. This course uses Python — widely regarded as the best language for expressing algorithms — to systematically learn a wide range of programming algorithms and strategies. It further develops students' thinking skills, including the awareness of their own thinking process, and their ability to solve complex problems — not just finding a working solution, but finding an efficient one.

Students will work through numerous past CCC problems to gain a deep understanding of core algorithms and strategies, including when and how to apply them effectively. This lays a solid foundation for tackling advanced competition problems.

Topics include:
  • Big-O Complexity Analysis: Understanding the relationship between runtime and input size; building awareness of efficiency
  • Five Applications of Binary Search: Searching for values, ranges, and boundary elements
  • Code Optimization Techniques: Improving performance when the algorithm itself cannot be improved
  • Recursion and Memoization: Enhancing recursive algorithms by avoiding repeated computation
  • Expression Conversion and Evaluation: Converting between prefix, infix, and postfix notations, and evaluating postfix expressions
  • Advanced Regular Expressions: Building on CCC201 to learn split, backreference, and look-around techniques for powerful text processing
  • Graph Algorithms: Applying BFS and DFS to problems involving multiple paths and shortest path discovery
  • Greedy Strategy: Implementing algorithms like Dijkstra’s shortest path
  • Dynamic Programming: Solving problems with optimal substructure; understanding classic algorithms like Warshall
  • Counting Problems: Efficient strategies for solving problems involving permutations and combinations
Why Learn Algorithms
  • Algorithms are the foundation of programming competitions, and essential for success in contests like CCC, USACO, and IOI
  • They are key to technical interviews, code accessments and careers in the tech industry — algorithm problems are a central focus in interviews at top companies such as Apple, Google, Meta, and Amazon.
  • Writing algorithmic code sharpens thinking more than general software development, which is why algorithms are often referred to as “competitive sport programming.”
  • Algorithms are fundamental in many cutting-edge technology fields, including:
    • Artificial Intelligence, Machine Learning and Data Science
    • FinTech (e.g. Quant Developer)
    • Compression, Encryption, and Cybersecurity
    • Images, Graphics, Audio/Video Processing, and Computer Vision
    • Intelligent Systems such as Robotics, Autonomous Driving, Search and Recommendation Engines
  • They are essential for developing complex software systems, such as large-scale games and graphics engines
  • They lay a strong academic foundation for university programs in Computer Science, Computer Engineering, Software Engineering, Computational Mathematics, Financial Statistics, Mechatronics and other STEM majors
What You’ll Be Able to Do After This Course?
  • Confidently apply core algorithms and programming strategies
  • Effectively use a wide range of Python data structures, such as lists, sets, dictionaries, heaps, and queues
  • Analyze and optimize program performance — this course marks the transition from “writing code that works” to “writing code that works efficiently”
  • Independently solve CCC J5 / S2 / S3 level problems
  • Become confident enough to earn a Certificate of Distinction in the Senior Division of the CCC
  • Build a strong foundation for advanced courses like CCC302 and CCC303, and prepare for international competitions such as CCO, USACO, and IOI
RETAKE FOR FREE If you have already paid for a course, you are welcome to review it for free each time it is offered. Feel free to join us again.

$1200 ($30 per hour)

40 hours (20 classes)

Time: TBD

Dates: TBD


How to register?

1

Send me a message (519) 701-7988

2

E-Transfer: teensprogramming@gmail.com