Olimpiadi internazionali dell'informatica

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Il logo ufficiale della competizione

Le Olimpiadi internazionali dell'informatica, in inglese International Olympiad in Informatics e in acronimo IOI, sono competizioni fra studenti delle scuole secondarie che si svolgono annualmente.

L’idea di istituire un’Olimpiade internazionale dell'informatica fu proposta dal professore bulgaro Blagovest Sendov durante la 24° conferenza generale dell’UNESCO svoltasi a Parigi nell’ottobre 1987.[1] Nel maggio 1989, l'UNESCO ha avviato e sponsorizzato la prima Olimpiade internazionale dell'informatica (IOI).[2] Il primo IOI si è tenuto a Pravec in Bulgaria nel 1989.[3][4]

La competizione consiste di due giorni di programmazione per la soluzione di problemi di natura algoritmica. Gli studenti competono su base individuale e da ogni nazione partecipante provengono fino a quattro studenti (ad eccezione della nazione ospitante che può far concorrere 8 studenti); nel 2004 hanno partecipato 81 nazioni. Gli studenti sono selezionati attraverso analoghe competizioni nazionali. Ad esempio in Gran Bretagna gli studenti che fanno parte della squadra nazionale sono scelti nella British Informatics Olympiad (BIO), mentre in Italia è l'AICA ad occuparsene.

Nel 2012 le Olimpiadi internazionali dell'informatica si sono tenute per la prima volta in Italia, a Sirmione[5].

La selezione italiana[modifica | modifica wikitesto]

Ogni nazione adotta il criterio di selezione che preferisce. In Italia le selezioni vengono suddivise in scolastiche, territoriali e nazionali.[6]

Selezione scolastica[modifica | modifica wikitesto]

La prova viene somministrata nell'istituto di provenienza di ogni studente. La prova consiste nella soluzione di problemi a carattere logico-matematico, algoritmico e di programmazione in pseudocodice (la cui descrizione per la gara è disponibile qui). Tutti i quesiti sono pensati per non richiedere la conoscenza di alcun linguaggio di programmazione.

I problemi sono di due tipologie: a risposta aperta, per cui è richiesta una soluzione alfanumerica; oppure a risposta chiusa, per cui lo studente deve scegliere una tra cinque risposte proposte. A ogni risposta esatta vengono assegnati 5 punti; a ogni risposta sbagliata 0 punti; mentre ad una risposta vuota viene assegnato 1 punto se la domanda è a risposta chiusa e 0 punti se la domanda è a risposta aperta.

Nella selezione scolastica 2010-2011 si sono iscritti 441 istituti per un totale di circa 10.000 studenti; nel 2015-2016 si è passati a 14.000[7]

Alla selezione successiva passano sempre il primo studente di ogni istituto, il secondo se ha superato la media nazionale, e altri studenti a discrezione del comitato organizzativo; oltre ai partecipanti alla selezione nazionale dell'anno precedente, gli studenti (riserve escluse) della miglior squadra di ciascuna regione italiana che abbia partecipato alla finale delle Olimpiadi di Informatica a Squadre, e altri studenti che si siano distinti in altre competizioni a carattere scientifico a livello nazionale, sempre a insindacabile giudizio del Comitato Olimpico.[8]

Selezione territoriale[modifica | modifica wikitesto]

Gli studenti ammessi parteciperanno alla selezione territoriale (in passato regionale) che si svolgerà in una sede prefissata. Ogni sede ha in media 30 partecipanti e ogni regione ha un numero di sedi variabile, da 1 a 6.[9]

La gara, svolta su piattaforma online e della durata di 3 ore, consiste nella soluzione di 4 problemi da risolvere mediante la scrittura di programmi. Questi sono simili a quelli proposti alle Olimpiadi Internazionali di Informatica, anche se mediamente più semplici. Ogni problema vale 50 punti e vengono presentati in un ordine indicativo crescente del livello di difficoltà e conoscenze richieste dal problema.

Il punteggio assegnato ad una sottoposizione è proporzionale al numero di casi correttamente risolti q rispetto al totale dei casi presenti T (punteggio = 50*q/T). Il punteggio assegnato ad un problema è il massimo dei punteggi ottenuti tra tutte le sottoposizioni effettuate. Lo stile di programmazione non ha alcun effetto sulla valutazione, così come il tempo usato per risolvere un input, purché l’esecuzione del programma sia abbastanza rapida da consentire la consegna dell’output entro il termine della gara.

I problemi devono essere risolti tramite programmi scritti in uno dei linguaggi di programmazione consentiti. I linguaggi ufficialmente supportati (edizione 2022-23) sono: C, C#, C++, Java, JavaScript (con template in HTML), Pseudocodice e Python 3. Per questi linguaggi saranno disponibili dei template di soluzione con il codice relativo alla lettura dell’input e alla scrittura dell’output. Sono inoltre consentiti i seguenti linguaggi senza supporto del template: Go, Pascal, TypeScript e Visual Basic.

Parallelamente alla gara gli studenti sono invitati a completare il percorso di allenamento AlgoBadge, che introduce agli argomenti utili per le gare territoriali e, soprattutto, nazionali. Non è necessario completarlo, ma è obbligatorio raggiungere il badge d’argento entro una data stabilita dal Comitato Olimpico (in generale i primi di luglio) per essere considerati ammissibili alla selezione nazionale.

Sono ammessi alla selezione nazionale:

  1. Il primo classificato di ogni Sede Territoriale (le sedi distaccate contano con la sede principale);
  2. Gli studenti invitati ad almeno un corso di formazione OII svolto nell’anno in corso che rispettano i requisiti per partecipare alle IOI, anche se non hanno effettuato la gara territoriale;
  3. Altri studenti ammessi per fast-track, cioè i migliori studenti del biennio fino al raggiungimento di 20 ammessi in totale, e le migliori studentesse fino al raggiungimento di 10 ammesse in totale (nel totale contano anche altri ammessi per i punti 1, 2 e 3);
  4. I migliori della classifica generale non già ammessi per i punti precedenti, fino ad esaurimento posti.[10]

Selezione nazionale[modifica | modifica wikitesto]

Gli studenti ammessi (circa 100) partecipano alla competizione nazionale tutti insieme, in una determinata sede scelta annualmente. La prova consiste sempre in 4 problemi, ma il tempo concesso è di 5 ore.

I problemi devono essere risolti tramite programmi scritti in linguaggio C++ in quanto la gara si svolge esclusivamente in ambiente GNU/Linux con compilatore C++. Lo standard di riferimento è C++17 o successivo.

A differenza delle precedenti selezioni, i risultati vengono comunicati direttamente ai partecipanti il giorno dopo la gara.

I primi classificati saranno premiati con:

  • un dodicesimo dei partecipanti riceve una medaglia d'oro;
  • un sesto dei partecipanti riceve una medaglia d'argento;
  • un quarto dei partecipanti riceve una medaglia di bronzo.

I vincitori delle medaglie d’oro, insieme ad alcuni vincitori di medaglie d’argento e di bronzo, a insindacabile giudizio del Comitato, sono dichiarati Probabili Olimpici (PO) e sono ammessi alla successiva fase di allenamento, a patto di raggiungere il badge di diamante su AlgoBadge qualche giorno prima della data dell’allenamento. [11]

Probabili Olimpici[modifica | modifica wikitesto]

I probabili olimpici partecipano ad un percorso di formazione in presenza che dura fino al giugno precedente alla gara internazionale, quando vengono decisi 4 olimpionici e 2 riserve. Gli "stage" di formazione sono selettivi e portano a diminuire un po' alla volta il numero di probabili olimpici che continuano il percorso di allenamento.

Struttura della competizione internazionale[modifica | modifica wikitesto]

La sala della prova internazionale nel 2006

In ciascuno dei due giorni di competizione, agli studenti vengono solitamente assegnati tre problemi che devono risolvere in cinque ore. Ogni studente lavora da solo, al computer, senza poter contare su alcun aiuto: è proibito comunicare con gli altri partecipanti, utilizzare libri ecc. Generalmente, per risolvere il problema il concorrente deve scrivere un programma in C, C++ o Pascal e consegnarlo prima che il termine di cinque ore scada. Successivamente, il programma viene valutato mandandolo in esecuzione con dei dati di prova, segreti, per un totale di 10 o 20 prove con dati diversi. Al concorrente vengono assegnati punti per ciascun caso di prova che il suo programma risolve correttamente, entro i limiti di memoria e di tempo assegnati. In alcuni casi, il programma del concorrente deve interagire con una libreria esterna, questo per consentire problemi nei quali l'input non è fissato ma dipende dalle azioni del programma – per esempio nei problemi nei quali il programma deve "giocare". Un altro, nuovo tipo di problemi prevede che gli input siano disponibili pubblicamente durante le cinque ore della competizione. Il partecipante in questo caso non deve consegnare un programma, ma l'output relativo all'input assegnato: sta a lui decidere se ottenere i file di output scrivendo un programma (sfruttando speciali caratteristiche dell'input), a mano, oppure mediante una combinazione di questi metodi.

Il punteggio dei due giorni di competizione e tutti i problemi sono sommati per ciascun concorrente. Alla cerimonia di premiazione, i concorrenti sono premiati con delle medaglie a seconda del loro punteggio totale. Generalmente, la metà migliore dei concorrenti (due per paese, in media) è premiato con una medaglia, in modo che il rapporto fra oro : argento : bronzo : nessuna medaglia sia approssimativamente 1:2:3:6 (così circa 1/12 dei concorrenti ottiene una medaglia d'oro).

Italia[modifica | modifica wikitesto]

L'Italia ha vinto in 24 edizioni (dal 2000 al 2023) 66 medaglie[12][13]:

  • 2 medaglie d'oro
  • 24 medaglie d'argento
  • 40 medaglie di bronzo

Lista dei siti Web e delle sedi delle Olimpiadi[modifica | modifica wikitesto]

Note[modifica | modifica wikitesto]

Bibliografia[modifica | modifica wikitesto]

  • Bruno Fadini, Roberto Grossi (2006): Olimpiadi dell'Informatica, Mondo digitale, 5 n.1 pp. 3–16

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]