Using This Guide
Welcome to the CCC Guide — a free, open-source resource for the Canadian Computing Competition, covering everything from your first Junior contest to the path toward CCO.
Problems are labelled by level and question number: J1–J5 for Junior and S1–S5 for Senior.
Pick your starting point
CCC Essentials
Read this if you're unfamiliar with the CCC — what the contest is, how judging works, and how to think about it.
Junior
Read this if you can write basic code and are aiming for J1–J5 — the intended path for most first-time competitors.
Senior Core
Read this if you're comfortable with the Junior material — geometry, sorting, searching, and the S1–S3 foundation.
Senior Advanced
Read this if you're aiming for S4–S5 — graph algorithms, dynamic programming, and data structures.
Expected knowledge
The CCC Guide does not provide general programming language tutorials. If you are unfamiliar with the language you wish to use, we recommend learning it first through the following resources.
W3Schools Online Web Tutorials
A modern online learning platform offering beginner-friendly tutorials, interactive examples, and references for a wide range of programming languages and web technologies.
CEMC Courseware
Official introductory Python and computational thinking courses from the CEMC at the University of Waterloo.
LearnCpp
A free, comprehensive C++ tutorial covering the language from the basics to advanced topics.
MOOC.fi Java Programming
A free introductory Java course from the University of Helsinki, covering the language from the basics to object-oriented programming.
In Junior, the programming language knowledge required for each topic will be listed in the prerequisites. However, in Senior Core and beyond, this guide assumes that you are already comfortable using your chosen programming language.
Practice and further resources
You can submit your solutions to DMOJ and have them judged against the full test data, the same way the CCC grades them. Every problem covered in this guide links to its original statement on the CEMC site and to its DMOJ page. This project was also inspired by the USACO Guide, which is a good place to continue once you move beyond the CCC, especially for advanced topics in C++.
DMOJ
An open-source online judge that hosts past CCC and CCO problems. Use it to test your solutions against the full set of test cases and track your progress.
USACO Guide
A free, community-written curriculum for competitive programming, and the main inspiration for this project. Read this once you move past the CCC into advanced topics, particularly in C++.
Contribute
This guide is open source and improved through community contributions: fixing explanations, adding new content, and improving the curriculum. The source for every page is available at github.com/Moreallure/ccc-guide — pull requests are welcome.