2009-02-12 10 views
8

Questo semestre sto insegnando un corso presso un'università locale. Finora, ho chiesto agli studenti di consegnare i loro incarichi di programmazione mandandoli via email. Ma ci sono un sacco di problemi quando si estrae 20 soluzioni dalle e-mail.Come utilizzare gli strumenti di controllo del codice sorgente per fare in modo che gli studenti svolgano incarichi

Qualcuno ha mai usato uno strumento di controllo del codice sorgente per far girare gli studenti nei progetti? Cosa hai usato e come è stato impostato?

+0

Idea interessante. Non sono sicuro che funzioni, ma insegna una lezione preziosa. –

risposta

5

Alla mia università, la scuola di Informatica e Scienze dell'Informazione gestisce un server CVS studente. Ogni soggetto (che sceglie di usarlo) ottiene un deposito, con ogni studente iscritto nell'argomento ottenendo una cartella in là. Gli account admin ottengono ovviamente l'accesso all'intero lotto, mentre ogni studente può solo effettuare il checkout della propria cartella.

Per esempio, prendiamo il soggetto Sistemi Operativi (ho insegnato in passato):

/cis_os_2009 
    |-studentID1 
      |-assignment1 
      |-assignment2 
      |-prac1 
    |-studentID2 
    |-etc 

Nelle specifiche di assegnazione che diamo istruzioni per la presentazione delle assegnazioni.

Mi piace il sistema di invio CVS meglio delle e-mail e del sistema di invio web utilizzato da altre aree. Insegna agli studenti come utilizzare un sistema di controllo della versione. Puoi quasi completamente fregare la scusa "la mia chiavetta USB è stata persa/rotta/rubata" per gli studenti che non consegnano incarichi, dal momento che gli studenti dovrebbero fare regolari commit al repository (in alcuni soggetti, i voti vengono assegnati al corretto uso di CVS).

Lo svantaggio è che non si può presumere che gli studenti sapranno come usare CVS/SVN all'inizio del semestre. La maggior parte dei soggetti qui dedica la pratica della prima settimana a un tutorial CVS in modo che le persone possano assicurarsi che a) gli amministratori di sistema abbiano configurato correttamente i loro account eb) che possano aggiungere e impegnare i file correttamente. Significa anche che devi essere un po 'indulgente per le presentazioni del primo compito.

Tutto ciò che devi fare per il contrassegno è il checkout del repository così come esisteva alla data/ora di scadenza dell'assegnazione. Se si eseguono script per l'automazione parziale della marcatura del repository, è molto semplice. Sai esattamente quale dovrebbe essere la struttura della cartella e dove dovrebbero essere collocati tutti i file. Nelle materie che ho insegnato, abbiamo un file di marchi con una sintesi dei voti degli studenti e commenti sul motivo per cui sono stati detratti i voti. Controlliamo questo file nel repository e gli studenti possono ottenere immediatamente i loro voti facendo un aggiornamento cvs.

1

Penso che un modo comune sia creare directory per i caricamenti ftp. Alcuni lavori cron possono verificare la presenza di richieste e avviare automaticamente make e quindi eseguire test.

L'utilizzo del controllo del codice sorgente sembra molto impegnativo, ma è possibile farlo.

Quando ho ascoltato un podcast di Berkeley CS per un corso che stavano usando qualcosa chiama "autograder" = molto probabilmente una cosa interna che consente l'invio e quindi esegue build e test.

come su qui:

http://www.users.muohio.edu/helmicmt/autograder/index.php

http://prisms.cs.umass.edu/mcorner/autograder

1

Poiché il codice google supporta Mercurial ora, questo dovrebbe essere un po 'fattibile usando il codice google, o usando http://bitbucket.org per ospitare il codice in modo open source. Penso che sarebbe un ottimo strumento per chiunque imparare, uno strumento di controllo della versione distribuito è così essenziale per facilitare lo sviluppo.

Consiglierei git, ma è un po 'troppo pesante nel reparto della curva di apprendimento.

0

Quest'anno ho intenzione di provare a utilizzare Google Documenti nella mia classe Computer Science AP. Sembra che funzionerà davvero bene.

Chiederò a ogni studente di registrarsi per un account Google e fare in modo che copino il proprio codice sorgente in un nuovo documento Google, assicurandosi che utilizzino un carattere a spaziatura fissa. Quindi condividono il documento con l'account Google che ho creato da solo.

Google Documenti mi consente di scrivere commenti direttamente nei loro documenti, che saranno in grado di vedere al prossimo accesso. Creerò una cartella diversa per ciascun compito per mantenere le cose organizzate.

Non sono sicuro che questa sia la soluzione MIGLIORE, ma è gratuita, e WAY è meglio che lo studente stampi tutto come facevo l'anno scorso.

1

Non l'ho provato in nessun corso (non insegno in questi giorni) ma ho usato un setup SC mentre supervisionavo gli studenti facendo il loro anno-in-lavoro al lavoro, con effetto simile.

Subversion sarebbe la mia scelta; CVS è profondamente imperfetto e Git ha una brutta curva di apprendimento per il principiante. Siamo un negozio Win in modo che gli studenti possano utilizzare TortoiseSVN/AnkhSVN per l'integrazione della GUI; ovviamente questo potrebbe non essere vero nel tuo caso.

Avrei creato un singolo repository per corso, con una cartella al livello di base per ogni studente e la consueta disposizione per i repo al suo interno. In SVN è molto facile impostare i permessi di accesso per cartella nella configurazione del repository, in modo che gli studenti possano solo r/w nella propria directory, ma è possibile vedere tutto.

Problemi correlati