ICPC
Programming Competition for Universities ICPC
The international programming contest for university students is considered the first programming competition that is organized by universities worldwide.
For more than four decades, ICPC has grown to become a globally competitive, developing and educational program in the world of games that has raised the expectations and performance of the competitors in this competition in computer science and engineering.
The ICPC Foundation, hosted by Baylor University, has been organizing this competition since 1977 and with the sponsorship of the American ACM and Pi Epsilon.
The stages of the programming contest
The competition is held annually according to several levels of competition:
- Level 1 - National Competition: To begin with each university starts its own local competition. The winning teams from each university qualify for the national competition, where contest is confined to the universities of the same country. At the end of this level, several teams are nominated to represent their university at the regional level.
- Second level - the regional competition: where the world is divided into several regions and the competition is limited to the university teams of the same region, which have been nominated by the countries of this region.
- Level 3 - Global Competition: This is the final stage of the contest where competition is held among the teams that qualified from the regional competitions
The importance of participating in the competition
- The competition is an opportunity to test the abilities of the contestant on:
- Working under pressure (short time, graded problems, limited possibilities).
- Developing the ability to coordinate effort with other team members.
- Developing flexible thinking and high ability of logical analysis.
- It also offers the following features:
- Obtaining internationally accredited certificates.
- Providing meetings for students at the university level with the most important companies in the information and the telecommunications sectors, allowing them to communicate with the labor market and to know its requirements and needs.
- Raising graduates' level in general and upgrading the knowledge of software and technology of the competitors cumulatively and within the universities year after year.
- The programming competition is one of the most important international competitions in the field of informatics and an introduction to the universal recognition of the certificates of the universities in which they participate.
Participating in the programming competition
Students are entitled to participate in the programming competition for university colleges in case of:
- The student attains the following general conditions:
- To be a university student in one of the Syrian universities.
- That they have not participated in the World Final more than twice.
- Have not participated in the regional final more than five times.
B. The student attains one of the following conditions, in addition to the following general conditions:
- The student has started his / her university studies four years prior to the current year of the competition which they participates in.
- The student should be under 24 years of age.
Competition Rules
- The team consists of three students.
- During the competition, the participating teams will be given five hours to solve a range of problems ranging from 8 to 12 problem. The teams deliver the solutions in the form of a written executable program in one of the following programming languages:
- C / C ++
- Java
- Python
- Each team is allocated one computer only, and the participating teams are asked to solve as many problems as possible, and hence the teamwork and coordination between the team members should be used to invest the time of the competition in a most optimized manner.
- When the team can solve the problem, the solution is sent to a server that has an automated program. The program evaluates the sent solution under the supervision of the jury. When the solution is satisfying within the specified period of time, the result of the problem is accepted.
- The team is ranked first if it can solve the largest number of problems in the shortest possible time and the minimum number of wrong attempts, and according to this strategy the competing teams are arranged. 21 minutes are added to each wrong attempt and this is added to the total time required to deliver solutions in the competition.
- The computers of the teams are equipped on two levels: the hardware level and the software level
- hardware level:
Processor: Intel i7-3720QM (3.6Ghz)
Memory: 16 GB
Flat screen: 23in wide, 1920x1080 Native Resolution
- Software Level:
Operating System: Ubuntu 12.04.1 LTS Linux
Desktop: GNOME
Text editor: vi / vim, gvim, emacs, gedit
Integrated Development Environment (IDE): Eclipse, Netbeans
Compilers: JDK 1.7, C / C ++ GCC 4.6.3
Participation of the Syrian Virtual University in the programming competition
Participation:
- 2015- The participation of the Syrian Virtual University teams in the competition began with one team.
- 2016- One team from the Syrian Virtual University qualified to participate in the regional competition.
- 2017- Two teams from the Syrian Virtual University qualified to participate in the regional competition.
- 2018- Three teams from the Syrian Virtual University qualified to participate in the regional competition.
- The Syrian Virtual University won the competition cup on the Arab World and West Africa level. This is considered Syria's first win since its participation in this competition.
- Syrian Virtual University team qualified to participate in the international competition.
Hosting, support and organization:
Since 2017, the Syrian Virtual University has been hosting the national programming competition through its contribution to supporting local competitions at the level of Syrian public and private universities, hosting, supporting and organizing the national university competition at the Syrian level; and in supporting and organizing the Syrian university teams' participation in regional and international levels.
The Syrian Virtual University Grants for the students of the competition
In contribution from the Syrian Virtual University to building Syria with knowledge, thinking, culture and work; and in line with the university's academic and professional mission, the Syrian Virtual University announced special grants for students of programming competitions in its various academic programs within the bachelor and master's degrees under its initiative "Syrian Virtual- Commitment". The Grants include:
- The Syrian Virtual University offers any student who qualifies for the regional finals of the programming competition for university faculties (or any similar international scientific competition in which the university participates and is approved by the university council) a full scholarship on all tuition fees from the semester following their qualification until the student graduates from university.
- The Syrian Virtual University offers any Syrian student who qualifies for the finals of the competition for the university colleges, the World Robot Contest, or one of the Syrian Scientific Olympiad competitions (or any other similar scientific competition approved by the University Council), a full scholarship in any of its programs.
The training plan
The trainee is enrolled for a level-placement exam, and based on the outcome of the exam the students are sorted to the following two levels:
Level 1 - Phase I |
||
# | Session Content | Sessions Count |
1 | Introduction | 1 |
2 | C++ Programming Language | 6 |
3 | ||
4 | ||
5 | ||
6 | ||
7 | ||
8 | Complexity | 2 |
9 | ||
Standard Template Library | ||
10 | Vector, String, List | 2 |
11 | ||
12 | Stack, Queue, Deque, Priority queue | 2 |
13 | ||
14 | Set, Multiset, Map | 3 |
15 | ||
16 | ||
17 | Sorting | 2 |
18 | ||
19 | Greedy | 2 |
20 | ||
21 | Binary search (basics) | 2 |
22 | ||
23 | Recursion | 2 |
24 | ||
25 | Complete Search | 2 |
26 | ||
Math and Number Theory | ||
27 | Primes, Divisors, Factorization, GCD, LCM | 2 |
28 | Sieve of Eratosthenes | |
Game theory | ||
29 | Game states - Nim game | 2 |
30 |
Level 1 – Phase II |
||
# | Session Content | Sessions Count |
Dynamic programming | ||
1 | Fibonacci, Paths in a grid | 1 |
2 | Coin change | 1 |
3 | Knapsack | 2 |
4 | ||
5 | Edit Distance - Longest Common Subsequence | 1 |
6 | Longest Increasing Subsequence | 1 |
Graphs | ||
7 | Graph Representation | 1 |
8 | Depth First Search | 1 |
9 | Breadth First Search, Multiple Source BFS | 1 |
10 | Finding Connected Components, Classification of edges | 1 |
11 | Checking a graph for acyclicity, Topological Sorting | 1 |
12 | Other applications of DFS and BFS | 2 |
13 | ||
14 | Bipartite Graph Check, Eulerian Path | 1 |
15 | Tree algorithms | 2 |
16 | ||
Data Structure | ||
17 | Ordered set, Static array queries | 1 |
18 | Disjoint Set Union | 2 |
19 | ||
Amortized analysis | ||
20 | Two pointers, Sliding window | 2 |
21 | ||
Search | ||
22 | Binary search (Continuous) | 1 |
23 | Binary search (Discrete) | 2 |
24 | ||
Math and Number Theory | ||
25 | Modular arithmetic, Binary exponentiation | 1 |
26 | Extended Euclidean Algorithm, Linear Diophantine Equations | 1 |
27 | Euler's totient, Modular inverse | 2 |
28 | ||
29 | Meet in the middle | 2 |
30 |
Level 2 - Phase I |
||
# | Session Content | Sessions Count |
Graphs | ||
1 | Dijkstra, 0-1 Breadth First Search | 2 |
2 | ||
3 | Bellman-Ford | 1 |
4 | Floyd-Warshall, Finding a Negative Cycle | 1 |
5 | Minimum Spanning Tree | 2 |
6 | ||
String processing | ||
7 | String Hashing | 2 |
8 | ||
9 | Trie (Keyword Tree) | 2 |
10 | ||
Data Structures | ||
11 | Fenwick (Binary Indexed) Tree | 2 |
12 | ||
13 | Sparse table | 1 |
14 | Segment Tree | 3 |
15 | ||
16 | ||
17 | Trie (Keyword Tree) | 1 |
Search | ||
18 | Binary Search (Advanced) | 2 |
19 | ||
20 | Ternary Search | 1 |
Math, Number Theory | ||
21 | Matrix Exponentiation | 2 |
22 | ||
23 | Combinatorics | 2 |
24 | ||
25 | Probabilities | 1 |
26 | Expected Value | 2 |
27 | ||
Geometry | ||
28 | Complex numbers, Point representation | 1 |
29 | Elementary operations, Transformations | 1 |
30 | Products and angles | 1 |
31 | Lines, Segments | 2 |
32 | ||
33 | Polygons | 1 |
34 | Circles | 2 |
35 |
Level 2 - Phase II |
||
# | Session Content | Sessions Count |
Dynamic programming | ||
1 | Chain Matrix Multiplication | 2 |
2 | ||
3 | DP + Bitmask | 2 |
4 | ||
5 | Digit DP | 2 |
6 | ||
Graphs | ||
7 | Dijkstra 2D | 1 |
8 | Lowest Common Ancestor | 2 |
9 | ||
10 | Finding Bridges | 1 |
11 | Finding articulation points | 1 |
12 | Strongly Connected Components | 2 |
13 | ||
14 | Maximum flow | 2 |
15 | ||
16 | Maximum Bipartite Matching | 2 |
17 | ||
Data Structures | ||
18 | Segment Tree (advanced) | 2 |
19 | ||
20 | Lazy Propagation | 2 |
21 | ||
22 | Sqrt Decomposition | 2 |
23 | ||
24 | MO Algorithm | 2 |
25 | ||
Game theory | ||
26 | Sprague–Grundy theorem | 1 |
Geometry | ||
27 | Sweep line | 2 |
28 | ||
29 | Convex hull | |
String processing | ||
30 | Knuth-Morris-Pratt’s (KMP) Algorithm | 2 |
31 | ||
32 | Suffix array | 2 |
33 | ||
34 | The Inclusion-Exclusion Principle | 2 |
35 |