Competitive Programming I
Computer Science • Grade 11 – University Senior
Sharpen your coding prowess with our intensive Competitive Programming Mastery course, designed and taught by some of the top competitive programmers in North America. This course is your guide to excelling in coding contests, equipping you with the knowledge and strategies needed to outperform in both International Olympiad in Informatics (IOI) / Canadian Coding Challenge (CCC) / USA Computing Olympiad (USACO) and International Collegiate Programming Contest (ICPC) settings.
Our comprehensive curriculum delves deep into common algorithms, data structures, and problem-solving paradigms, striking a perfect balance between theoretical understanding and practical application. This course is not about memorizing patterns; it’s about cultivating the skills to analyze problems, devise solutions, and implement them efficiently under contest conditions.
We’ll help you understand the nuances of competition environments and how to effectively manage time, deal with pressure, and maximize your performance. The course also emphasizes the development of efficient coding practices and debugging skills, both of which are crucial in a competitive programming scenario.
Whether you’re a seasoned contestant or a passionate coder looking to break into the competitive programming world, this course provides an enriching learning experience that will transform your approach to problem-solving and give you a competitive edge in your next contest.
What You’ll Learn
- Master DS&A: Gain a deep understanding of fundamental and advanced Data Structures and Algorithms commonly used in competitive programming.
- Problem-Solving Paradigms: Learn to effectively use different problem-solving paradigms to tackle various types of problems.
- Efficient Coding: Develop efficient coding habits and strategies for writing clean, optimized, and bug-free code.
- Debugging Skills: Enhance your debugging skills to quickly identify and resolve issues in your code.
- Contest Strategies: Understand the strategies for contest environments including time management, dealing with pressure, and effectively interpreting problem statements.
- Hands-On Practice: Engage in extensive practice sessions replicating real contest problems to hone your problem-solving and coding skills.
- Peer Collaboration: Learn to collaborate and discuss solutions with peers, fostering a healthy competitive spirit and teamwork skills.
- Continuous Improvement: Foster a mindset of continuous improvement and resilience, critical to excelling in the competitive programming arena.
Included with this class is a Data Structures and Algorithm certification that you can use on your resumes and university applications. There will be a final exam that you will need to pass to attain this certification. More information will be given in class!
Note that topics may be taught slightly out of order (as classes are tailored for the students) but the total amount of content covered will be the same.
Problem Solving / General Tips:
- How to approach contest problems
- Proper team communication
- Debugging and Testing Strategies
- Big O Notation
- Team Reference Document Strategies
Arrays / String Basics:
- Pointers, iterators and multi-pointer tricks
- Palindromes and substrings
- Frequency arrays, prefix sums and difference arrays
- Basic sorts and implementation
- Searching fundamentals
Stack, Queue, Linked List:
- Strategies with data structures
- Monotone Stack / Queue
- Graph & Tree Standard Terminology
- Basic Traversal: BFS and DFS
- Weighted Graph Traversal: Djikstras, Bellman-Ford
- Minimum Spanning Tree (Kruskal’s and Prim’s)
- String Trie
- Graph Question Strategies & Tree Properties
Problem Solving Methodologies:
- Complete Search / Recursive Backtracking
- Recursion Optimization
- Greedy Algorithms
- Divide and Conquer Algorithms
- Dynamic Programming
Hashing, Hash-map/set and Heaps:
- Hashing overview – implementation of a polynomial rolling hash
- Using hashmaps and hash-sets
- Overview of implementation
- General application strategies
- Modulo Arithmetic
- Pigeonhole Principle
- Basic Number Theory
- Floating point strategies
- Lines and basic shapes
- Convex Hull
- Computational Geometry “template code”
"Custom" Data Structures:
- Union-Find Disjoint Set (UFDS)
- Fenwick Tree
- Segment Tree
40 CAD per hour
We offer a discount for upfront payments. Please see our course information page for more information about pricing.
Grade 11 - University Senior
Session 1 (Wed / Sat):
- 6:00 PT – 7:30 PT
- 7:00 MT – 8:30 MT
- 8:00 CT – 9:30 CT
- 9:00 ET – 10:30 ET
Session 2 (Thu / Sun):
- 3:30 PT – 5:00 PT
- 4:30 MT – 6:00 MT
- 5:30 CT – 7:00 CT
- 6:30 ET – 8:00 ET
Good understanding of either C++ or Python