You don’t need fancy software or crazy math skills — just personal drive and a bit of guidance!
Competitive programming is an activity where participants solve algorithmic problems under time pressure.
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:
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++.
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.
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.
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.
MIT 6.006: Introduction to Algorithms
MIT 6.042J: Mathematics for Computer Science
Harvard CS 224: Advanced Algorithms
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.