Come posso avviare una community di sviluppo software nella mia scuola?


14

Sono uno studente dell'Università della Florida del sud che è frustrato per l'ambiente educativo nel programma di informatica. In questo momento, sto prendendo "Program Design". Dovrei imparare come organizzare il mio codice sorgente in funzioni e moduli al fine di rendere i miei programmi leggibili e mantenibili; invece, sto imparando le matrici e la ricorsione in C. Il prossimo semestre, devo prendere "Design orientato agli oggetti", che viene insegnato attraverso C ++ ( shudder .)

Due anni fa, mi sono innamorato della programmazione e da allora ho imparato il più possibile. La prospettiva di prendere un'altra classe C ++ mi annoia quasi fino alle lacrime. Per questo motivo, ho pensato di aprire un club di programmazione per incontrare studenti altrettanto ambiziosi, imparare nuove lingue, discutere argomenti di sviluppo software e lavorare con altri studenti sviluppatori.

Tuttavia, sto cominciando a rendermi conto che potrebbero non esserci altri studenti che condividono la mia esperienza di sviluppo software. Non è per mancanza di motivazione ma per mancanza di opportunità: conosco solo un'altra classe di programmazione ("Linguaggi di programmazione") e nessuna lezione sullo sviluppo di software nel mondo reale. Tutti gli altri hanno esperienza nella scrittura di script banali in C e C ++.

Mi sono reso conto che se voglio lavorare con altri sviluppatori di software per studenti, dovrò addestrarli da solo. Ora sto progettando di trasformare il club in un bootcamp di sviluppo software, insegnando ai membri come sviluppare software con strumenti e linguaggi moderni. Ovviamente, l'avvio di un corso di sviluppo software non ufficiale è un compito monumentale con molti possibili approcci. La mia domanda per te, caro lettore, è

Qual è il mio piano di attacco?

Dovrei

  • tenere una lezione al club, cercando di bilanciare il lavoro del club con i compiti?
  • chiedere alla facoltà di CS di insegnare su argomenti di loro competenza che potrebbero essere meno rilevanti per i membri?
  • provare a trovare uno sviluppatore simpatico ed esperto all'interno o all'esterno della scuola che possa condividere il mio carico di lavoro?
  • mostrare lezioni video (da MIT OpenCourseWare , Google Tech Talks , ecc.)?
  • tenere seminari di programmazione pratica?
  • assegnare i compiti?
  • Fai qualcos'altro?

3
Perché rabbrividisci quando OOP viene insegnato tramite C ++? Ti senti semplicemente a disagio a gestire lingue di alto livello? In tal caso, come ti aspetti di imparare OOP?
Cam

4
@Evan: Ad essere sinceri, se pensi che il C ++ sia un linguaggio di basso livello, un corso C ++ sarebbe perfetto per te. Imparerai molto. Il C ++ può sembrare inizialmente di basso livello ai principianti perché offre funzionalità di basso livello, ma sicuramente non è necessario utilizzarle. In effetti, la maggior parte delle volte, utilizzerai l'STL e tutte le sue funzionalità OOP di alto livello.
Cam

10
Il C ++ è di basso livello rispetto, per esempio, a Java, Ruby, Javascript, C #, ecc. È di alto livello rispetto a molti altri linguaggi. Sembra una discussione inutile.
Fishtoaster,

2
@fishtoaster: non direi che c ++ è di basso livello rispetto a java e c #. È almeno di alto livello quanto quelle lingue (non so molto dell'altro). C'è solo l'ulteriore vantaggio che può anche essere di basso livello in modo da ottenere il meglio da entrambi.
n1ckp,

1
@ n1ck: naturalmente i puntatori (so che ce li ha C # ma il loro uso è raro), gestione manuale della memoria, niente lambda (non sono sicuro del nome C #, python usa lambda), nessun foreach nativo, uno standard molto più piccolo libreria, manipolazione dei bit più frequente, ricompilazione necessaria per piattaforme diverse, ecc. Non è necessario che l'assembly sia di livello inferiore rispetto a questi due.
Macha,

Risposte:


20

Francamente tutto il tuo atteggiamento mi riguarda. Non hai nemmeno riunito il gruppo e già pensi che sarai solo uno che ha qualche conoscenza da impartire e quello che dovrebbe decidere cosa farà il gruppo.

La scommessa migliore è riunire il gruppo iniziale e, come gruppo, fare un brainstorming su ciò che vogliono fare. Quello che vuoi fare personalmente è irrilevante in termini di ciò che il gruppo vuole fare. Decidendo cosa fare senza l'input degli altri membri del gruppo prima del primo incontro, ti imbatterai in un arrogante idiota con cui non vorrei lavorare volontariamente. Quindi uccideresti il ​​gruppo prima che iniziasse.


Hai assolutamente ragione; Non devo formulare e attuare da solo un piano generale incentrato sul club. Tuttavia, ho bisogno di idee per le attività e gli incontri del club da discutere con il resto del club.
Evan Kroske,

5

Poiché tutti nel tuo club vengono volontariamente, devi renderlo interessante e motivante. E i compiti a casa non sono esattamente motivanti.

Insegnare a qualcuno è difficile, ma perché non provare a insegnare a mani basse con un obiettivo alla fine? In sostanza, inizialmente si incontrano tutti e si crea un progetto di gruppo e una lingua. Il progetto deve essere interessante ed essere in grado di mostrare progressi visibili ma non troppo difficili. Dopo aver perfezionato il linguaggio, insegnerai loro le basi (sintassi, pacchetti / spazi dei nomi, classi, digitazione statica / dinamica, ecc.). Quindi dai loro risorse (libri, tutorial online, documentazione online), un modo semplice per metterti in contatto con te e una parte specifica del progetto su cui lavorare. Ogni persona lavora quindi al progetto nel tempo libero, consultando la documentazione e te secondo necessità.

Qual è il vantaggio di questo processo?

  • Le persone non si annoiano ad ascoltarti o a qualcun altro a parlare di qualcosa ogni singolo incontro
  • Le persone imparano come auto-insegnare, un'abilità molto importante nel mondo reale
  • Non ti stai impegnando troppo perché non sei la sola risorsa di conoscenza
  • Non devi conoscere l'intera lingua prima di poter insegnare poiché devi solo introdurli alla lingua. E quando hanno bisogno di chiederti qualcosa, puoi cercarla rapidamente. Tuttavia, devi essere un po 'più avanti rispetto a tutti gli altri, poiché alcune cose richiedono sapere quali sono i 5 passi avanti
  • Stai creando qualcosa, che tende a motivare le persone

L'unico modo per vedere se funziona è provarlo.


Un progetto di gruppo sarebbe una buona idea, se potessi mantenere l'iscrizione al club inferiore a dieci studenti. Oltre questo, le squadre iniziano a diventare ingombranti. Tuttavia, non posso ottenere il sostegno universitario se impedisco agli studenti di unirsi al club e sono certo che più di 10 studenti saranno interessati a unirsi al club. Il nostro club di hacking ha sempre più di trenta studenti nelle sue riunioni settimanali.
Evan Kroske,

1
Quindi più di un progetto? Cerca di trovare interessi comuni tra tutti i membri del gruppo. Prima incontro sondaggio interessi personali e poi provare a elaborare progetti che ruotano attorno a quei progetti?
Chris,

4

Guardando il diagramma di flusso del corso per il tuo maggiore , stai davvero fraintendendo cosa aspettarti in diverse classi di un maggiore in Informatica.

Le lezioni di cui stai parlando sono lezioni introduttive che hanno introdotto gli studenti a vari concetti di base nella codifica. Sembra "Concetti di programmazione" un'introduzione alla professione con panoramiche di una settimana di tutte le aree di base dell'informatica, senza una vera programmazione. Da lì, è NORMALE tenere un corso introduttivo in C, e un altro corso introduttivo in C ++ è NORMALE per una specializzazione in Informatica. Potresti entrare nel programma con qualche esperienza di programmazione, ma la maggior parte delle persone non lo è. Il programma deve insegnareconcetti come la ricorsione e come scrivere classi, sovraccarico dell'operatore, modelli e tutto il resto (per non parlare dell'insegnamento di variabili, for-loop, if-statement, ecc ...), quindi ci sono due classi fondamentalmente progettate per ti insegnano come programmare in un linguaggio di programmazione. E di solito hanno i tipi di nomi fuorvianti che fanno le lezioni della tua università. Le lezioni che insegnano il livello di organizzazione desiderato sono generalmente denominate "Software Engineering" o "Design Patterns". Il primo è in genere un requisito e il secondo è in genere un elettivo (forse a livello di laurea), ma entrambi possono essere elettivi.

C'è un dibattito accademico e industriale sul fatto che il curriculum di Informatica si concentri sull'organizzazione del software quanto dovrebbe, se il maggiore debba essere riorganizzato e se l'Informatica e l'Ingegneria del Software siano diverse major, ma per ora il tuo programma di Informatica è NORMALE .

(E rimani lì - in un altro semestre o due, arriverai a lezioni più impegnative che ti insegnano cose che non hai già insegnato a te stesso.)


Non sono soddisfatto del "normale". Voglio lasciare il college con un'istruzione di livello mondiale nello sviluppo di software e sono disposto a lavorare (duramente) per raggiungere questo obiettivo. Avevo intenzione di trasferirmi al MIT anziché alla USF, quindi uso il programma di informatica e ingegneria del MIT come educazione CS ideale.
Evan Kroske,

@Evan @Ken heh. Quindi il mio college non lo considero normale. Introduzione alle applicazioni informatiche (ad es. Come si usa Word) -> Logica del computer e algoritmi (ad es. Diagramma di flusso e logica booleana. In realtà nessun algoritmo) -> Programmazione in C ++ (sintassi, OOP, le basi) -> Avanzate Programmazione in C ++ (algoritmi, ricorsione, puntatori) -> Programmazione in Java (stessa cosa del C ++ di base) -> Programmazione in Cobol (Non sono ancora andata così lontano, ma Dio lo
temo

1

Che dire delle competizioni di programmazione? Anche qualcosa come Perl Golf (o PHP Golf), dove hai persone (o squadre) che lavorano per risolvere un problema usando la minima quantità di codice possibile? È un ottimo modo per saperne di più sulle lingue e le competizioni che rendono sempre le cose interessanti.

Ovviamente dovresti offrire più di semplici competizioni, ma sono abbastanza facili da organizzare e mi sono sempre piaciute.


1

Hai ragione, hai bisogno di una struttura; vuoi forzare te stesso e gli altri ad imparare, e non semplicemente sederti a chiacchierare di software / lamentele sulla scelta del corso scadente. Ma non sono sicuro di trattare questo come una lezione con te in quanto il suo insegnante è la strada da percorrere; non sei ancora un esperto e ci sei anche tu per imparare qualcosa.

Che ne dici di organizzare il club attorno a progetti software? Non alcuni programmi di compiti a casa giocattolo, ma qualcosa che pensi che potresti effettivamente trovare utile. (Nota che "marginalmente utile" si qualifica ancora come "utile"; stai cercando di imparare facendo, non hai trovato una startup. :-)) Se il club ha abbastanza persone per più squadre, forma più squadre. Il team decide quale lingua desidera utilizzare, quali sono le specifiche, come il lavoro deve essere diviso, ecc., Ecc., E ci lavora individualmente nel proprio tempo. Quindi, durante la riunione settimanale del club, discuterai di come andranno a faccia a faccia, dove si trovano i blocchi stradali, cose ordinate che hai imparato, ecc.

Mi piace anche l'idea di coinvolgere docenti ospiti, siano essi docenti, professionisti o video che tu o qualcun altro pensi valga la pena condividere. Quindi, potresti organizzare un incontro notturno come questo:

  1. Conferenza degli ospiti su un argomento software di qualcuno che lo conosce bene.
  2. Sessione di domande e risposte sulla conferenza (si spera con il docente che partecipa, ma proprio tra di voi per i video).
  3. Dividi in team di progetto, fai cose di progetto.

Ci vorrà una serata e lo riempirà di bontà che migliora la conoscenza. Fiduciosamente.

Indipendentemente da ciò, ti auguro buona fortuna con questo progetto. Quando lo toglierai da terra, spero che torni qui e ci dica come sta andando.


1

Il progetto di gruppo è un'ottima idea. Soprattutto se il progetto è qualcosa che può aiutare l'università o i tuoi compagni di classe.

Mi sono unito a un gruppo mentre ero al college che stava lavorando a progetti per studenti.
Il progetto più popolare è stato un tour virtuale a 360 gradi del campus.
Abbiamo acquistato l'attrezzatura necessaria e abbiamo iniziato a scattare foto nel campus. Quindi abbiamo creato un sito Web per ospitare il tour, capito l'hosting e pubblicato sul sito web dell'università per potenziali studenti. Questo progetto ha riguardato più di semplici attività di programmazione e ha interessato anche i non programmatori.

Prova a identificare un nuovo sito Web o un'applicazione che non solo utilizzeresti, ma tutti nel campus vorrebbero utilizzare. Penso che sia più facile e più divertente imparare se hai in mente un obiettivo.


Mi piace molto questa idea; ci sono molti modi in cui il mio nuovo club potrebbe aggiungere o migliorare i sistemi IT del college. Per curiosità, dove sei andato al college?
Evan Kroske,

Clarion University in Pennsylvania. Sono anche andato a un'intervista una volta in cui l'intervistatore ha detto di aver usato il tour per la ricerca del college di suo figlio. E 'stato molto bello.
Todd Bumbarger,

1

Se questa sarà un'attività extracurricolare, non fare i compiti. Questo è solo zoppo.

Probabilmente potresti ottenere qualcosa di interessante semplicemente avviando un gruppo di github e facendo poster / e-mail nella tua scuola (immagino che i bambini oggigiorno usino anche Facebook e Twitter? Potrebbe essere una buona idea colpire anche questi punti). Quando ottieni un gruppo di 5-6 persone che sono veramente interessate insieme, decidi su un progetto e semplicemente lavoraci.

Se non c'è interesse, è abbastanza ridicolmente facile aderire a un progetto open source se sei abbastanza abile. Semplice come borsare qualcosa che ti interessa su github e iniziare a parlare con gli sviluppatori.

Il vantaggio che hai non della generazione precedente è che non è affatto difficile collegarsi ai programmatori al tuo livello e nella tua lingua, pur essendo molto disparati geograficamente. E non intendo solo inviare un'e-mail. Skype / iChat / Ventrilo semplificano le conferenze vocali, strumenti come git / mercurial (e le pagine del progetto associate online) semplificano la codifica come gruppo anche se si è dalla parte opposta dell'Atlantico. Non c'è davvero motivo di non codificare socialmente in questi giorni, se è quello che vuoi fare.

Infine, non prendere l'abitudine di giudicare le persone in base alle lingue che conoscono / vogliono conoscere. È una trappola facile cadere quando sei l'unico Smalltalker in un branco di persone che pensa che il C ++ rappresenti il ​​limite della programmazione, ma non ti porterà molti amici e ti darà una propensione contro alcuni strumenti. Ho incontrato hacker che sono a miglia di distanza davanti a me in abilità ed esperienza, che hanno usato LISP, Perl e C nello stesso progetto . Le persone al vertice dell'heap di sviluppatori professionisti tendono a non preoccuparsi molto del livello dei loro strumenti fintanto che svolgono il lavoro.


1

Sembra un'opportunità di networking, sono sicuro che ci sono un certo numero di studenti interessati a programmare con un livello simile di esperienza / formazione ... non li stai trovando ...

Hai partecipato a uno dei Code Camp (formazione gratuita per sviluppatori) nell'area di Tampa Bay o sei entrato in uno dei gruppi di utenti di programmazione locali?

Entrambe queste risorse ti offriranno opportunità di networking. E invece di sentirti come se dovessi formare i tuoi compagni, sarai in grado di invitare i tuoi amici insieme a te e poi discutere di ciò che è stato coperto.

Avrai anche accesso a persone che stanno programmando una carriera e possono avere un'idea di quali tipi di situazioni potresti incontrare nel "mondo reale".

Dopo aver esplorato queste risorse locali, potresti ancora scoprire l'opportunità di condividere le tue conoscenze facendo le tue presentazioni, il che è fantastico. Condividere ciò che hai appreso con un gruppo di utenti o come relatore di una presentazione di un campo di codice è un buon modo per ottenere feedback su ciò che hai imparato e ti apre anche per saperne di più.

Sono cresciuto nella zona di Tampa Bay e ho partecipato a molti eventi sponsorizzati da Microsoft gratuiti, il tuo gruppo di utenti locali dovrebbe avere informazioni su come partecipare anche a questi eventi.

Bene, questa è stata una risposta prolissa ...

Il prossimo Code Camp a Tampa è il 13 novembre 2010 secondo il sito Web tampacodecamp.

Ecco un link al tuo INETA / gruppo di utenti di programmazione locale:

http://www.tampadev.org/

(Sono nuovo di questo gruppo ed è stato in grado di includere solo un link.)


1

Che ne dici di trovare un progetto open source (o più di uno) a cui il tuo gruppo è interessato a contribuire?

Penso che la sfida più grande che probabilmente dovrai affrontare è che mentre scrivere il codice è divertente, è tutto l'amministratore circostante ecc. Che può trasformarlo rapidamente in un'esperienza dolorosa. Se riesci a trovare un progetto open source esistente, dovresti disporre almeno del framework di supporto.

L'open source ti porterà ad alcune buone abitudini, e anche se sarai un po 'bagnato dietro le orecchie rispetto ad alcuni dei collaboratori avrai un grande vantaggio rispetto ad altre persone, sarai tutti nella stessa posizione e in grado di intrattenere conversazioni con i membri del team, che di solito è uno dei maggiori problemi con il lavoro della comunità open source ...

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.