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