مواضيع المسابقة للمستوى الأولي
Syllabus (الموضوعات الأساسية)
The intended topics covered are listed below.
1. Basic Programming (اساسيات البرمجة)
1.1 Basic syntax and semantics of a higher-level language
1.2 Variables, types, expressions, and assignment
1.3 Simple Input Output, Conditional and iterative control structures
1.4 Functions and parameter passing
2. Data structures (تراكيب البيانات)
2.1 Variables, arrays, matrices
2.2 Strings
2.3 Stack, Queue
2.4 Using library data structures: maps, sets, priority queues
2.5 Double ended queue
3. Elementary optimization techniques (طرق التحسين او الأمثلية الأولية)
3.1 Analytic formulas instead of computation (e.g., sum of first n positive integers)
3.2 Incremental computation
3.3 Prefix sums
3.4 Linear search cut offs
3.5 Two pointer technique
4. Sorting (خوارزميات الفرز او الترتيب)
4.1 Sorting by calling library functions
4.2 Counting sort
5. Greedy algorithms (الخوارزميات الجشعة)
5.1 Simple greedy algorithm examples
6. Recursion (الخوارزميات العودية" التكرار المستمر")
6.1 Simple examples
6.2 Backtracking
7. Divide and conquer (استراتيجية فَرِّق تَسُدْ)
7.1 Simple examples
7.2 Merge sort
8. Math basics (اساسيات في الرياضيات)
8.1 Exponent
8.2 Radicals
8.3 Factorial
8.4 Summation
9. Representations of numbers (تمثيل الأعداد)
9.1 Numeric systems, binary numbers
9.2 Scaler, Vectors
10.
Math, algebra (علم الجبر - الرياضيات)
10.1 Sieve of Eratosthenes
10.2 Greatest Common Divisor, Least Common Multiple, Euclid's algorithm
10.3 Primality testing and factoring in O(sqrt(N))
10.4 Two-Dimensional matrix and operations on it
10.5 Bitwise operation
11. Basic statistics (اساسيات الإحصاء)
11.1 Mean, median, mode
11.2 Variance
12. Geometry (الهندسة)
12.1 Representing elementary geometric objects in a plane (points, line segments, lines, circles)
12.2 Pythagorean theorem, distances
12.3 Testing for parallel or orthogonal lines, collinear points, point triplet orientations
12.4 Polygon area
12.5 Computing intersections of lines
13. Dynamic programming (البرمجة الديناميكية)
13.1 Combinatorial counting problems
13.2 Optimization problems (knapsack problem, longest increasing sequence, longest common sequence, ...)
14. Graph representations, graph search algorithms (التمثيل البياني والبحث على مثل هذا التمثيل )
14.1 Binary search on sorted array
14.2 Representing problems using graph and trees
14.3 Depth First Search
14.4 Breadth First Search
14.5 Adversarial Search
14.6 Representing graphs as adjacency matrices
14.7 Representing graphs as adjacency lists
14.8 Dijkstra's algorithm
15. Classification (التصنيف)
15.1 Linear regression
15.2 Decision trees
15.3 k-nearest-neighbors algorithm
15.4 k-means
مواضيع المسابقة للمستوى المتقدم
Syllabus (الموضوعات الأساسية)
The intended topics covered are listed below.
1. Basic Programming (اساسيات البرمجة):
1.1 Basic syntax and semantics of a higher-level language
1.2 Variables, types, expressions, and assignment
1.3 Simple Input Output, Conditional and iterative control structures
1.4 Functions and parameter passing
2. Data structures (تراكيب البيانات)
2.1 Variables, arrays, matrices
2.2 Strings
2.3 Stack, Queue
2.4 Using library data structures: maps, sets, priority queues
2.5 Double ended queue
2.6 Linked lists
2.7 Advanced use of library data structures (using custom data types as keys, binary search on sets and maps, lower and upper bounds)
2.8 Sparse tables
2.9 Segment trees
2.10 Disjoint set union
2.11 Advanced variants of segment trees (two- and three-dimensional, lazy propagation, implicit, persistent)
2.12 Lowest common ancestor
2.13 Trees
2.14 Balanced binary search trees (no matter which one: treap / splay tree / skip lists / ...)
3. Elementary optimization techniques (طرق التحسين او الأمثلية الأولية)
3.1 Analytic formulas instead of computation (e.g., sum of first n positive integers)
3.2 Incremental computation
3.3 Prefix sums
3.4 Linear search cut offs
3.5 Two pointer technique
4. Sorting (خوارزميات الفرز او الترتيب)
4.1 Sorting by calling library functions
4.2 Counting sort
5. Greedy algorithms (الخوارزميات الجشعة)
5.1 Simple greedy algorithm examples
5.2 Exchange argument
6. Recursion (الخوارزميات العودية" التكرار المستمر")
6.1 Simple examples
6.2 Backtracking
6.3 Enumeration and construction of combinatorial objects (subsets, permutations, combinations, variations, ...)
7. Divide and conquer (استراتيجية فَرِّق تَسُدْ)
7.1 Simple examples
7.2 Merge sort
8. Math basics (اساسيات في الرياضيات)
8.1 Exponent
8.2 Radicals
8.3 Factorial
8.4 Summation
9. Representations of numbers (تمثيل الأعداد)
9.1 Numeric systems, binary numbers
9.2 Bitwise operations
9.3 Floating point numbers
10. Math, algebra (علم الجبر - الرياضيات)
10.1 Sieve of Eratosthenes
10.2 Greatest Common Divisor, Least Common Multiple, Euclid's algorithm
10.3 Primality testing and factoring in O(sqrt(N))
10.4 Two-Dimensional matrix and operations on it
10.5 Fast exponentiation (by repeated squaring)
10.6 Inclusion-exclusion principle
10.7 Game theory basics
11. Basic statistics (اساسيات الإحصاء)
11.1 Mean, median, mode
11.2 Variance
11.3 Optional: covariance
12. Geometry (الهندسة)
12.1 Representing elementary geometric objects in a plane (points, line segments, lines, circles)
12.2 Pythagorean theorem, distances
12.3 Vectors, vector and scalar product
12.4 Testing for parallel or orthogonal lines, collinear points, point triplet orientations
12.5 Polygon area
12.6 Computing intersections of lines
12.7 Point in polygon test, winding number
12.8 Sweep line technique
13. Dynamic programming (البرمجة الديناميكية)
13.1 Combinatorial counting problems
13.2 Optimization problems (knapsack problem, longest increasing sequence, longest common sequence, ...)
13.3 Dynamic programming on a tree
13.4 Dynamic programming with bitmasks
14. Graph representations, graph search algorithms (التمثيل البياني، وخوارزميات البحث في التمثيل البياني)
14.1 Binary search on sorted array
14.2 Binary search "on answer"
14.3 Depth First Search
14.4 Breadth First Search
14.5 Adversarial Search
14.6 Representing graphs as adjacency matrices
14.7 Representing graphs as adjacency lists
14.8 Simple applications of search (connected components, cycle finding, single source shortest paths in unweighted graphs)
14.9 Topological sorting
14.10 Dijkstra's algorithm
14.11 Euler cycle
14.12 Maximum bipartite matching
14.13 Strongly connected components
14.14 Minimum cost spanning tree (Prim's algorithm, Kruskal's algorithm)
14.15 Doubly connected components, cut vertices, bridges
14.16 Bellman-Ford algorithm
14.17 Floyd-Warshall algorithm
15. Classification (التصنيف)
15.1 Linear regression
15.2 Decision trees
15.3 k-nearest-neighbors algorithm
15.4 k-means
16. Reinforcement Learning (التعلم المعزز)
16.1 Q-learning and the Bellman Equation
16.2 Optional: probabilities and conditional probabilities
16.3 Optional: random walks and Markov chains