Insegnamento TCS al liceo - programmi esistenti


16

Mi è stato offerto di insegnare un nuovo programma di scuola superiore TCS, che richiede la costruzione di un curriculum. Mi piacerebbe molto sentire opinioni e suggerimenti in merito.

Innanzitutto, qualcuno conosce le scuole superiori in cui un programma TCS è stato insegnato con successo (o senza successo)?

L'idea è di un programma di 3 anni (10 ° -12 ° anno, età 16-18 anni), circa 8 ore settimanali, per studenti eccezionali selezionati, il che significa che può e dovrebbe essere impegnativo. A differenza del programma "computer" standard, questo programma non dovrebbe concentrarsi sulla programmazione, ma piuttosto su argomenti selezionati in CS, principalmente in TCS. Gli argomenti che abbiamo in mente finora sono, in generale:

  • Analisi asintotiche
  • Strutture di dati e algoritmi di base (elenchi, array)
  • Algoritmi grafici, anche come dimostrazione di algoritmi avidi vs programmazione dinamica.
  • Altri algoritmi (ad esempio probabilistico)
  • Computabilità: il concetto di TM, riduzione, decidibilità.
  • Complessità - NP, P, forse PSPACE e NL. Completezza.
  • Teoria degli automi

Fondamentalmente, questo copre la parte TCS dei primi due anni di un B.Sc in CS. Tuttavia, dobbiamo tenere presente che a questi studenti mancano le basi matematiche necessarie per la maggior parte di questo materiale. In particolare, cose come la teoria degli insiemi, la combinatoria, la probabilità e l'arte modulare non vengono insegnate al liceo (purtroppo).

Riassumendo e per porre domande precise:

  1. Qualcuno sa di un programma simile ovunque?
  2. Ci sono suggerimenti per argomenti concreti / generali che ritieni possano e debbano essere insegnati in aggiunta / invece degli argomenti sopra, mantenendo il programma interessante, nonché importante e direttamente pertinente (ad esempio, la teoria dei gruppi è importante e interessante, ma non abbastanza pertinente per giustificare il tempo necessario)
  3. Sarei stato felice di introdurre l'apprendimento automatico in qualche modo, dato che al giorno d'oggi è un argomento molto caldo. Sono benvenute idee su come l'apprendimento automatico possa essere presentato senza strumenti come i teoremi di concentrazione-misura.

2
Sembra che alla fine elenchi la teoria degli automi come una sorta di ripensamento. Sostenerei di fare della teoria degli automi il tema centrale e unificante. Può presentare agli studenti un ragionamento matematico formale senza alcun background matematico specifico. Ha acuti teoremi incondizionati che sono fondamentali ma relativamente semplici da dimostrare. Può essere collegato direttamente all'apprendimento automatico , anche se dalla mia esperienza questo è difficile da insegnare agli studenti universitari in un primo corso di teoria, quindi con HS è necessaria maggiore cautela.
Artem Kaznatcheev

1
non ne ho mai sentito parlare prima! studenti "selezionati"? significa anche avanzato, presumibilmente? prova a estrarre libri scientifici famosi su TCS o anche blog online [diversi buoni là fuori]. Macchine di Turing, calcolo quantistico altre aree chiave / interessanti. penso che questo potrebbe essere tirato fuori se la matematica non è pesante e fatta in modo più concettuale che matematico. anche questo sito si presenta molto in domande edu: cs scollegato . in bocca al lupo!
vzn

2
Mi chiedo se sarebbe meglio dedicare un po 'del tuo tempo all'insegnamento delle abilità matematiche che menzioni (ad es. Probabilità) ... questo potrebbe anche aiutarti a coprire argomenti più avanzati, ma anche a preparare gli studenti a futuri studi di matematica / cs .
usul

1
@vzn - sì, questi sono studenti avanzati (oserei dire - dotati).
Shaull

1
@vzn Questo è un suggerimento molto interessante. In qualche modo, TCS non fa ancora parte della cultura popolare. Cioè, anche gli studenti curiosi di solito non sono consapevoli di domande come P vs NP. Ma sicuramente chiederemo suggerimenti agli attuali studenti CS e vedremo cosa ne usciranno. La mia ipotesi è che la crittografia sarebbe centrale.
Shaull

Risposte:


8

Molti paesi organizzano scuole estive per i loro team IOI (composti da studenti delle scuole superiori di circa 16 anni IIRC). Quello che abbiamo in Iran aveva i seguenti corsi:

  • programmazione,
  • struttura dei dati e algoritmi,
  • combinatoria e
  • teoria dei grafi.

Penso che la Computer Teachers Association di ACM abbia un curriculum K12 nella sua pagina delle risorse sul curriculum, anche se probabilmente è troppo leggero per gli adolescenti di talento.


Penso che la programmazione debba sicuramente far parte del curriculum. Python dovrebbe essere una buona prima lingua da imparare.

Potresti voler anche trattare alcuni argomenti accessibili con applicazioni (la gioia di creare qualcosa di interessante può avere un grande impatto sul loro interesse). Penso che il corso ML di Andrew Ng su Coursera dovrebbe essere accessibile a studenti di talento (specialmente per quelli in paesi come il tuo dove c'è un curriculum di matematica K12 più serio).

Un argomento non standard che potresti prendere in considerazione è la teoria dei giochi combinatoria, potrebbe non essere molto interessante con i 16 anni (non ho esperienza per questo) ma funziona abbastanza bene per gli studenti un po 'più giovani nella mia esperienza.

Personalmente penso che il tema centrale e di collegamento dovrebbe riguardare gli algoritmi, penso che funzionerebbe meglio della teoria degli automi come tema centrale e probabilmente la prospettiva algoritmica (non macchine di Turing, automi, ecc.) È l' essenza dell'informatica.


La parte di programmazione è coperta dal programma CS standard, che prendono tutti. Questi sono argomenti aggiuntivi. Ti capita di avere un link per un sito Web di questa scuola estiva? Per quanto riguarda la concentrazione sugli algoritmi, mentre sono d'accordo sul fatto che sono fondamentali per CS, penso che la calcolabilità e la complessità siano ugualmente l' essenza dell'informatica. Ricordo di essere stato molto più colpito dal fatto che ci sono cose che non possiamo risolvere, piuttosto che da algoritmi intelligenti. Ma entrambi saranno coperti, probabilmente.
Shaull

in un certo senso, le macchine di Turing riguardano gli algoritmi . anche il rubino è anche un'opzione eccellente paragonabile al pitone . sullo stesso argomento, un'altra eccellente opzione per imparare lo sviluppo è javascript a causa di molte ragioni, ad esempio la sua proliferazione nei browser, un sacco di codice pubblico / di esempio, ampie funzionalità, elevato utilizzo, ecc.
vzn

1
@Shaull, hanno un sito ( Young Scholars Club ) ma è in persiano e non contiene molto su ciò che è coperto nella scuola estiva in alcun modo.
Kaveh,

1
@vzn, non credo che tu abbia molta esperienza nell'insegnamento della TCS agli studenti delle scuole superiori e ti ho spiegato molto chiaramente che non sono interessato alle tue opinioni . Smetti di trollare le mie risposte.
Kaveh,

k, per favore non indovinare il mio bkg e farà la stessa cortesia. il commento è sostanzialmente a supporto delle tue opinioni ... sembra un argomento per meta = (
vzn

5

Curiosamente, c'è qualcuno che ha sostenuto che l'apprendimento automatico è unicamente adattotra gli argomenti di informatica da insegnare agli studenti delle scuole superiori, perché presumibilmente è uno dei pochi sottocampi in cui la matematica di base può farti capire abbastanza per apprezzare le sfide importanti. Non sono d'accordo con questa affermazione: gli algoritmi di base (diciamo per la ricerca, l'ordinamento) possono essere presentati come enigmi, e puoi arrivare molto rapidamente a affermazioni molto semplici ma problemi aperti fondamentali come "possono essere fatti moltiplicazioni essenzialmente con lo stesso numero di operazioni come addizione "o ordinamento di numeri interi in tempo lineare o factoring (suppongo che il concetto di numeri primi non sarebbe nuovo per il gruppo selezionato di studenti delle scuole superiori?). D'altra parte, un sacco di apprendimento automatico sarebbe difficile da comprendere senza un buon livello di esperienza con la statistica e la teoria delle probabilità. Tuttavia,

In termini di un programma di insegnamento, ce n'è uno più dettagliato di Essinger e Rosen a Drexel.

Oltre a questi, penso che si possa tentare di delineare alcune delle idee di alto livello della teoria dell'apprendimento:

  • qual è il problema di classificazione di base
  • cos'è una classe di concetti e cosa significa apprendere un concetto
  • perché non puoi sperare di apprendere concetti da una classe di concetti senza restrizioni con complessità campionaria non esponenziale (come introduzione agli argomenti di conteggio)
  • cos'è la dimensione VC

Un altro suggerimento è quello di introdurre circuiti e tentare qualche schizzo del limite inferiore di Shannon. Dipende da quanto gli studenti si sentano a proprio agio nel contare. Se questo è troppo pesante, potrebbe comunque aiutare a fare l'argomentazione mentre gli studenti fanno il conteggio dei circuiti stessi sulla fede. Penso che l'idea di "la maggior parte dei problemi richiede circuiti di grandi dimensioni perché ci sono troppi problemi e troppo pochi circuiti piccoli" sarà sorprendente. Questa idea è importante e pervasiva nella complessità.


Entrambi i suggerimenti sono molto carini. Grazie! Ho la sensazione che per il liceo, solo imparare cosa sia una dimensione VC potrebbe richiedere circa 3 mesi, il che potrebbe essere troppo. Ma vale sicuramente la pena di considerarlo, soprattutto dal momento che è già stato pensato.
Shaull

Penso che anche solo capire cosa significhi apprendere un concetto e avere una vaga idea che non puoi imparare cose arbitrariamente complicate prima che il sole si congeli sarà una vittoria.
Sasho Nikolov,

3

ecco una direzione promettente per andare su questo. AP / NSF ha recentemente annunciato una nuova iniziativa per il programma di collocamento avanzato delle scuole superiori. ci saranno molti vantaggi nell'utilizzare un tale programma come un piano di lezioni standardizzato, accreditamento del college, ecc.

è attualmente in fase di sviluppo e sarà pronto per il 2016. il programma del corso provvisorio e i materiali sono disponibili online. (per gli esperti accademici, a questo punto potrebbe anche esserci qualche possibilità di influenzare il contenuto futuro attraverso una collaborazione di tipo "intelligenza collettiva").

Il programma di collocamento avanzato del College Board ha dichiarato giovedì che prevede di aggiungere un nuovo programma di informatica alle sue offerte di classe, il primo nuovo test in sette anni. La mossa riflette un crescente interesse nella formazione degli studenti per le carriere nelle scienze in mezzo a una spinta nazionale per rendere l'economia americana più competitiva a livello globale.

Il nuovo programma, AP Computer Science Principles, si concentrerà sugli "aspetti creativi" dell'informatica e sarà finanziato in parte da una sovvenzione di $ 5,2 milioni della National Science Foundation. L'agenzia federale mira a formare altri 10.000 insegnanti di informatica in tutto lo stesso numero di scuole superiori in tutta la nazione entro il 2016, nell'ambito di uno sforzo per migliorare l'istruzione nei settori della scienza, della tecnologia, dell'ingegneria e della matematica o dello STEM. Il College Board sarà chip in circa $ milioni 3.5 per il supporto e le attrezzature insegnante.

il programma esistente si chiama AP Computer Science A e il nuovo programma si chiama AP Computer Science Principles. la classe esistente è in circolazione da molti anni ed è anche utile come modello per gli insegnanti che sviluppano curriculum.



3
Per inciso, Baker Franke e io abbiamo presentato una proposta per una sessione BOF (Birds-of-a-Feather) al SIGCSE '14 per discutere su come rendere gli argomenti in teoria accessibili per il curriculum CS Principles.
rahulmehta95,

@ rahulmehta95 - esiste un link alla proposta che posso leggere?
Shaull,


2

Un'idea che ho preso in giro di recente è come insegnare agli studenti di HS l'idea di una riduzione tra i problemi. Ho scoperto che questo è uno degli argomenti più interessanti ma più stimolanti quando mi è stata introdotta la complessità, poiché è abbastanza difficile (almeno inizialmente) avvolgere la testa sul fatto che un problema come il 3-SAT è "altrettanto difficile" come Vertex-Cover.

L'esempio che ho trovato è stata una riduzione tra Vertex Cover (VC) e Independent Set (IND-SET), formulata come segue;

"Sei il direttore di un museo e hai il compito di assumere la sicurezza per sorvegliare i corridoi. Se posizionata in un incrocio di corridoi, una guardia può tenere d'occhio TUTTI i corridoi adiacenti a lui. Qual è il numero minimo di guardie necessarie per pattugliare l'intero museo? "

"Un po 'più tardi, alcuni bambini decidono di giocare a nascondino nel museo. Il loro obiettivo è nascondersi in modo tale che nessun altro bambino possa vederli. Tuttavia, le guardie non li vogliono correre in giro nel corridoi, quindi sono relegati a "nascondersi" negli incroci. Qual è il maggior numero di bambini che possono nascondersi nel museo senza vedersi? "

VCPIND-SET

sol=(V,E)SV VS indica la differenza impostata).

SVSsol


Mentre capisco la motivazione dietro l'esempio (molto bello), penso che in HS inizierei con le riduzioni di Turing, che sono molto più intuitive. Inoltre, vorrei iniziare con un problema in cui l'input deve essere realmente manipolato e non solo una modifica dei parametri. Ad esempio, vorrei iniziare con CLioQUEpioND-SET

per quanto riguarda le riduzioni, la prova dell'esistenza di una macchina di turing universale è una strada da percorrere e probabilmente comprensibile per i liceali avanzati ... [nota che ci sono molti video lego TM, alcuni anche da ricercatori CS ...] anche, forse la tseitina si trasforma ?
vzn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.