Competitive Programming I

Computer Science • Grade 11 – University Senior

Overview

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

Objective

  1. Master DS&A: Gain a deep understanding of fundamental and advanced Data Structures and Algorithms commonly used in competitive programming.
  2. Problem-Solving Paradigms: Learn to effectively use different problem-solving paradigms to tackle various types of problems.
  3. Efficient Coding: Develop efficient coding habits and strategies for writing clean, optimized, and bug-free code.
  4. Debugging Skills: Enhance your debugging skills to quickly identify and resolve issues in your code.
  5. Contest Strategies: Understand the strategies for contest environments including time management, dealing with pressure, and effectively interpreting problem statements.
  6. Hands-On Practice: Engage in extensive practice sessions replicating real contest problems to hone your problem-solving and coding skills.
  7. Peer Collaboration: Learn to collaborate and discuss solutions with peers, fostering a healthy competitive spirit and teamwork skills.
  8. Continuous Improvement: Foster a mindset of continuous improvement and resilience, critical to excelling in the competitive programming arena.

Certification

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!

Syllabus

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:
  • Implementation
  • Strategies with data structures
  • Applications
  • Monotone Stack / Queue
Graph Intro:
  • 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
Math:
  • Primality
  • Probability
  • Modulo Arithmetic
  • Pigeonhole Principle
  • Basic Number Theory
Geometry:
  • 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
Pricing

40 CAD per hour

 

Details

Grade 11 - University Senior

43.5 Hours

Offered Year-Round

Timetable (Fall)

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
Prerequisites

Good understanding of either C++ or Python