Hai bisogno di pensieri sul curriculum di un corso per un programmatore entry-level [chiuso]

3

Mi piacerebbe conoscere i tuoi pensieri su un curriculum che sarà sviluppato per le persone che vogliono iniziare nel campo della programmazione. L'obiettivo del corso è quello di aiutare gli studenti a garantire che gli studenti abbiano una comprensione della teoria e delle abilità richieste per essere un programmatore e abbiano competenze sufficienti per ottenere posti di lavoro di livello iniziale dopo la laurea.

Curriculum è:

  • 400 ore di istruzione oltre allo studio autonomo.

  • 40 ore di pratica

1. Fondazione

a. Chiarezza

b. Orientamento ai dettagli

c. Comunicazione

d. Compartimentazione / astrazione

e. Digitando

f. Memoria

2. Teoria

a. Analisi lessicale

b. Analisi

c. Ottimizzazione

d. Pensiero gerarchico

e. Ambito di applicazione

f. Digita i sistemi

3. Informatica

a. Struttura dei dati (ad esempio ordinamento, ricerca, struttura dati trasversale)

b. Ricorsione

c. Strutture linguistiche (es. Array, liste collegate, dizionari, ecc.)

4. Architettura dei sistemi

5. Teoria del sistema operativo

a. POSIX

b. IO

c. Allocazione di memoria

6. Programmazione orientata agli oggetti

a. Java

b. PL / SQL

Mi piacerebbe sapere:

  1. Il curriculum di cui sopra è chiaramente definito? Altrimenti, come sarebbe meglio cambiarlo?

  2. Ci sono dei componenti cruciali che vengono persi dallo schema sopra?

  3. I componenti dovrebbero essere rimossi dal profilo precedente (considerando la timeline)? Forse è troppo dettagliato in determinati punti e non è in equilibrio con il resto del contenuto?

posta Rubinator 05.07.2013 - 18:16
fonte

5 risposte

3

Hai esaminato le raccomandazioni del Curriculum ACM ?

ACM. l'Association for Computing Machinery, è la società professionale per i software dei computer. Stavano pensando a cosa doveva essere insegnato, in quale ordine, con quale accento, per decenni.

    
risposta data 06.07.2013 - 00:11
fonte
3

Penso che questo sia un ottimo inizio.

Con alcune modifiche. La tua sezione di base include elementi come la gestione della memoria e l'astrazione. Nella mia esperienza questi sono meglio gestiti da programmatori che hanno già un po 'di esperienza: a) scrivere programmi e b) comprendere l'architettura delle macchine che eseguono i loro programmi. Inoltre, questo tipo di istruzione è gestito al meglio con linguaggi di livello inferiore come C oc I daresay ASM. Suggerirei di trasferirli nell'attuale fase di Computer Science perché a quel punto alcune competenze saranno già state ottenute e sarà possibile concentrarsi maggiormente su dettagli minuti e astratti come la gestione della memoria.

Lo stesso vale per l'analisi lessicale e presumibilmente un po 'di studio sui compilatori e la teoria del linguaggio. Questi concetti dovrebbero essere trattati un po 'più tardi.

A proposito, in termini di utilizzo della lingua, penso che le basi dovrebbero essere insegnate in qualcosa come pitone o rubino. Facile da usare, tipizzato dinamicamente e con una sintassi e una struttura che generalmente riflette il pensiero umano. link

Per le cose più pesanti come POSIX, Strutture dati / Algoritmi penso che la tua unica scelta seria sia C.

L'orientamento degli oggetti può essere fatto in java, ma oggigiorno penso che sia più lungimirante pensare a gestirlo in python. O se sei veramente sanguinante, magari prova Go.

Penso che sia importante includere anche alcune cose sulla teoria dei database. Come i linguaggi relazionali e la teoria della dipendenza.

In breve, ci sono alcune cose che penso ti manchi, ma hai un buon inizio.

    
risposta data 05.07.2013 - 18:48
fonte
1

Sembra che tu abbia delle cose fantastiche in quella lista. A molte persone potrebbe non piacere la teoria, ma sono davvero d'accordo sul fatto che ti rende un programmatore migliore per capire i blocchi fondamentali delle lingue.

Ecco alcuni altri elementi che considero essenziali per i programmatori entry-level per avere almeno una certa esposizione:

  1. Test
  2. Debug
  3. materiale web (HTTP, applicazioni Web, ecc.)
risposta data 05.07.2013 - 18:35
fonte
1

Metterei la "Programmazione orientata agli oggetti" prima della "Computer Science" in modo che i concetti di quest'ultima possano essere effettivamente elaborati su qualcosa senza presupporre che uno sia già ben informato in un linguaggio di programmazione.

Il test è una grande omissione qui. La scatola nera, la scatola bianca e il collaudo delle unità dovrebbero essere coperti come parte di ciò che gli sviluppatori dovrebbero sapere e comprendere nell'ambito della portata più ampia delle cose.

Il SDLC e metodologie come Agile e Waterfall sarebbero anche le cose che ti suggerirei di coprire all'inizio in termini di come vengono realizzati i progetti e come vanno le cose nell'industria. Un po 'di ITIL può essere utile per aiutare a illustrare come vengono gestiti alcuni dei processi più grandi come la gestione dei cambiamenti e la gestione degli incidenti in quanto ciò potrebbe verificarsi nel settore.

    
risposta data 05.07.2013 - 18:39
fonte
1

Questo è un buon post. Una cosa che incoraggerei sarebbe se possibile, avere un Come implementare o pensare a un problema. Può dare loro determinati scenari e spiegare perché prenderebbe l'approccio A piuttosto che l'approccio B. Alcuni esempi come questi, aiuterebbero sicuramente a chiarire i concetti e a chiarire i concetti.

    
risposta data 05.07.2013 - 18:51
fonte

Leggi altre domande sui tag