Session done for University of Moratuwa undergrads to share some information about preparation for IEEEXtreme and MoraXtreme (An internal competitive programming contest)
2. IEEEXtreme in a nutshell
● A competitive programming contest
● You are given a set of problems, you need to write code to solve those!
● Your code should execute within a given timeout in order to score the points
● Free to use any programming language you desire (python, c++, java, c# etc.)
● No advantage of using any particular language
24 Hours of intense coding!
3. Problems
● Problems are usually described as a story
● Need to abstract out details from the problem definition and find out what
exactly (in terms of computation) is required
● After understanding the requirement, need to come up with algorithms to
solve
● Finally implement the solution in a programming language you like
4.
5.
6.
7. Problems
● Problems are labeled with a difficulty;
○ Easy, Moderate, Difficult, Advanced, and Xtreme
● There are multiple test cases for each question
8. Scoring
● There are multiple test cases associated with each problem
● You will get a score based on how many test cases were correct
○ Not all test cases are equally weighted
● Overall score depends on the problem difficulty
● Harder problems will give you more marks
● Scoring is dynamic - difficulty of a question will be determined by the success
rate of a question
9. Some of the popular languages with their versions and
runtime env.
Numpy is available for python 2 and 3
12. Why
● Knowledge on data structures and algorithms is a must!
● Top international/ Sri Lankan companies select candidates with strong
algorithmic programming capabilities
● Algorithms are used in diverse set of fields AI, Machine Learning, Distributed
Systems, Programing Languages, you name it!
13.
14. But we learn data structures and algorithms in
classes...
● Yes! Modules teach you the basics.
● When you participate more and more on these types of contests, your
analytical thinking will improve
● Good analytical thinking usually produces good and efficient code!
16. Preparation
● Secret formula == “practice”
● You need to attempt as many problems as possible
● Start with easier stuff (Try questions with easy difficulty)
● It will be difficult at first, but you’ll get the grip
Need to
know the
algorithms
When to
use?
How to
implement
efficiently?
17. Areas to look at
● Graph Algorithms
○ BFS, DFS, Shortest Path (Dijkstra, Floyd Warshall)
● Dynamic Programming
○ Longest common subsequence, knapsack problem etc.
● Mathematical Algorithms
○ Prime checking algorithms - Miller rabin, prime sieves
● Game theory
○ Min-max, Nim game
Most of all, strong analytical thinking!
18. How to practice
● Go to Hackerrank (or any other similar site)
● Select some topic you are familiar with
● Try to solve them
● Read editorials
● Learn more algorithms (topics)
19.
20. TL;DR
● IEEEXtreme is a great boost to your CV
● Preparing for such competitions will improve your knowledge on algorithms
and improve your analytical thinking
● It will improve the chances of you getting into a top job
● Practice = attempt more and more problems + read editorials