Ioi Syllabus
Ioi Syllabus
This is the ocial Syllabus version for IOI 2013 in Brisbane, Australia. The Syllabus is an ocial document related to the IOI. For each IOI, an up-to-date version of the Syllabus is produced by the ISC, as described in the IOI Regulations, Statue 3.13.
The original proposal of the IOI Syllabus was co-authored by Tom Verhoe1 , Gyula Horv ath2 , Krzysztof Diks3 , and Gordon Cormack4 . Since 2007, the maintainer of the Syllabus is Michal Fori sek5 . You are welcome to send any feedback on the Syllabus to the current maintainers e-mail address ([email protected]). For people interested in contributing to the quality of the Syllabus, some additional background on the Syllabus and other miscellaneous information can be found at http://ksp.sk/~misof/ioi-syllabus/.
TU Eindhoven, The Netherlands, [email protected] University of Szeged, Hungary, [email protected] 3 Warsaw University, Poland, [email protected] 4 University of Waterloo, Canada, [email protected] 5 Comenius University, Slovakia, [email protected]
Introduction
This Syllabus has two main purposes. The rst purpose is to provide a set of guidelines that help decide whether a task is suitable for the International Olympiad in Informatics (IOI). Based on this document, the International Scientic Committee (ISC) evaluates the task proposals when selecting the competition tasks. The second and closely related purpose is to help the organizers of national olympiads prepare their students for the IOI. The Syllabus aims to achieve these goals by providing a classication of topics and concepts from mathematics and computer science. In particular, some of the easy topics are classied as included ; and on the other end, some hard topics and some unrelated topics are explicitly excluded. More precisely, this Syllabus classies each topic into one of ve categories:
Included, unlimited
Topics in this category are considered to be prerequisite knowledge. Contestants are expected to know them. These topics can appear in task descriptions without further clarication. Example: Integer in 4.1 Included, to be claried Contestants should know this topic, but when it appears in a task description, the author must always clarify it suciently. Example: Directed graph in 4.2 DS2 Included, not for task description Topics that belong to this category should not appear in tasks descriptions. However, developing solutions and understanding model solutions may require the knowledge of these topics. Example: Asymptotic analysis of upper complexity bounds in 5.2 AL1 Outside of focus As opposed to previous versions of the Syllabus, this is now the default category. Any topic that is not explicitly addressed by the Syllabus should be considered to belong to this category. Contestants are not expected to have knowledge of these topics. Most competition tasks will not be related to any topics from this category.
However, note that this is not intended to prevent the inclusion of a competition task that is related to a particular topic from this category. The ISC may wish to include such a competition task in order to broaden the scope of the IOI. If such a task is considered for the IOI, the ISC will make sure that the task can reasonably be solved without prior knowledge of the particular topic, and that the task can be stated in terms of and concepts in a precise, concise, and clear way. Examples of such tasks being used at recent IOIs include Languages (a.k.a. Wikipedia) from IOI 2010 in Canada, and Odometer (a.k.a. robot with pebbles) from IOI 2012 in Italy. Explicitly excluded Some of the harder algorithmic topics are explicitly marked as excluded. It is guaranteed that there will not be a competition task that requires the contestants to know these areas. In other words, each competition task will have a perfect solution that can be produced without the knowledge of these topics. This category mainly contains hard textbook algorithms. Still, note that the Syllabus must not be interpreted to restrict in any way the techniques that contestants are allowed to apply in solving the competition tasks. Additionally, this category is used for topics that clearly fall outside the scope of the IOI. Examples: Maximum ow algorithms in 5.2 AL3 / Calculus in 4.3 Obviously, none of the categories can ever be exhaustively enumerated. Instead, the list given in the following Sections should serve as examples that map out the boundary: anything easier or similar to Included topics is to be considered Included as well, and anything similar or harder than the Explicitly excluded topics is Excluded, too. If there is a particular topic for which you are not sure how it should be classied, we invite you to submit a clarication request to the current Syllabus maintainer. Note that issues related to the usage of suitable terminology and notations in competition tasks are beyond the scope of this document.6
See T. Verhoe: Concepts, Terminology, and Notations for IOI Competition Tasks, http://scienceolympiads.org/ioi/sc/documents/terminology.pdf
6
The rest of this document contains the classication of topics. Topics literally copied from the IEEE-CS Curriculum7 are typeset in sans serif font.
4
4.1
Mathematics
Arithmetics and Geometry
Integers, operations (incl. exponentiation), comparison Basic properties of integers (sign, parity, divisibility) Prime numbers, basic modular arithmetic addition, sub
traction, multiplication Fractions, percentages Line, line segment, angle, triangle, rectangle, square, circle Point, vector, coordinates in the plane Polygon (vertex, side/edge, simple, convex, inside, area) Euclidean distances Pythagorean theorem
Explicitly excluded : Modular division and inverse elements, complex numbers, general conics (parabolas, hyperbolas, ellipses), trigonometric functions
4.2
Explicitly excluded : Cardinality and countability (of innite sets) DS2. Basic logic
7
Propositional logic Logical connectives (incl. their basic properties) Truth tables Predicate logic Universal and existential quantication (Note: statements should avoid
N.B. This article is not concerned with notation. In past task descriptions, logic has been expressed in natural language rather than mathematical symbols, such as , , , . Out of focus : Normal forms Explicitly excluded : Validity, Limitations of predicate logic DS3. Proof techniques
Notions of implication, converse, inverse, contrapositive, negation, and contradiction Direct proofs, proofs by: counterexample, contraposition, contradiction Mathematical induction Strong induction (also known as complete induction) Recursive mathematical denitions (incl. mutually recursive deni-
ton path/cycle, handshaking lemma) Directed graphs (in-degree, out-degree, directed path/cycle, Euler/Hamilton path/cycle)
Spanning trees Traversal strategies
Decorated graphs with edge/node labels, weights, colors Multigraphs, graphs with self-loops Bipartite graphs
The IOI Syllabus Version 1.2 Out of focus : Planar graphs, hypergraphs. DS6. Discrete probability
Applications where everything is nite (and thus arguments about probability can be easily turned into combinatorial arguments) are Out of focus, everything more complicated is Explicitly excluded.
4.3
5
5.1
Computing Science
Programming Fundamentals (PF)
the specic languages available at an IOI, as announced in the Competition Rules for that IOI)
Variables, types, expressions, and assignment Simple I/O Conditional and iterative control structures Functions and parameter passing Structured decomposition
Primitive types (boolean, signed/unsigned integer, character) Arrays (incl. multidimensional arrays) Records Strings and string processing Static and stack allocation (elementary automatic memory manage-
ment)
Linked structures (linear and branching)
Out of focus : Data representation in memory, Heap allocation, Runtime storage management, Pointers and references9 , Elementary use of real numbers in numerically stable tasks. Explicitly excluded : The oating-point representation of real numbers, Precision errors when computing with oating-point numbers Regarding oating point numbers, there are well-known reasons why they should be, in general, avoided at the IOI.10 However, the currently used interface removes some of those issues. In particular, it should now be safe to use oating point numbers in some types of tasks e.g., to compute some Euclidean distances and return the smallest one. PF4. Recursion
The concept of recursion Recursive mathematical functions Simple recursive procedures (incl. mutual recursion) Divide-and-conquer strategies Implementation of recursion Recursive backtracking
PF5. Event-driven programming Some competition tasks may involve a dialog with a reactive environment. Implementing such an interaction with the provided environment is . Everything not directly related to the implementation of reactive tasks is Out of focus
The inessential advantage of scalable memory eciency is outweighed by the increased complexity in reasoning. Static memory implementations should suce to solve IOI tasks. 10 See G. Horv ath and T. Verhoe: Numerical Diculties in Pre-University Education and Competitions, Informatics in Education 2:2138, 2003
9
5.2
AL1. Basic algorithmic analysis Algorithm specication, precondition, postcondition, correctness, invariants Asymptotic analysis of upper complexity bounds (informally if possible)
Big O notation Standard complexity classes (constant, logarithmic, linear, O (n log n),
Out of focus : Identifying dierences among best, average, and worst case behaviors, Little o, Omega, and Theta notation, Empirical measurements of
performance
Explicitly excluded : Asymptotic analysis of average complexity bounds, Using recurrence relations to analyze recursive algorithms AL2. Algorithmic strategies Simple loop design strategies Brute-force algorithms (exhaustive search)
Greedy algorithms Divide-and-conquer Backtracking (recursive and non-recursive), Branch-and-bound Pattern matching and string/text algorithms11 Dynamic programming12
Only basic algorithms are : for instance, the Knuth-Morris-Pratt algorithm should already be considered Out of focus. 12 The IEEE-CS Curriculum puts this under AL8, but we believe it belongs here.
11
Out of focus : Heuristics, Discrete approximation algorithms, Randomized algorithms Explicitly excluded : Numerical approximation algorithms AL3a. Algorithms Simple number theory algorithms involving integers: radix con version, Euclids algorithm, primality test by O( n) trial division, Sieve of Eratosthenes, factorization (by trial division or a sieve), ecient exponentiation Simple operations on arbitrary precision integers (addition, subtraction, simple multiplication)13 Simple array manipulation (lling, shifting, rotating, reversal, resizing, minimum/maximum, prex sums, histogram, bucket sort) sequential processing/search and binary search
Quadratic sorting algorithms (selection, insertion) Partitioning an array according to a pivot, Quicksort, Quickselect
(to nd the k -th smallest element) O(n log n) worst-case sorting algorithms (heap sort, merge sort) Traversals of ordered trees (pre-, in-, and post-order) Depth- and breadth-rst traversals of graphs, determining connected components of an undirected graph
Shortest-path algorithms (Dijkstra, Bellman-Ford, Floyd-Warshall) Transitive closure (Floyds algorithm) Minimum spanning tree (Jarn k-Prim and Kruskal algorithms) Topological sort
Algorithms to determine the (existence of an) Euler path/cycle Explicitly excluded : Maximum ow algorithms, Bipartite matching algorithms, Strongly connected components in directed graphs AL3b. Data structures Binary heap data structure Binary search trees (unbalanced) Interaction with abstract data types: priority queues; ordered and unordered sets and maps
13 The necessity to implement these operations should be obvious from the problem statement.
The IOI Syllabus Version 1.2 Interval trees14 , 15 and Fenwick trees16
Representations of graphs (adjacency lists, adjacency matrix)
10
Representation of disjoint sets: the Union-Find data structure Explicitly excluded : Complex heap variants such as binomial and Fibonacci heaps, Implementation of any general balanced tree (e.g., AVL, treaps, splay trees), Using and implementing hash tables (incl. strategies to resolve collisions) AL4. Distributed algorithms Out of focus AL5. Basic computability All topics related to computability are Explicitly excluded. This includes the following: Tractable and intractable problems, Uncomputable functions, The halting problem, Implications of uncomputability However, see AL7 for basic computational models. AL6. The complexity classes P and NP Topics related to non-determinism, proofs of NP-hardness (reductions), and everything related is Explicitly excluded. Note that this section only covers the results usually contained in undergraduate and graduate courses on formal languages and computational complexity. The classication of these topics as Explicitly excluded does not mean that an NP-hard problem cannot appear at an IOI. AL7. Automata and grammars Understanding a simple grammar in Backus-Naur form
This is the data structure that contains a complete binary tree built on top of an array; supporting queries and updates on individual elements and intervals in logarithmic time. Sometimes this data structure is called a segment tree, a range tree, or a tournament tree. 15 Note that in computational geometry there are dierent data structures with similar names. Those are not covered by this item. 16 First introduced in P. Fenwick: A New Data Structure for Cumulative Frequency Tables, Software Practice And Experience 24(3):327336, 1994. Also known as binary indexed trees. A 2D version of a Fenwick tree was used in the IOI 2001 task Mobiles. This can be seen as a more space-ecient version of an interval tree.
14
11
Out of focus : Finite-state machines, Context-free grammars and related rewriting systems, Regular expressions Explicitly excluded : All textbook proofs and constructions e.g., the product construction of an automaton for the intersection of languages, the conversion of a NFA to a DFA, DFA minimization, grammar normal forms. AL8. Advanced algorithmic analysis Basics of Combinatorial game theory, winning and losing positions, minimax algorithm for optimal game playing Out of focus : Online algorithms, Combinatorial optimization Randomized algorithms, Explicitly excluded : Amortized analysis, Alpha-beta pruning, SpragueGrundy theory AL9. Cryptographic algorithms Out of focus AL10. Geometric algorithms (in two dimensions, preferably with integer coordinates) Representing points, vectors, lines, line segments. Checking for colinear points, parallel/orthogonal vectors, clockwise turns. Intersection of two lines. Polygons: computing area and center of mass. Checking whether a (general/convex) polygon contains a point. Coordinates compression.
Convex hull nding algorithms
5.3
Except for GV (specied below), all areas are Explicitly excluded. AR. Architecture and Organization
The IOI Syllabus Version 1.2 OS. Operating Systems NC. Net-Centric Computing (a.k.a. cloud computing) PL. Programming Languages HC. Human-Computer Interaction GV. Graphics and Visual Computing
12
Basic aspects of processing graphical data are Out of focus, everything else (including the use of graphics libraries such as OpenGL) is Explicitly excluded. IS. Intelligent Systems IM. Information Management SP. Social and Professional Issues CN. Computational Science Notes: AR is about digital systems, assembly language, instruction pipelining, cache memories, etc. OS is about the design of operating systems, not their usage. PL is about the analysis and design of programming languages, not their usage. HC is about the design of user interfaces. Usage of the operating system, GUIs and programming languages is covered in 7 and 5.1.
In the IOI competition, the application of software engineering concerns the use of light-weight techniques for small, one-o, single-developer projects under time pressure. All included topics are . SE1. Software design
Fundamental design concepts and principles Design patterns
13
In particular, contestants may be expected to Transform an abstract algorithm into a concrete, ecient program expressed in one of the allowed programming languages, possibly using standard or competitionspecic libraries. Make their programs read data from and write data to text les according to a prescribed simple format (See also SE2 immediately below) Explicitly excluded : Software architecture, Design for reuse, Object-Oriented analysis and design, Component-level design SE2. Using APIs
API (Application Programming Interface) programming
In particular, contestants may be expected to Use competition-specic libraries according to the provided specication. Explicitly excluded : Programming by example, Debugging in the API environment, Class browsers and related tools, Introduction to component-based computing SE3. Software tools and environments
Programming environments, incl. IDE (Integrated Development En-
vironment) In particular, contestants may be expected to Write and edit program texts using one of the provided program editors. Compile and execute their own programs. Debug their own programs. Explicitly excluded : Testing tools, Conguration management tools Requirements analysis and design modeling tools, Tool integration mechanisms
14
In particular, contestants may be expected to Understand the various phases in the solution development process and select appropriate approaches. Explicitly excluded : Process assessment models, Software process metrics SE5. Software requirements and specication
Functional and nonfunctional requirements Basic concepts of formal specication techniques
In particular, contestants may be expected to Transform a precise natural-language description (with or without mathematical formalism) into a problem in terms of a computational model, including an understanding of the eciency requirements. Explicitly excluded : Prototyping, Requirements elicitation, Requirements analysis modeling techniques
In particular, contestants may be expected to Apply techniques that maximize the the opportunity to detect common errors (e.g. through well-structured code, code review, built-in tests, test execution). Test (parts of) their own programs. Explicitly excluded : Validation planning, Object-oriented testing
15
Explicitly excluded : Software maintenance, Characteristics of maintainable software, Re-engineering, Legacy systems, Software reuse SE8. Software project management
Project scheduling (especially time management) Risk analysis Software conguration management
In particular, contestants may be expected to Manage time spent on various activities. Weigh risks when choosing between alternative approaches. Keep track of various versions and their status while developing solutions. Explicitly excluded : Software quality assurance, Team management, Software measurement and estimation techniques, Project management tools SE9. Component-based computing Explicitly excluded SE10. Formal methods
Formal methods concepts (notion of correctness proof, invariant) Pre and post assertions
In particular, contestants may be expected to Reason about the correctness and eciency of algorithms and programs. Explicitly excluded : Formal verication, Formal specication languages, Executable and non-executable specications SE11. Software reliability Explicitly excluded SE12. Specialized systems development Explicitly excluded
16
Computer Literacy
.
Contestants should know and understand the basic structure and operation of a computer (CPU, memory, I/O). They are expected to be able to use a standard computer with graphical user interface, its operating system with supporting applications, and the provided program development tools for the purpose of solving the competition tasks. In particular, some skill in le management is helpful (creating folders, copying and moving les). Details of these facilities will be stated in the Competition Rules of the particular IOI. Typically, some services are available through a standard web browser. Possibly, some competition-specic tools are made available, with separate documentation. It is often the case that a number of equivalent tools are made available. The contestants are not expected to know all the features of all these tools. They can make their own choice based on what they nd most appropriate. Out of focus : Calculator, Word-processors, Spreadsheet applications, Database management systems, E-mail clients, Graphics tools (drawing, painting)