About

The Calgary Collegiate Programming Contest (CCPC) provides college students in Calgary with the opportunity to excel in an ACM ICPC-style programming competition. Students test their aptitude and knowledge against a set of programming puzzles requiring problem-solving, programming, math, and teamwork skills. Teams are ranked according to the number of problems solved within four hours. The CCPC is sponsored by Coverity, and provides a platform for the next generation of computing professionals to pursue excellence.

Prizes
First Place $1800
Second Place $900
Third Place $450
Results

First place: Team Jogging

Holding cheque: Haoming Fu and Linquan Zhang. On Right: Tyler Sims, R&D Director at Coverity.

Second place: Team Free Coffee!

Holding cheque: Wen Li and Nathan Harms. On Right: Tyler Sims, R&D Director at Coverity.

Third place: Team Permutohedron

Holding cheque: Arash Afshar, Maryam Helmi and Mohsen Mollanoori. On Right: Tyler Sims, R&D Director at Coverity.


UCalgary 2014 CCPC Article

Official scoreboard
Guest Scoreboard

Files

Problem set by Kent Williams-King, Peter Høyer, and Hichem Zakaria Aichour.

When & Where

  • Saturday, March 8th, 2014 from 10:00 - 17:30 (coffee & catered lunch provided)
  • On campus at the University of Calgary, in the MS and ICT buildings (campus map, Math Sciences map)
  • Suggested parking: Math Science parking lot, 612 Campus Pl NW ($6/day)
  • Numerous options for using public transit to get to campus

Schedule & Info for Day of Contest Contest links: Language reference links: 10:30-11:40 in ICT 121:
  • Competitor check-in: please bring your student ID
  • Coffee served
  • Presentation by Coverity
  • Reading of rules and instructions
11:45-12:55 in Comp Sci Labs (first floor of MS):
  • Teams assigned a computer and login information
  • Practice contest to familiarize competitors with contest system
1:00-5:00 in Comp Sci Labs (first floor of MS):
  • Official contest, four hours in duration
  • Scoreboard will be frozen for final hour so winners are not known until later presentation
5:00-6:00 in ICT 121:
  • Presentation of problem statistics (number of attempts, successes, etc.)
  • Presentation by Coverity
  • Announcement of winners and presentation of prizes
  • Mingling with Coverity employees; pizza served
What to bring:
  • Any paper notes, code or textbooks you believe might be useful
  • Scrap paper and pencils/pens
  • Student ID
Resources provided for contest:
  • An envelope containing printouts of the problem set and computer/login info
  • Access to exactly one computer per team, running Linux
  • Ability to print your code to debug on paper
  • Text editors: at least gedit, Eclipse, Vim, Emacs, Nano
  • Compilers/interpreters for C, C++, Java, Python, and Haskell
  • Internet access restricted to the contest website and official language documentation
  • Volunteers for assistance with very simple programming issues (syntax errors, etc.)
  • Food and drink
Registration
  • Register on EventBrite
  • Registration closes on Wednesday, March 5th, 2014 at 11:59pm
  • Eligible contestants must be enrolled in a post-secondary institution in Calgary, Alberta
  • Both graduate and undergraduate students are eligible for prizes
  • Participants may organize into teams of 1-3 students
  • If you are ineligible you may still participate for fun or practice; contact us to register as a guest &emdash; we encourage high school students to compete!
  • Contact us if you have any questions or wish to modify your registration

Contest Format

Teams of 1-3 students will compete to solve a set of 5-10 programming puzzles over a four hour period. The set will have a good mix of problems varying both in difficulty and subject domain. Most of the problems can be solved through cleverness rather than specialized knowledge, although the latter is an asset. Common subjects for problems include combinatorics, graph theory, number theory, and geometry.

For each problem, your program will be given input describing a test case. It must then provide appropriate output giving the answer to whatever problem was posed. Once you have written a program you believe solves the problem, you will submit the source code through a web interface. Your code will be subject to a large battery of tests. If your code returns correct output on every test case and runs within time and memory limits, the solution is accepted. Otherwise, it will be rejected. You will be told how your program failed, but will not be given details of the failed test case.

Official Rules:

  • Accepted programming languages include C, C++, Java, Python and Haskell
  • Each team has access to exactly one computer, to be used for writing, testing, and submitting code solutions
  • Code solutions can be printed to debug them on paper and free up the computer
  • Internet access is restricted to standard library and language documentation, as well as the contest website
  • Any standard system software may be used during the contest
  • Teams have unlimited access to any written material they provide, such as textbooks, notes, and printed example code
  • Use of electronic devices other than the computer is strictly prohibited
  • Teams are ranked according to which has solved the most problems, with ties broken by time taken to solve

Preparation & Strategy If you want a leg up on the competition, there are some prep opportunities available:
  • The Problem Solving Club meets every Wednesday from 18:00 - 21:00 in MS 160 for coaching & practice
  • UVa Online Judge contains many programming puzzles for self-directed practice
  • Follow the PSC on twitter to ask questions or participate in discussion under the #ccpc hashtag
  • Register for the facebook event and participate in the discussion there
  • The first hour of the event (from 11:00 - 12:00) will include a short practice competition
Some time-tested strategies:
  • Read the problems, identify the easy ones, and solve them first
  • If you're having trouble identifying easy problems, look at the scoreboard to see what others are solving
  • Computer time is very valuable, so sketch out your program on paper before coding it (unless it's trivially simple)
  • Working together on a problem is usually a bad idea and just leads to confusion; assign problems, work in parallel
  • Debugging a program on paper is more effective than sticking print statements everywhere, 99% of the time
  • Come up with your own test cases for your program, especially edge cases
  • Have fun!
About Coverity

Coverity, the development testing leader, is the trusted standard for companies that need to protect their brands and bottom lines from software failures. More than 1,100 Coverity customers use Coverity's development testing suite of products to automatically test source code for software defects that could lead to product crashes, unexpected behavior, security breaches, or catastrophic failure. Our software has been used by some very cool projects, such as NASA's Mars Rover mission-critical software and CERN's Large Hadron Collider software. Coverity is a privately held company headquartered in San Francisco, with offices in Boston, Calgary, London and Tokyo, and more than 275 employees worldwide.

About geekStarter

geekStarter provides support for students in Alberta participating in academic competitions, including the ACM ICPC. The support includes workshops, funding for events, travel expenses, and more.

The Problem-Solving Club is a geekStarter partner. geekStarter is a program of Alberta Innovates Technology Futures.

Links

Coverity website | twitter | facebook

PSC website | twitter | mailing list

CSUS website | facebook | mailing list

geekStarter website