Scopri il calcolo di base per tutte le età [facile e veloce]

Esistono due tipi di ingegneri del software : quelli che comprendono abbastanza bene l’informatica per eseguire lavori stimolanti e innovativi e quelli che semplicemente gestiscono perché hanno familiarità con alcuni strumenti di alto livello.

Entrambi si definiscono ingegneri del software ed entrambi tendono a guadagnare stipendi simili nelle loro prime carriere.

Ma gli ingegneri di tipo 1 diventano più soddisfacenti e pagano meglio nel tempo.

Che si tratti di un prezioso lavoro commerciale o di progetti innovativi open source, leadership tecnica o contributi individuali di alta qualità.

programmazione

La maggior parte dei programmi CS pre-laurea inizia con una “introduzione” alla programmazione informatica.

Le migliori versioni di questi corsi sono rivolte non solo ai principianti , ma anche a coloro che hanno perso benefici concetti e modelli di programmazione mentre imparavano a programmare.

Architettura del computer

L’architettura del computer, a volte chiamata “sistemi informatici” o “organizzazione del computer”, è una prima occhiata importante al calcolo sotto la superficie del software. Nella nostra esperienza, è l’area più trascurata tra gli ingegneri del software autodidatta.

Algoritmi e strutture dati

Siamo d’accordo con decenni di saggezza comune che la familiarità con algoritmi e strutture dati comuni è uno degli aspetti più potenti dell’educazione informatica.

Questo è anche un ottimo posto per allenare le abilità generali di problem solving , che saranno premiate in qualsiasi altra area di studio.

Scopri il calcolo di base per tutte le età [facile e veloce] 1

Matematica per l’informatica

L’area più rilevante della matematica per CS è generalmente definita “matematica discreta”, dove “discreta” è l’opposto di “continuo” ed è una raccolta di argomenti interessanti di matematica applicata al di fuori del calcolo.

Data la definizione vaga, non ha senso cercare di coprire l’intera estensione della “matematica discreta” . Un obiettivo più realistico è quello di costruire una comprensione funzionale della logica.

Combinatoria e probabilità, teoria degli insiemi, teoria dei grafi e un po ‘della teoria numerica che informa la crittografia.

L’algebra lineare è un’altra area di studio che vale la pena , data la sua importanza nella computer grafica e nell’apprendimento automatico.

Sistemi operativi

Un modo eccellente per consolidare la comprensione dei sistemi operativi è leggere il codice di un piccolo kernel e aggiungere funzionalità.

Un’ottima opzione è xv6, una porta Unix V6 per ANSI C e x86 mantenuta per un corso al MIT. OSTEP ha un’appendice di potenziali laboratori xv6 pieni di grandi idee per potenziali progetti.

Reti di computer

Lo studio delle reti beneficia più dei progetti che di piccoli esercizi. Alcuni possibili progetti sono: un server HTTP.

Un’applicazione chat basata su UDP, un mini stack TCP , un proxy o un bilanciamento del carico e una tabella hash distribuita.

Basi di dati

È difficile consolidare la teoria dei database senza scrivere una buona quantità di codice. Gli studenti di CS 186 aggiungono funzionalità a Spark, che è un progetto ragionevole, ma suggeriamo semplicemente di scrivere da zero un semplice sistema di gestione di database relazionali.

Non sarà ricco di funzionalità, ovviamente, ma anche scrivere la versione più rudimentale di ogni aspetto di un tipico RDBMS sarà illuminante.

Lingue e compilatori

La maggior parte dei programmatori impara le lingue, mentre la maggior parte degli informatici impara le lingue.

Ciò offre allo scienziato informatico un chiaro vantaggio rispetto al programmatore , anche nel campo della programmazione le sue conoscenze sono generalizzate.

Essere in grado di comprendere il funzionamento di una nuova lingua in un modo più profondo e più veloce di quelli che hanno semplicemente imparato lingue specifiche.

 

Potrebbe interessarti

Lascia un commento