IOI Syllabus 2023 vs CS Curriculum (9-12) 2009
IOI Syllabus 2023 CS Curriculum (9-12) 2009
(Covered topics)
6.1 Programming Fundamentals (PF)
PF1. Fundamental programming constructs(for abstract machines) All topics are included except last
✓ Basic syntax and semantics of a higher-level language (at least one
one of the specific languages available at an IOI, as announced in
(✓ Structured decomposition)
the Competition Rules for that IOI)
✓ Variables, types, expressions, and assignment
✓ Simple I/O C and C++ programming
✓ Conditional and iterative control structures languages are used, which are
✓ Functions and parameter passing also recommended for IOI.
✓ Structured decomposition
PF2. Algorithms and problem-solving
✓ Problem-solving strategies (understand–plan–do–check, separation of
concerns, generalization, specialization, case distinction, working
Basic level topics are included,
backwards, etc.) covers about 20% weightage
✓ The role of algorithms in the problem-solving process of IOI syllabus.
✓ Implementation strategies for algorithms (also see 7 SE1)
✓ Debugging strategies (also see 7 SE3)
✓ The concept and properties of algorithms (correctness, efficiency)
PF3. Fundamental data structures
✓ Primitive types (boolean, signed/unsigned integer, charac ter)
✓ Arrays (incl. multicolumn dimensional arrays)
Only Arrays and basic string
✓ Strings and string processing processing topics are
✓ Static and stack allocation (elementary automatic memory included, which covers about
management) 10% syllabus of IOI of this
✓ Linked structures
✓ Implementation strategies for graphs and trees section.
✓ Strategies for choosing the right data structure
✓ Elementary use of real numbers in numerically stable tasks
✓ The floating-point representation of real numbers, the existence of
precision issues.11
✓ Pointers and references
Data representation in memory,Heap allocation,
Runtime storage management,
Using fractions to perform exact calculations.
✗ Non-trivial calculations on floating point numbers, manipulating
precision errors
Regarding floating point numbers, there are well-known reasonswhy
they should be, in general, avoided at the IOI.12 However, the currently
used interface removes some of those issues. In particular, it should
now be safe to use floating point numbers insome types of tasks – e.g.,
to compute some Euclidean distances and return the smallest one.
PF4. Recursion
✓ The concept of recursion
✓ Recursive mathematical functions 1%
✓ 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 Not Included
environment is ✓ .
Everything not directly related to the implementation of reactivetasks is
6.1 Algorithms and Complexity (AL)
AL1. Basic algorithmic analysis
Basic level topics related to
✓ Algorithm specification, precondition, post condition, correctness, Algorithms (Algorithmic
invariants
analysis) are included, which
✓ Asymptotic analysis of upper complexity bounds (informally if
possible)
covers about 5% syllabus of
✓ Big O notation IOI of this section.
✓ Standard complexity classes: constant, logarithmic, linear, O(n log
n), quadratic, cubic, exponential, etc.
✓ Time and space tradeoffs in algorithms
✓ Empirical performance measurements.
Identifying differences among best, average, and worst casebehaviors,
Little o, Omega, and Theta notation,
Tuning parameters to reduce running time, memory consumption or
other measures of performance
✗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
✓ Dynamic programming
Heuristics 2%
Finding good features for machine
learning tasks14Discrete
approximation algorithms
Randomized algorithms.
✗Clustering algorithms (e.g. k-means, k-nearest neighbor)
✗Minimizing multi-variate functions using numerical approaches.
AL3a. Algorithms
✓ Simple algorithms involving integers: radix conversion, Euclid’s
algorithm, primality test by O(√n) trial division,
Sieve of Eratosthenes, factorization (by trial division or a sieve), efficient
exponentiation
✓ Simple operations on arbitrary precision integers (addition,
subtraction, simple multiplication)15
✓ Simple array manipulation (filling, shifting, rotating, reversal, resizing,
minimum/maximum, prefix sums, histogram, bucket sort)
✓ Simple string algorithms (e.g., naive substring search)
✓ sequential processing/search and binary search
✓ Quicksort and Quickselect to find the k-th smallest element. Simple array manipulation is
✓ O(n log n) worst-case sorting algorithms (heap sort, merge sort) included for searching and
✓ Traversals of ordered trees (pre-, in-, and post-order) sorting (Bubble sort), which
✓ Depth- and breadth-first traversals
covers about 0.5 % syllabus of
✓ Applications of the depth-first traversal tree, such as topo- logical
ordering and Euler paths/cycles IOI.
✓ Finding connected components and transitive closures.
✓ Shortest-path algorithms (Dijkstra, Bellman-Ford, Floyd Warshall)
✓ Minimum spanning tree (Jarn´ık-Prim and Kruskal algo- rithms)
✓ O(V E) time algorithm for computing maximum bipartite matching.
✓ Biconnectivity in undirected graphs (bridges, articulation points).
✓ Connectivity in directed graphs (strongly connected com- ponents).
✓ Basics of combinatorial game theory, winning and losing positions,
minimax algorithm for optimal game playing
✗ Maximum flow. Flow/cut duality theorem.
✗ Optimization problems that are easiest to analyze using matroid theory.
Problems based on matroid intersecions (except for bipartite matching).
✗ Lexicographical BFS, maximum adjacency search and their properties
✗ Fat nodes and other more complicated ways of implement- ing
persistent data structures.
AL3b. Data structures
✓ Stacks and queues
✓ Representations of graphs (adjacency lists, adjacency ma- trix)
✓ Binary heap data structures
✓ Representation of disjoint sets: the Union-Find data struc- ture.
✓ Statically balanced binary search trees. Instances of this in- clude
binary index trees (also known as Fenwick trees) and segment trees (also
known as interval trees and tournament trees).16 Not Included
✓ Balanced binary search trees17
✓ Augmented binary search trees
✓ O(log n) time algorithms for answering lowest common an-
cestor queries in a static rooted tree.18
✓ Decomposition of static trees (heavy-light decomposition,
separator structures such as centroid decomposition)
✓ Creating persistent data structures by path copying.
✓ Nesting of data structures, such as having a sequence of sets.
✓ Tries
✗ Data structures for dynamically changing trees and their use
in graph algorithms.
✗ String algorithms and data structures (KMP, Rabin-Karp hashing,
suffix arrays/trees, suffix automata, Aho-Corasick)
✗ Complex heap variants such as binomial and Fibonacci heaps,
✗ Using and implementing hash tables (incl. strategies to resolve
collisions)
✗ Two-dimensional tree-like data structures (such as a 2D statically
balanced binary tree or a treap of treaps) used for 2D queries.
✗ Fat nodes and other more complicated ways of implement- ing
persistent data structures.
AL4. Distributed algorithms
This entire section is . Not Included
AL5. Basic computability
All topics related to computability are ✗. This includes the following:
Tractable and intractable problems; Unnomputable functions; The Not Included
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 ✗.
Note that this section only covers the results usually contained in Not Included
undergraduate and graduate courses on formal languages and
computational complexity. The classification of these topics as
✗ 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
Formal definition and properties of finite-state machines, Context-free
grammars and related rewriting systems, Regular expressions
Not Included
✗ Properties other than the fact that automata are graphs and that
grammars have parse trees.
AL8. Advanced algorithmic analysis
✓ Amortized analysis.
Online algorithms Not Included
Randomized algorithms
✗ Alpha-beta pruning
AL9. Cryptographic algorithms
This entire section is . Not Included
AL10. Geometric algorithms
In general, the ISC has a strong preference towards problems that can be
solved using integer arithmetic to avoid precision issues. This may Not Included
include representing some computed values as exact fractions, but
extensive use of such fractions in calculations is discouraged.
Additionally, if a problem uses two-dimensional objects, the ISC prefers
problems in which such objects are rectilinear.
✓ Representing points, vectors, lines, line segments.
✓ Checking for collinear points, parallel/orthogonal vectors and
clockwise turns (for example, by using dot products and cross
products).
✓ Intersection of two lines.
✓ Computing the area of a polygon from the coordinates of its
vertices.19
✓ Checking whether a (general/convex) polygon contains a point.
✓ Coordinate compression.
O(n log n) time algorithms for convex hull
✓ Sweeping line method
✗ Point-line duality
✗ Halfspace intersection, Voronoi diagrams, Delaunay trian-
gulations.
✗ Computing coordinates of circle intersections against lines and
circles.
✗ Linear programming in 3 or more dimensions and its geo- metric
interpretations.
✗ Center of mass of a 2D object.
✗ Computing and representing the composition of geometric
transformations if the knowledge of linear algebra gives an advantage.
AL11. Parallel algorithms
This entire section is . Not Included
6.2 Other Areas in Computing Science
Except for GV (specified below), all areas are ✗.
AR. Architecture and
Organization OS. About 10-15% IOI syllabus of
Operating Systems this section is covered.
NC. Net-Centric Computing (a.k.a. cloud computing)
PL. Programming Languages Only usage of OS and
HC. Human-Computer
Programming Language is
Interaction GV.
Graphics and Visual included, design part is NOT
Computing included (which is the
Basic aspects of processing graphical data are , everything else requirement of IOI).
(including the use of graphics libraries such asOpenGL) is ✗.
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 8 and 6.1.
7 Software Engineering (SE)
We quote from the IEEE-CS Curriculum:
Software engineering is the discipline concerned with the application of theory,
knowledge, and practice for effectively and efficiently building software systems
that satisfy the requirements of users and customers.
In the IOI competition, the application of software engineering
concerns the use of light-weight techniques for small, one-off,
single-developer projects under time pressure. All included top- ics
are ✓ .
SE1. Software design Only basic level software
✓ Fundamental design concepts and principles design concepts are included.
✓ Design patterns About 10-15% syllabus of IOI
✓ Structured design is covered.
In particular, contestants may be expected to
– Transform an abstract algorithm into a concrete, efficient program
expressed in one of the allowed programming languages, possibly using
standard or competition-specific libraries.
– Make their programs read data from and write data to text files
according to a prescribed simple format
✗ 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-specific libraries according to the provided
specification. Not Included
✗ Programming by example,
✗ Debugging in the API environment,
✗ Class browsers and related tools,
✗ Introduction to component-based computing
SE3. Software tools and environments Only basic level program
✓ Programming environments, incl. IDE editing, compiling and
(Integrated Development Environment) debugging is included. About
In particular, contestants may be expected to
10-15% syllabus of IOI is
– Write and edit program texts using one covered.
of the provided program editors.
– Compile and execute their own programs.
– Debug their own programs.
✗ Testing tools,
✗ Configuration management tools
✗ Requirements analysis and design modeling tools,
✗ Tool integration mechanisms
SE4. Software processes Only theoretical concepts of
✓ Software life-cycle and process models In particular, contestants
may be expected to
Software life-cycle are
– Understand the various phases in the solution development process included, no practical
and select appropriate approaches. knowledge is given, which
✗ Process assessment models, covers about 10-15 % syllabus
✗ Software process metrics
of IOI.
SE5. Software requirements and specification
✓ Functional and nonfunctional requirements Only theoretical concepts are
✓ Basic concepts of formal specification techniques In particular, included, no practical
contestants may be expected to knowledge is given, which
– Transform a precise natural-language description (with or without covers about 10-15 % syllabus
mathematical formalism) into a problem in terms of a computational of IOI.
model, including an understanding of the efficiency requirements.
✗ Prototyping,
✗ Requirements elicitation,
✗ Requirements analysis modeling techniques
SE6. Software validation
✓ Testing fundamentals, including test plan creation and testcase
generation
Only theoretical concepts are
✓ Black-box and white-box testing techniques included, no practical
✓ Unit, integration, validation, and system testing knowledge is given, which
✓ Inspections covers about 5-10 % syllabus
In particular, contestants may be expected to of IOI.
– Apply techniques that maximize 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.
✗ Validation planning,
✗ Object-oriented testing
SE7. Software evolution
✗ Software maintenance,
✗ Characteristics of maintainable software, Not Included
✗ Re-engineering,
✗ Legacy systems,
✗ Software reuse
SE8. Software project management
✓ Project scheduling (especially time management)
✓ Risk analysis
✓ Software configuration management
In particular, contestants may be expected to
– Manage time spent on various activities.
– Weigh risks when choosing between alternative
approaches.
Not Included
– Keep track of various versions and their
status while developing solutions.
✗ Software quality assurance,
✗ Team management,
✗ Software measurement and estimation techniques,
✗ Project management tools
SE9. Component-based computing
This entire section is ✗. Not Included
SE10. Formal methods
✓ Formal methods concepts (notion of correctness proof, in-variant)
✓ Pre and post assertions
In particular, contestants may be expected to
– Reason about the correctness and efficiency of algorithmsand
programs.
✗ Formal verification,
✗ Formal specification languages,
✗ Executable and non-executable specifications
SE11. Software reliability Not Included
This entire section is ✗.
SE12. Specialized systems development Not Included
This entire section is ✗.
8 Computer Literacy
The text of this section is ✓ .
Contestants should know and understand the basic structure and This section is fully covered.
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 file management is helpful (creating folders,
copying and moving files).
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-specific 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 find most
appropriate.
The following topics are all: Calculator, Word-processors, Spread- sheet
applications, Database management systems, E-mail clients, Graphics
tools (drawing, painting).
Submitted by:
1. Mohammad Khalid, Assistant Professor and Head of CS dept. OPF Boys College, Islamabad.
2. Ms. Rozina Faheem, Professor/Principal, FGHE&MS F-11/1, Islamabad