Report di informatica e rilevamento dell’IA: codice, pseudocodice e la prosa in mezzo

Il report di un corso di informatica sono due documenti spillati insieme. Uno dei due viene misurato. L’altro è fatto di valori, ed è quello che una passata di revisione può rompere senza che tu te ne accorga.

Team HumanPen

· 12 min di lettura

La risposta breve

La posizione pubblicata di Turnitin sul codice è breve e precisa: il modello «does not reliably detect AI-generated text in the form of non-prose, or code» (non rileva in modo affidabile il testo generato dall’IA sotto forma di non-prosa o di codice), e nelle FAQ si aggiunge che Turnitin sta «not pursuing ChatGPT code detection at this time.» (non sta portando avanti in questo momento il rilevamento del codice di ChatGPT). Quindi i tuoi listati, i tuoi blocchi di pseudocodice e le tue trascrizioni da terminale non sono ciò di cui parla la percentuale IA. Si tratta dei paragrafi in mezzo, che in un report di informatica significa la motivazione di progetto, la spiegazione dell’algoritmo, l’analisi di complessità e la discussione della valutazione. Questi paragrafi sono anche la scrittura più uniforme del documento, perché una buona scrittura tecnica dev’essere uniforme.

A parte tutto questo: ciò che il tuo dipartimento ti permette di generare lo stabilisce la sua politica di integrità accademica, non ciò che misura un rilevatore. Rispondere a una di queste due domande non significa rispondere all’altra, e trattarle come la stessa domanda è il modo in cui si finisce in una riunione.

Cosa dice davvero Turnitin sul codice

Due frasi reggono tutto. La prima sta nella definizione che le FAQ danno di ciò che viene analizzato:

"The model does not reliably detect AI-generated text in the form of non-prose, or code, nor does it detect short-form/unconventional writing such as bullet points (short non-sentence structures)." (Il modello non rileva in modo affidabile il testo generato dall’IA sotto forma di non-prosa o di codice, e non rileva nemmeno la scrittura breve o non convenzionale, come gli elenchi puntati, cioè strutture brevi che non sono frasi.)

Leggi ancora una riga, perché è lì che diventa utile:

"This means that a document containing several different writing types would result in a disparity between the percentage and the highlights." (Questo significa che un documento contenente diversi tipi di scrittura produrrebbe una discrepanza tra la percentuale e le evidenziazioni.)

Un report di informatica è, per costruzione, un documento che contiene diversi tipi di scrittura: quella discrepanza è quindi la condizione normale per questo genere di testo, non un’anomalia. La guida al report enuncia la stessa esclusione con un elenco più lungo: cita la poesia e gli script accanto al codice, e aggiunge tabelle e bibliografie annotate dalla parte delle forme brevi.

La seconda frase di solito gira senza il suo contorno, quindi vale la pena dire dove si trova. È l’ultima riga della risposta a «Why is AI detection not being added to Gradescope?» (Perché il rilevamento dell’IA non viene aggiunto a Gradescope?), e quella risposta dice che Turnitin «not currently have plans to add these capabilities to Gradescope, since the primary use case for Gradescope is handwritten text while for AI detection we're focusing on typed text» (al momento non ha piani per aggiungere queste funzionalità a Gradescope, poiché il caso d’uso principale di Gradescope è il testo manoscritto, mentre per il rilevamento dell’IA ci concentriamo sul testo digitato), e poi: «In addition, we are not pursuing ChatGPT code detection at this time.» (Inoltre, al momento non portiamo avanti il rilevamento del codice di ChatGPT).

Questo conta di più per l’informatica che per qualsiasi altra materia, perché Gradescope è il posto in cui viene consegnata gran parte dei compiti di programmazione. Se la tua implementazione va a un correttore automatico e il tuo report scritto va a un compito su Turnitin, sono due percorsi con ruoli diversi, e la percentuale di scrittura IA che alla fine vedi è stata calcolata sul secondo. Quale prodotto Turnitin ha il rilevamento IA tratta il lato delle licenze di questa separazione.

Quali parti del tuo report sono prosa, nel senso che si usa qui

La definizione sta nella guida al report, e i suoi esempi meritano attenzione:

"Qualifying text (prose sentences contained in long-form writing format) means individual sentences contained in paragraphs that make up a longer piece of written work, such as an essay, a dissertation, or an article, etc." (Per testo idoneo — frasi di prosa contenute in un formato di scrittura esteso — si intendono le singole frasi contenute nei paragrafi che compongono un lavoro scritto più lungo, come un saggio, una tesi di dottorato o un articolo, ecc.)

Un saggio, una tesi di dottorato, un articolo. Un report di progetto scritto con il registro di un riferimento API non è nessuna di queste tre cose, e Turnitin non pubblica alcuna decisione al riguardo. Quello che pubblica è il test della frase: ecco quindi quel test applicato elemento per elemento. Questa è la nostra classificazione, non quella del fornitore.

Elemento di un report di informaticaFrasi nei paragrafi?Note
Introduzione, enunciazione del problema, lavori correlatiNormale prosa accademica
Motivazione di progetto: perché hai scelto una struttura invece di un’altraDi solito la parte più argomentata del file
Spiegazione dell’algoritmo a paroleQui tendono a cadere le evidenziazioni
Paragrafi di analisi della complessitàSì, se scritti come frasiUna riga che contiene solo `O(n log n)` con un simbolo da entrambi i lati non è una frase
Blocco di pseudocodiceNoStrutturato per righe, non in frasi grammaticali
Listato di codice sorgenteNoCitato esplicitamente nella frase di esclusione del fornitore
Trascrizione da terminale, output di log, traccia dello stackNoNon è prosa, e non sta a te riformularlo
Istruzioni di installazione o di build come comandi numeratiNoElenchi puntati e strutture brevi che non sono frasi sono esclusi
Voci di riferimento di funzioni o endpointDipende da come le hai scritte«Restituisce il flusso di token analizzato.» è una frase; una tabella di parametri a due colonne non lo è
Tabelle di valutazione con tempi e accuratezzaNumeri: noUna nota di rilascio del 9 agosto 2023 dice che la prosa estesa all’interno delle celle di una tabella viene elaborata, e che le consegne esistenti devono essere inviate di nuovo per essere rielaborate
Discussione dei risultati, limiti, sviluppi futuriProsa dall’inizio alla fine
BibliografiaEsclusaLa stessa nota di rilascio dice che le bibliografie sono escluse quando viene elaborato il report di scrittura IA

Da quella tabella seguono due conseguenze. Il tuo denominatore è piccolo, quindi la percentuale è un’affermazione su una fetta del file e non sul file, e le FAQ lo dicono con queste parole: "This percentage is not necessarily the percentage of the entire submission. If text within the submission is not considered long-form prose text, it will not be included." (Questa percentuale non è necessariamente la percentuale dell’intera consegna. Se il testo all’interno della consegna non è considerato prosa estesa, non verrà incluso.) E se il report è pieno di listati, può restare così poco testo idoneo che il comportamento tutto o nulla dei documenti brevi diventa rilevante. I requisiti di file dicono che una consegna ha bisogno di "at least 300 words of prose text in a long-form writing format" (almeno 300 parole di prosa in un formato di scrittura esteso) prima che venga prodotto un report.

La prosa che viene misurata è la prosa più uniforme che scrivi

Turnitin pubblica una descrizione di ciò che i suoi falsi positivi tendono ad avere in comune:

"Sometimes false positives (incorrectly flagging human-written text as AI-generated), can include content without a lot of structural variation, text that literally repeats itself, or text that has been paraphrased without developing new ideas." (A volte i falsi positivi, cioè segnalare come generato dall’IA un testo scritto da una persona, possono includere contenuti con poca variabilità strutturale, testo che si ripete letteralmente o testo riformulato senza sviluppare idee nuove.)

E la frase successiva, che è rivolta a chi ti valuta più che a te:

"If our indicator shows a higher amount of AI writing in such text, we advise you to take that into consideration when looking at the percentage indicated." (Se il nostro indicatore mostra una quantità maggiore di scrittura IA in tale testo, ti consigliamo di tenerne conto quando guardi la percentuale indicata.)

Ora leggi queste due proprietà in rapporto a un documento tecnico ben scritto. La variabilità strutturale è esattamente ciò che una sezione di riferimento elimina di proposito: ogni funzione riceve la stessa struttura, prima il nome, poi i parametri, poi il valore restituito, poi le modalità di errore, così che chi ha imparato quella struttura una volta possa scorrere il resto. Dire la stessa cosa due volte nello stesso modo è esattamente come comunichi a un lettore che due componenti si comportano allo stesso modo. Una guida di stile che ti chiedesse di variare la forma di ogni voce sarebbe una cattiva guida di stile.

La stessa forma compare nella spiegazione dell’algoritmo, per un’altra ragione. Quella sezione di solito ripete a parole ciò che il listato sopra dice già. Ripetere qualcosa non ha sbocchi sul piano stilistico. Ogni passaggio inizia con il passaggio, ogni frase ha lo stesso soggetto, e il paragrafo è una trascrizione del flusso di controllo.

Due limiti onesti a tutto questo. Turnitin non dà alcuna frequenza per queste proprietà, solo un elenco di ciò che i falsi positivi «can include» (possono includere), quindi nessuno può dirti quanto dell’effetto sia spiegato da questo. E il comportamento del modello non è un regolamento da cui puoi ragionare a ritroso: le FAQ dicono che "Our model is not explicitly programmed to evaluate specific signals such as 'burstiness,' 'perplexity,' or other individual metrics sometimes referenced in public discussions." (Il nostro modello non è programmato esplicitamente per valutare segnali specifici come 'burstiness,' 'perplexity,' o altre metriche singole a volte citate nelle discussioni pubbliche.) Il mito di perplexity e burstiness ha la versione più completa, inclusa la frase che compare in un altro punto della stessa pagina e che ti impedisce di sovrainterpretare questa.

La metà del file fatta di valori

Ecco l’asimmetria che distingue i report di informatica dai saggi. Il contenuto escluso dalla misurazione non è uno sfondo inerte. È la parte del documento in cui un solo carattere modificato rende il documento sbagliato, e una passata di revisione la legge, che qualcuno la valuti o no.

ContenutoPerché è un valore, non una formulazioneQuanto costa una riformulazione plausibile
Identificatori e loro uso delle maiuscole: `getUser` contro `get_user`Il nome è ciò che viene risoltoLa prosa ora nomina una funzione che il tuo codice non definisce
Flag da riga di comando, `--max-workers=8`Testo eseguibile«il flag dei worker massimi impostato a otto» non si può incollare in una shell
Percorsi e nomi di moduli, `src/parser/tokenizer.py`Indica una posizione realeUn lettore non riesce più a trovare il file
Numeri di versione, `Python 3.11`, `CUDA 12.4`RiproducibilitàUn ambiente che nessuno può ricostruire
Espressioni di complessità, `O(n log n)`, `O(1)` ammortizzatoUn’affermazione con una dimostrazione alle spalle«più o meno lineare» è un’affermazione più debole e diversa
Testo di errore citato e codici di uscitaUna citazione di ciò che il programma ha stampatoNon è più una citazione
Nomi di endpoint e metodi, `POST /v1/jobs`Un contratto di interfacciaUna richiesta che restituisce 404
Semi, iperparametri, suddivisioni del datasetLa base dei tuoi numeriRisultati che nessuno può riprodurre, te compreso

C’è un secondo errore, più difficile da vedere, perché il risultato si legge benissimo. Un documento tecnico dà a ogni concetto un solo nome. Se una revisione lascia `hash map` nella sezione 3 e `dictionary` nella sezione 4 per lo stesso oggetto, o alterna `worker` e `thread`, il documento ha smesso di dire al lettore se si tratta di una cosa o di due, e chi valuta non può risolvere la questione senza leggere il tuo codice. Questo è un danno al documento, e anche qui non entra in gioco nessun punteggio. Vale la pena dirlo, perché va contro un’abitudine che altrove ti serve: nella maggior parte dei testi un termine definito è una scelta di parole, e in questo genere è più vicino a un identificatore.

Dieci minuti di controllo, in quest’ordine

Nessuno di questi controlli richiede strumenti che tu non abbia già aperti.

  • Copia ogni comando dal documento ed eseguilo in una cartella di prova. Le istruzioni di installazione sono la prima cosa a marcire e l’ultima che qualcuno rilegge.
  • Elenca gli identificatori che il tuo codice definisce e cerca ciascuno nel documento. Ciò che è presente nel codice e manca nel documento è una rinominazione avvenuta senza di te.
  • Scegli i tuoi cinque termini concettuali più importanti e cerca ciascuno. Un nome per concetto, ovunque, o sistema la questione ora.
  • Leggi ogni affermazione di complessità in rapporto alla funzione che descrive. `O(n log n)` ed «efficiente» non sono intercambiabili, e solo una delle due è valutabile.
  • Confronta con un’esecuzione reale tutto ciò che sta tra virgolette. Righe di log e messaggi di errore sono citazioni.

Dove sta davvero lo spazio

Se il blocco segnalato è la tua spiegazione dell’algoritmo, c’è una domanda che vale la pena farti prima di toccare le frasi: quella sezione fa qualcosa che il listato sopra non fa già? Una spiegazione che si limita a rinominare le variabili e ad aggiungere un «poi» tra i passaggi è contenuto doppio in un report, qualunque cosa dica un rilevatore. La versione che si merita il suo posto spiega perché il ciclo è strutturato così, quale fosse l’alternativa e dove crolla.

È anche lì che la tua scrittura ha uno spazio in cui andare. Motivazione di progetto, alternative scartate, il bug che ti è costato due giorni, ciò che il benchmark non misura, il limite che correggeresti con un’altra settimana. Questi paragrafi variano nella forma perché varia il pensiero che contengono. Le sezioni in stile riferimento non variano, e non dovrebbero.

Vale la pena essere onesti sui limiti di questo consiglio: sto descrivendo ciò che rende un report migliore da leggere e da valutare. Nessuno, noi compresi, può dirti cosa faccia a un numero. Turnitin non pubblica la funzione di aggregazione né la lunghezza dei segmenti, e avverte che il suo stesso modello "may not always be accurate (it may misidentify human-written, AI-generated, and AI-paraphrased text), so it should not be used as the sole basis for adverse actions against a student." (potrebbe non essere sempre accurato, può identificare male testo scritto da esseri umani, generato dall’IA e riformulato dall’IA, quindi non dovrebbe essere usato come unica base per provvedimenti sfavorevoli a uno studente).

Se devi rivedere la prosa

Ciò che rende lento rivedere un report di informatica ha poco a che fare con le frasi. Un paragrafo riscritto può contenere quattro identificatori, un flag e un numero di versione, e ognuno di essi va ricontrollato sul codice prima che tu possa fidarti del paragrafo. Conta il costo in paragrafi toccati.

Per questo Lo strumento HumanPen ti chiede di indicare prima l’ambito. Carica il documento, poi segna i passaggi oppure importa un report IA di Turnitin o iThenticate e lascia che siano i suoi passaggi segnalati a tracciare il confine. Tutto ciò che sta fuori resta intatto, il che in questo genere significa che i tuoi listati e i tuoi blocchi di comandi non entrano affatto nella passata, a meno che tu non li metta. Il motore non va sotto il livello del paragrafo, quindi una selezione che si interrompe a metà paragrafo viene ampliata per coprirlo tutto e ti viene mostrata prima per conferma, e i crediti contano le parole effettivamente riscritte. La terminologia è nell’elenco delle cose che si propone di preservare, accanto a struttura, citazioni e impaginazione. I passaggi ancora segnalati dopo possono essere riscritti di nuovo gratuitamente dove ricorrono le condizioni per farlo.

Nelle sue FAQ c’è una riga sulla revisione dei documenti complessi dopo il download. Per un report pieno di identificatori, questo significa la lista di controllo della sezione precedente, non una lettura continua. La versione a livello di documento di ciò che si rompe in un viaggio di andata e ritorno, campi e riferimenti incrociati compresi, sta in Campi di Word, indici e riferimenti incrociati.

Domande frequenti

Turnitin rileva il codice generato dall’IA? Turnitin dice che il suo modello non rileva in modo affidabile il testo generato dall’IA sotto forma di non-prosa o di codice, e le FAQ dicono che al momento non sta portando avanti il rilevamento del codice di ChatGPT. Questa è un’affermazione su ciò che questo report misura. Non è un’affermazione su ciò che il tuo istituto permette, che è un documento separato che dovresti leggere.

Il mio blocco di pseudocodice viene valutato? La regola pubblicata è che il modello analizza frasi di prosa all’interno dei paragrafi, e cita le forme brevi e le strutture che non sono frasi tra le cose che non rileva. Un blocco di pseudocodice è strutturato per righe, non per frasi. Il paragrafo che lo introduce è prosa.

Perché le evidenziazioni sono così concentrate in una sezione? In parte è aritmetica. Se la maggior parte del tuo file è esclusa, le evidenziazioni possono comparire solo in ciò che resta. Turnitin descrive anche la valutazione di segmenti sovrapposti e l’aggregazione dei valori, quindi i tratti uniformi di testo tendono a produrre risultati uniformi invece che una dispersione.

La mia sezione di analisi della complessità è stata segnalata e ho scritto ogni parola io. Succede, e il paragrafo delle FAQ sui falsi positivi è ciò che va messo davanti a chi valuta, soprattutto la sua frase finale, che consiglia di tenere conto della natura del testo nel leggere la percentuale. Quello che non farà è stabilire la paternità del testo, in nessuna delle due direzioni.

Il mio report è quasi tutto listati e non è stato generato alcun report IA. Controlla la soglia prima di pensare che qualcosa sia fallito. I requisiti di file dicono che una consegna ha bisogno di almeno 300 parole di prosa in un formato di scrittura esteso, e un report pieno di listati può restare sotto quella soglia anche quando il numero di pagine sembra buono. L’elenco generale delle esclusioni sta in quali contenuti l’IA di Turnitin salta.

CONTINUA A LEGGERE