Sono in un corso CS. Su quale argomento di programmazione dovrei concentrarmi? [chiuso]

StackOverflow https://stackoverflow.com/questions/641553

  •  22-07-2019
  •  | 
  •  

Domanda

Cosa è più importante in questo momento? So di poter acquisire esperienza di programmazione in un secondo momento. Quale delle seguenti cose dovrei studiare per diventare un buon programmatore o analista dopo la laurea?

  • strutture di dati
  • algoritmi
  • ingegneria del software
  • aspetti di basso livello
  • modelli di progettazione e analisi OO

[Edit]

Grazie per le risposte. Vorrei includere altri argomenti importanti che fungano da riferimento per altri studenti:

  • programmazione simultanea
  • sistemi operativi

[/ Modifica]

Nota: penso che il primo elemento dell'elenco sarà impara l'inglese

È stato utile?

Soluzione

Tutti loro. Tutto nella tua lista è importante.

Altri suggerimenti

Personalmente studierei quanto segue:

  • Un linguaggio simile a C (C / C / C ++ / C # / Java)
  • Un linguaggio di scripting
  • Un linguaggio di programmazione funzionale
    • Soprattutto dal momento che ci stiamo spostando in un mondo multiplo, ciò sarà utile poiché consente il parallelismo oltre ciò che altre lingue possono attualmente fare. Intere infrastrutture di telecomunicazione sono gestite su Erlang, ad esempio.
  • strutture di dati
    • Li userai ovunque. Sono agnostici nel linguaggio di programmazione, ne avrai bisogno per tutta la tua carriera
  • Algoritmi
    • Questi molto probabilmente andranno con l'elemento sopra menzionato. Alcune strutture di dati hanno determinati algoritmi per accedervi.
  • Modelli di design
    • Sì, ovviamente imparano i vari modelli di progettazione, ma allo stesso tempo sanno che non sono tutti alla fine tutti nell'ingegneria del software.

Anche tutto il resto sulla tua lista è molto importante, quindi mentre suggerisco gli elementi sopra elencati, non sono più importanti degli altri che hai elencato. Questi sono gli elementi che desidero uscire dalla mia scuola e sono triste nel dire che non li ho offerti come lezioni, ma ho dovuto impararli da solo insieme a tutti gli altri miei corsi.

Penso che tu sia già sulla buona strada dato che non hai menzionato alcuna lingua specifica nella tua lista. Penso che sia l'errore numero uno fatto dagli studenti CS - concentrarsi su una lingua o un paradigma.

L'intero elenco è molto importante; l'unica cosa che aggiungerei è uno studio abbastanza approfondito del multithreading. In futuro diventerà sempre più importante: ( Articolo Ars-Technica )

Sembra opportuno collegare Joel qui ;-)

http://www.joelonsoftware.com/articles/CollegeAdvice.html

Tutti sono obbligatori !!

Cosa stai pensando? Mi aspettavo che sceglieresti la concentrazione (ad esempio, design del gioco vs sicurezza e crittografia).

Non puoi scegliere tra " algoritmi, oop, datastructures, ingegneria del software, ecc. " ;. Queste sono le basi! Devi impararli tutti.

Vorrei iniziare con strutture di dati e algoritmi, senza contestare lì. Il design OO è utile. Un po 'di basso livello, sì. L'ingegneria S / W potrebbe essere saltata (va bene con granello di sale).

Inoltre, ecco alcune idee:

  • basi db relazionali (non solo " come usare l'oracolo " ;, ma algebra relazionale effettiva)
  • sistemi operativi
  • compilatori + interpreti
  • qualcosa nell'IR (/ algoritmi genetici / reti neurali)

Sì, sono influenzato da "hard core" Roba CS. Lavori impegnativi, processi extra pesanti e altre stronzate di PM che imparerai presto nell'industria, senza bisogno di sprecare le tue risorse educative su di esse. : -)

Vediamo ..

Dovrai comprendere la complessità, le strutture dati e gli algoritmi, in modo da poter fare le scelte importanti. Sfortunatamente, dovrai REALMENTE comprendere questi argomenti e risolvere rompicapo complessi perché svolgono un ruolo molto più importante nelle interviste di lavoro rispetto al lavoro effettivo in seguito. Quindi, queste sono le cose più importanti su cui concentrarsi per motivi pratici.

L'ingegneria del software, i modelli di progettazione e l'analisi sono molto importanti (anche se sono di parte). Sfortunatamente, ad eccezione dei modelli di progettazione, non puoi davvero imparare questi argomenti senza esercitarti attivamente su grandi progetti. Concentrati sulla comprensione delle nozioni di programmazione orientata agli oggetti e della nozione di funzioni virtuali / associazione dinamica, poiché sono molto importanti e molte persone non le comprendono correttamente. Fai del tuo meglio per ottenere un buon tirocinio.

Tutte le cose che hai elencato sono componenti di base di una buona educazione informatica, anche se dovresti davvero aggiungere quanto segue:

  • Sistemi operativi
  • Rete
  • Matematica (corsi introduttivi su Discrete, Calculus, Algebra, Proofs, Stats)
  • Database
  • Fondazioni (automi finiti, espressioni regolari, macchine di Turing, ecc.)

Queste due liste insieme ti daranno una buona conoscenza di base di Informatica, dopo di che dovresti scegliere altri argomenti di specialità (quelli che ti interessano di più).

  • Intelligenza artificiale
  • Crypto / Sicurezza
  • Elaborazione / riconoscimento di immagini / segnali
  • I compilatori
  • Grafica
  • Game Design
  • ecc.

Scoprirai che una volta che inizierai ad approfondire un argomento, tutti quei corsi di base, compresa la matematica, inizieranno a entrare in gioco! Ad esempio, sto attualmente studiando il riconoscimento delle immagini e ho dovuto usare e comprendere elementi tratti da statistiche, intelligenza artificiale, calcolo, prove, algebra, algoritmi, strutture di dati, OOP, ecc.

Tutto sul tuo elenco è importante, ma hai anche bisogno del giusto atteggiamento. Devi approfondire abbastanza dettagli su come funziona ogni cosa che studi e sul perché sia ??stato fatto in questo modo, non solo per il compito in classe. Questo è ciò che ti darà davvero un vantaggio come futuro specialista.

  1. Sistemi multi threading e distribuiti.
  2. Come creare applicazioni intuitive con una bella interfaccia grafica.

Tutti questi sono molto buoni, ma gli algoritmi sono un buon punto di partenza. Forse dovresti anche prima esaminare un corso di matematica discreto per la teoria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top