New Member Guide

What Is Competitive Programming?


Competitive programming is an activity where participants compete to solve problems using algorithmic techniques within a given time limit.

Getting Started

Choosing the Right Editor

Competitive programming is about quickly programming an efficient, correct solution to a problem. Naturally, in your computer science career, you'll need to choose a text editor or integrated development enviroment to work on.

While there are a lot of text editors available for use, there are some that are highly recommended by ACM @ UCI users:

Visual Studio Code logo
Vim logo
Neovim logo
Emacs logo
Reading Input

Most, if not all problems, require reading in some form of input and outputting an answer based on that input. Thus, being able to quickly and efficiently read input is critical to succeeding in competitive programming.

Most programming languages have functions that read in input, including Python and C++.

1 2 3 4 5 6 7 8 9 10 import sys input = sys.stdin.readline # Read a space-separated sequence of integers into input array = list(map(int, input().split())) # Read in a string as input, making sure to clear any surrounding whitespace string = input().strip()

That's it! While this may seem easy, many more coding paradigms and methods are often tied together in order for a problem to be solved. With enough practice and time, you can intuitively determine which of these methods to use when solving a problem.

Resources

Books

If you're looking for a place to start or are looking to enhance your knowledge of data structures and algorithms, there's nothing better than reading through a guide that contains all the information you need!

Some universities also publish free PDFs containing very useful information on data structures and algorithms.
YouTube

If watching videos helps you learn better, there are a lot of competitive programming resources available on YouTube as well!

If you prefer a more academic path, many universities post recordings of past lectures on data structures and algorithms.

Websites

The best way to get better at competitive programming is to practice! ACM @ UCI often uses these websites for meetings, presentations, and contests.

There are also other websites where you can focus solely on improving your knowledge of competitive programming.

Lastly, and perhaps most importantly, is to have a good understanding of the language you are programming in. Python and C++ have extensive documentation that you should definitely look through!