Simple Science

Scienza all'avanguardia spiegata semplicemente

# Informatica# Computer e società

Ripensare i concorsi di programmazione per principianti

Un nuovo modo per creare problemi di programmazione adatti ai principianti ma comunque stimolanti.

― 5 leggere min


Coding impegnativo perCoding impegnativo perprincipiantigli strumenti AI.abilità di programmazione nonostanteReinventare i contest per migliorare le
Indice

I concorsi di programmazione sono eventi dove persone o squadre competono per risolvere problemi scrivendo codice entro un tempo prestabilito. Molti concorsi vogliono accogliere i principianti offrendo problemi più semplici che non richiedono abilità di programmazione avanzate. Tuttavia, con l'aumento degli strumenti di intelligenza artificiale che possono generare codice, questi problemi per principianti possono diventare troppo facili, rendendo il concorso meno coinvolgente. Questo articolo esplora un nuovo modo di creare problemi di programmazione adatti ai principianti che comunque sfidano i partecipanti, anche quando sono consentiti strumenti AI.

La Sfida

Molti neofiti della programmazione trovano i concorsi entusiasmanti ma potrebbero sentirsi sopraffatti da problemi complessi. I concorsi tradizionali spesso comportano compiti ben definiti che chiunque può comprendere e risolvere relativamente facilmente se ha una conoscenza di base della programmazione. Tuttavia, a causa della disponibilità di strumenti AI, molti partecipanti potrebbero fare affidamento su di essi, portando a una mancanza di comprensione genuina e di abilità nella risoluzione dei problemi.

Per affrontare questa sfida, proponiamo un nuovo tipo di problema per i concorsi di coding. Questi problemi avranno specifiche incomplete, il che significa che non forniranno tutti i dettagli necessari per arrivare a una soluzione. Inoltre, ci sarà un meccanismo in atto per permettere ai partecipanti di chiedere chiarimenti su questi dettagli mancanti. Questo approccio incoraggia il pensiero critico e la creatività nella risoluzione dei problemi.

Progettazione del Problema

  1. Specifiche Incomplete: Ogni problema fornirà un compito di scrittura di codice che manca di dettagli importanti. Ad esempio, un problema potrebbe chiedere ai partecipanti di creare una funzione che elabora un elenco di numeri senza specificare cosa restituire quando l'elenco ha certe caratteristiche, come essere vuoto o contenere nessun numero positivo.

  2. Domande di chiarimento: I partecipanti avranno l'opportunità di fare domande chiare per chiarire i requisiti del compito. Riceveranno feedback immediato sulle loro richieste. Questo aspetto consente ai partecipanti di pensare in modo critico su quali informazioni sono necessarie per creare una soluzione di successo.

  3. Valutazione delle Prestazioni: Per valutare l’efficacia di questo formato di problema, abbiamo condotto un concorso di programmazione dove i partecipanti si sono confrontati con questi problemi progettati appositamente. Questo concorso ha raccolto invii da team di studenti, che sono stati informati che il loro lavoro sarebbe stato utilizzato per scopi di ricerca.

Esperienza dei Partecipanti

Abbiamo organizzato un concorso di due ore per studenti di varie istituzioni che erano attivi nei loro club di informatica. Erano autorizzati a lavorare individualmente o in gruppi e potevano usare strumenti AI per assisterli. Il concorso presentava sei problemi progettati con dettagli omessi. Abbiamo scoperto che gli strumenti AI, come GitHub Copilot, faticavano a generare soluzioni corrette a causa di queste specifiche mancanti.

I partecipanti potevano fare domande per chiarire la loro comprensione dei problemi piuttosto che prendere le specifiche per oro colato. Questo metodo li ha aiutati a impegnarsi con i problemi in modo più critico e creativo, invece di fare affidamento solo sull'assistenza dell'AI.

Analisi delle Prestazioni

Le prestazioni dei partecipanti sono state valutate in base a quanto bene hanno identificato e affrontato i dettagli mancanti nelle loro soluzioni. Complessivamente, i risultati indicavano che i partecipanti identificavano solo circa il 20% dei dettagli mancanti in tutti i problemi. In media, gli studenti riuscivano a gestire poco meno di quattro delle 19 omissioni per problema.

Analisi Dettagliata

  1. Problema 1: In questo problema, circa il 30% delle sottomissioni gestiva correttamente gli input con più istanze del più piccolo intero positivo. Tuttavia, molti concorrenti si sono basati su assunzioni che hanno portato a soluzioni errate.

  2. Problema 2: Per quanto riguarda la definizione del "primo intero positivo", le sottomissioni hanno mostrato successi variabili. Nessuna delle sottomissioni ha gestito correttamente certi input di una sola parola. Ma circa il 66% è riuscito a gestire correttamente stringhe più complesse.

  3. Problema 3: Questo problema chiedeva ai partecipanti di gestire più interi meno frequenti. Circa il 54% delle sottomissioni è riuscito a gestire efficacemente questi casi. Il caso più semplice ha portato a un tasso di prestazioni corrette più alto.

  4. Problema 4: Questo problema era incentrato sul calcolo dei profitti. Le sottomissioni hanno dimostrato che, mentre una grande percentuale poteva identificare alcune condizioni, meno erano in grado di gestire scenari più complessi, indicando una lacuna nella comprensione.

  5. Problema 5: Purtroppo, nessuna delle sottomissioni è riuscita a comprendere alcuna delle omissioni essenziali per questo problema. Questo ha evidenziato la difficoltà dei partecipanti nel gestire scenari indefiniti.

Feedback e Risottomissioni

Dopo un tentativo iniziale, ai partecipanti è stato fornito un meccanismo di feedback per valutare le loro sottomissioni, il che ha incoraggiato una rielaborazione del loro codice. Complessivamente, ci sono stati solo un numero limitato di risottomissioni a causa di vari vincoli sperimentati durante il concorso.

Per il Problema 1, un team ha migliorato la propria soluzione basata sul feedback, mentre per il Problema 4, un altro gruppo ha avuto successo modificando una condizione critica nel proprio codice. Tuttavia, molte sottomissioni non sono riuscite a migliorare significativamente alla risottomissione.

Direzioni Future

Date le prestazioni e il feedback dei partecipanti, è cruciale affinare sia il design dei problemi che il formato del concorso. I futuri concorsi dovrebbero concentrarsi su:

  1. Più Problemi di Pratica: Offrire una gamma più ampia di problemi di pratica per preparare meglio i partecipanti al concorso.

  2. Semplicità del Problema: Semplificare i futuri problemi potrebbe aiutare a renderli più gestibili entro il tempo prestabilito del concorso.

  3. Miglioramento del Feedback: Migliorare il meccanismo di feedback per fornire approfondimenti dettagliati potrebbe aiutare i partecipanti a perfezionare il loro codice in modo più efficace.

Conclusione

Creare problemi di programmazione a livello principiante che sfidano i partecipanti e mitigano l'influenza degli strumenti AI è essenziale per coltivare abilità genuine di programmazione. Incoraggiare i partecipanti a pensare criticamente sulle specifiche del problema migliorerà la loro capacità di risolvere compiti di coding in modo indipendente. Questo approccio non solo favorisce l'apprendimento ma sviluppa anche abilità vitali necessarie in scenari di programmazione del mondo reale.

Ridefinendo il modo in cui i problemi di programmazione sono presentati nei concorsi, possiamo ispirare una nuova generazione di programmatori esperti che sono sicuri delle proprie capacità e capaci di affrontare sfide più complesse in futuro.

Fonte originale

Titolo: Probeable Problems for Beginner-level Programming-with-AI Contests

Estratto: To broaden participation, competitive programming contests may include beginner-level problems that do not require knowledge of advanced Computer Science concepts (e.g., algorithms and data structures). However, since most participants have easy access to AI code-generation tools, these problems often become trivial to solve. For beginner-friendly programming contests that do not prohibit the use of AI tools, we propose Probeable Problems: code writing tasks that provide (1) a problem specification that deliberately omits certain details, and (2) a mechanism to probe for these details by asking clarifying questions and receiving immediate feedback. To evaluate our proposal, we conducted a 2-hour programming contest for undergraduate Computer Science students from multiple institutions, where each student was an active member of their institution's computing club. The contest comprised of six Probeable Problems for which a popular code-generation tool (GitHub Copilot) was unable to generate accurate solutions due to the absence of details. Students were permitted to work individually or in groups, and were free to use AI tools. We obtained consent from 26 groups (67 students) to use their submissions for research. We analyze the extent to which the code submitted by these groups identifies missing details and identify ways in which Probeable Problems can support learning in formal and informal CS educational contexts.

Autori: Mrigank Pawagi, Viraj Kumar

Ultimo aggiornamento: 2024-05-23 00:00:00

Lingua: English

URL di origine: https://arxiv.org/abs/2405.15123

Fonte PDF: https://arxiv.org/pdf/2405.15123

Licenza: https://creativecommons.org/licenses/by/4.0/

Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.

Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.

Articoli simili