Domanda:
Cosa rende difficile un Master in Informatica per qualcuno che non ha un background specifico ma 10 anni di esperienza come programmatore?
MNRC
2014-08-07 07:14:52 UTC
view on stackexchange narkive permalink

Mi sono iscritto al mio attuale Master in informatica lo scorso anno non avendo mai completato un solo corso di informatica all'università. Ho deciso di candidarmi perché 10 anni dopo il college ho avuto una carriera di successo come sviluppatore web front-end e ho pensato che sarebbe stato fantastico avere una laurea in modo da sembrare un programmatore più legittimo di quello che il mio B.A. di antropologia. grado potrebbe implicare. Avevo seguito diversi corsi di matematica e fisica all'università e andavo bene, quindi ho pensato che una laurea in informatica potesse essere gestibile.

Ora, è passato più di un anno dall'inizio del mio programma (frequento part-time) . Ho abbandonato una lezione di base in algoritmi di base nel mio primo semestre perché non riuscivo a capire gli algoritmi e ho deciso di iscrivermi allo stesso corso offerto quest'estate. Avevo sperato di fare bene quest'estate, ma sembra che se passassi sarei appena passato. Sembra che tutti stiano facendo molto meglio di me e possano risolvere i problemi più velocemente e in modo più accurato. Se fossi in me lasceresti il ​​programma? Non sono sicuro che sia:

  • mancanza di una formazione in informatica universitaria
  • il fatto che io sia uno studente più grande che ha quasi 40 anni
  • una mancanza di attitudine per questa materia

Qualsiasi pensiero di altri in informatica, ingegneria e scienze matematiche sarebbe molto apprezzato.

EDIT: Sono passati 7 mesi da quando ho pubblicato questo e ho capito il problema. Lo sviluppo web front-end francamente niente come l'informatica. Molti concetti nel mio corso di algoritmi di base richiedono una buona conoscenza della ricorsione, che non avevo prima di entrare nel programma. Tutta la programmazione che avevo fatto in passato era iterativa. Una volta che sono stato in grado di capire e (cosa più importante) applicare correttamente la ricorsione a tutto, dalle Torri di Hanoi alla programmazione dinamica, il corso sugli algoritmi è diventato molto più semplice. A chiunque inizi la scuola di specializzazione in informatica, non sottovalutare mai l'importanza della ricorsione! Anche se pensi di capirlo, mettiti alla prova con altri studenti per assicurarti che la tua comprensione sia solida!

Più in generale, il mio consiglio a chiunque inizi nel campo dell'informatica è di capire in cosa sei debole e di lavorare per diventare più forte. Questo può essere difficile da fare inizialmente se sei sopraffatto dal materiale e tutto sembra davvero difficile, ma parla con il tuo professore e chiedigli di aiutarti a identificare le tue aree di debolezza, non mollare mai e sarai in grado di padroneggiarlo presto il materiale.

A proposito, ho seguito un anno di corso di introduzione a CS per studenti senza esperienza in ingegneria / matematica, ma principalmente si è concentrato sulla programmazione orientata agli oggetti e ho sorvolato sulla ricorsione.

Hai iniziato il tuo programma frequentando corsi di informatica di livello universitario per aggiornarti o ti sei tuffato direttamente nei corsi di laurea? In quest'ultimo caso, penso che dovresti prima iscriverti ai corsi prerequisiti universitari necessari.
In qualità di antro major senza alcuna esperienza formale di informatica e minima esperienza di back-end, non sorprende che gli algos siano una sfida; è certamente una delle classi di base più matematicamente intensive nel tipico percorso MS (indovinare la grafica è un'elezione). Hai fatto meglio in altri corsi? Forse, se si tratta solo di algoritmi, devi andare in ufficio e stabilire un gruppo di supporto piuttosto che andare direttamente a smettere. Non hai mai specificato cosa hai provato a fare con gli algos, immagino, è quello che sto dicendo.
@rch Immagino che questo sia ciò che mi sconcerta: sono bravo in matematica. Ho finito il calcolo multivariabile e l'algebra lineare e non sono stati affatto un problema. Facevo matematica discreta e amavo le prove. Quindi, pensavo che gli algoritmi sarebbero stati un gioco da ragazzi, ma ho problemi. Usiamo il libro Cormen Leiserson Intro to Algorithms che è davvero difficile da capire, ma non ho trovato libri migliori di questo. Non riesco a capire equazioni ricorsive come il modo in cui costruisci T (n) = log (n) + O (1) da un algoritmo. A proposito, sono nella top 25 delle scuole degli Stati Uniti se questo è un indice di livello di difficoltà.
"Una laurea in scienze informatiche mi rende (sembro) un programmatore legittimo" - questo potrebbe essere l'errore principale proprio lì. CS (la scienza) e programmazione (il mestiere) hanno poco a che fare l'una con l'altra (anche se l'una o l'altra possono trarre vantaggio dall'altra). Detto questo, sono confuso che tu abbia problemi con gli algoritmi; questo è in genere l'argomento che viene più facile per i programmatori (beh, senza l'analisi formale). Cosa / come hai programmato?
@Raphael Ho programmato principalmente in javascript e questo potrebbe essere il motivo per cui sono così cattivo in questo. Ho parlato con studenti che hanno detto che non potevano superare il calcolo ma non avevano problemi con l'algoritmo. È strano. Nonostante la programmazione e il CS siano abbastanza indipendenti, sfortunatamente, i datori di lavoro si preoccupano molto di una laurea in CS. Molte aziende non guarderanno nemmeno il tuo curriculum se non ne hai uno.
@user3912481 Undergraduate CS consiste in genere in ~ 2 anni di teoria rigorosa e ~ 6 mesi di pratica. Nessuna esperienza lavorativa in nessun campo ti costringerà ad acquisire da solo la teoria (poco pratica e quasi mai applicata). Il programma del tuo master è una maratona a cui gli altri studenti hanno lavorato. Non starai al passo con nessuno sforzo a meno che non crei alcune basi (e puoi farlo o prendendo i corsi universitari di cui hai bisogno, o acquistando i migliori libri di teoria CS in circolazione e spingendoti in modo indipendente).
@MR: Ad essere onesti, quando dici "Sono bravo in matematica / fisica", l'impressione che ottengo è ** non ** * "Non ho avuto problemi con l'algebra lineare e il calcolo multivariabile" *. Questi sono * corsi introduttivi * di matematica richiesti per quasi tutti i principali che necessitano di qualsiasi tipo di matematica (incluso CS); * dovresti * fare abbastanza bene con loro. Hai preso lezioni oltre a quelle? Ad esempio, ti sei occupato di funzionali, meccanica lagrangiana e equazione di Eulero-Lagrange? O meccanica statistica? O hai visto l'aspettativa-massimizzazione in probabilità / statistiche?
(continua) ... Un * sacco * di concetti in matematica e scienze sono molto rilevanti per l'informatica, alcuni in modi non così ovvi - per esempio, i "funzionali" sono più o meno l'equivalente di "lambda "in informatica. Se hai già lavorato con i funzionali, potrebbe essere fattibile disegnare la connessione. Ma se tutto ciò che hai fatto è l'algebra lineare e il calcolo multivariabile, questo non ti renderà più facile imparare CS: quelli sono corsi piuttosto introduttivi anche per le major CS.
Beh, mi sono laureato in legge (quindi niente lezioni di matematica). Dato che lavoro con i computer e ho seguito un corso tecnico di elettronica, ho provato anche un MsC. È stato difficile, ma ho capito, ho migliorato le mie conoscenze e ora sto prendendo un dottorato di ricerca ... Ci vuole molto più impegno che se tu fossi laureato nella zona, ma non è impossibile.
@Mehrdad Ci sono molti livelli di "bravo in matematica" e uno può essere "bravo (abbastanza)" per quello che vuole fare senza essere l'equivalente di un B.S. o superiore in matematica. Ora ci sono campi che sono sempre meno utili per l'OP, l'algebra lineare e la matematica discreta aiuterebbero molto con l'informatica quindi il fatto che l'OP non abbia lottato con loro è un buon segno.
Nelle classi di ingegneria dei sistemi ci sono molti programmatori che sono più bravi di me nella programmazione, e io do calci alle sezioni probabilità e ottimizzazione. Il fatto che io sia "bravo in matematica" non mi rende un programmatore migliore (anche se aiuta), e la loro superiore esperienza di programmazione non sostituisce le abilità matematiche richieste.
@kleineg: Quello che sto cercando di dire è che in un campo come CS, "Sono bravo in matematica" ha un certo peso e significato molto * oltre * "Ho fatto bene in algebra lineare e calcolo multivariabile". Usando me stesso come esempio, sono abbastanza bravo in questi argomenti e sono stato anche bravo in matematica al liceo, ma non direi di essere "bravo in matematica", perché ho incontrato persone al college (in vari STEM campi) che * sono * veramente "bravi in ​​matematica", e sono in un campionato completamente diverso dal mio, quindi mi sentirei in imbarazzo nel provare a sostenere di essere al loro livello.
@Tim: "Nessuna esperienza lavorativa in nessun campo ti costringerà ad acquisire da solo la teoria (poco pratica e quasi mai applicata)." - Sono d'accordo con la tua frase principale, ma non sono d'accordo con le parentesi: nella mia esperienza, molti problemi possono essere risolti * in qualche modo * (quindi lavorare su di essi nell'industria non ti obbliga a guardare la teoria), ma conoscere la teoria sottostante a alcuni di questi problemi spesso aiutano a trovare una soluzione migliore o più pulita, o - se non altro - almeno a capire meglio la soluzione che hai trovato, e quindi ad avere anche una migliore comprensione di quali altri problemi ...
... sono già coperti da quella soluzione. E, direi, questo è esattamente il motivo per cui "i datori di lavoro si preoccupano molto di una laurea in scienze informatiche".
@O.R.Mapper Oh, sono assolutamente d'accordo sul fatto che le intuizioni acquisite dallo studio della teoria CS sono preziose, e probabilmente l'ho formulato male. Volevo solo dire che i metodi effettivi (ad esempio, provare la regolarità di un linguaggio usando il teorema del lemma di pompaggio) non vengono applicati frequentemente.
@Mehrdad: Il calcolo multivariabile universitario e l'algebra lineare non sono sempre richiesti per i corsi di laurea magistrale CS. Tendono ad essere richiesti solo per i candidati ai programmi di dottorato. Gran parte della matematica che hai menzionato non è richiesta agli studenti nel mio programma.
@MNRC: Solo dottorato? Erano in realtà * undergraduate * (BS) requisiti principali CS per noi, presi quasi sempre da matricole ... non puoi davvero fare ingegneria senza algebra lineare e calcolo multivariabile, e anche CS fa molto affidamento sull'algebra lineare. Gli altri argomenti che ho citato non erano correlati alla scienza e alla tecnologia, erano legati alla matematica e alla fisica - li ho citati come esempi di ciò che dovrebbe sapere qualcuno che ha una formazione universitaria in matematica o fisica, che è l'impressione che ho di il tuo background nel tuo post.
@Mehrdad la mia laurea in CS undergrad (USA) richiedeva solo il calcolo 1/2 (variabile singola) e un'equazione lineare o una classe di statistiche. Per le equazioni lineari era una scelta tra una classe apparentemente destinata a non laureati in matematica (non potevo accettarla se avessi fatto differenze lineari) o una classe di livello superiore. Per le statistiche era una scelta di classi che erano più o meno equivalenti all'introduzione alle statistiche per scienziati / ingegneri e all'introduzione alle statistiche per le maggiori statistiche. (Diverse altre lezioni di introduzione alle statistiche sono state offerte ma non accettabili come requisiti di laurea.)
@Tim I metodi non vengono applicati, ma c'è un livello di capacità di capire il percorso dalla A -> Z che non è naturale per molte persone. Per alcuni, l'apprendimento dei metodi matematici li aiuta a pensare in questo modo. Per altri, Chess, Go o altri giochi di strategia fanno lo stesso. Questa è una cosa inconscia a lungo termine, però, e difficile da addestrare - la stessa cosa non funziona per tutti.
@Mehrdad Sei fuori tema. Quelle cose che hai citato (meccanica lagrangiana, equazione di Eulero-Lagrange, ecc.) Sono totalmente irrilevanti per avere successo in un programma di informatica. Probabilmente per avere successo sono necessarie solide competenze di matematica generale, ma non è fondamentale conoscere concetti specifici prima di iscriversi ei corsi che hai elencato non sono richiesti per molti programmi universitari / master CS. Ad esempio, ho un BS in CS e non ho idea di cosa sia un "funzionale", ma so cos'è un lambda. Quindi i tuoi commenti sono ... fuori base.
@KyleM: In realtà hai * letto * il mio commento prima di dirmi che quegli argomenti sono * "totalmente irrilevanti per avere successo in un programma di informatica" *? Evidentemente no, perché ho affermato molto chiaramente che quelli erano argomenti che mi aspettavo da persone che affermavano di essere brave in ** fisica ** e ** matematica ** (come l'OP). Non ho mai suggerito che questi siano argomenti rilevanti per un programma * CS * da trattare. In realtà * leggere * i commenti a cui stai rispondendo di solito è una buona idea.
@Mehrdad Sei molto sulla difensiva e finora i tuoi post sono stati scortesi. Il post di OP parla di CS e sembra che tu stia cercando di collegare matematica e CS insieme a commenti come "se tutto ciò che hai fatto è l'algebra lineare e il calcolo multivariabile, questo non ti renderà più facile imparare CS" e "Molti concetti di matematica e scienze sono molto rilevanti per l'informatica". Ma in realtà, come afferma il mio commento precedente, nessuno di questi concetti / corsi è essenziale per avere successo.
@KyleM: Mi metto sulla difensiva perché mi metti le parole in bocca! Ma non credo di essere stato scortese. Dove ho * mai * detto esattamente che quei concetti sono * essenziali * per avere * successo * in * CS *? Non l'ho mai fatto, stai solo affermando che l'ho fatto. Tutto quello che ho detto è che la matematica e la fisica potrebbero rendere più facile imparare CS ** se ** li studi effettivamente ** oltre ** i corsi introduttivi menzionati dall'OP (lin alg / multivar calc). Non ho mai detto che studiarli fosse qualcosa di vicino a * essenziale * o * necessario *, ma semplicemente che potrebbero essere * utili * se li studiassi. Vedi la differenza?
** Per favore porta la discussione estesa a [chat]. ** Inoltre, questo thread di commenti è diventato controverso; Blocco temporaneamente la domanda per fornire un periodo di riflessione.
@Mehrdad "e persino CS si basa molto sull'algebra lineare" - penso che questo lo stia esagerando; mentre ci sono aree in cui l'algebra lineare è necessaria, ora sto facendo la mia tesi di master e devo ancora incontrare alcuna algebra lineare oltre l'eliminazione gaussiana anche se ho fatto principalmente corsi teorici e alcune ricerche sul linguaggio e sulla teoria dei giochi.
@MNRC "Se fossi in me, usciresti dal programma?" Se e solo se CS non è quello che vuoi fare, punto. Altrimenti, ci avrei lavorato duramente fino a quando non ci sono riuscito. Non farti spaventare dalla matematica che la gente pensa sia difficile; devi lavorare sodo, ovviamente, ma soprattutto: cerca di capire prima di seguire ogni minimo dettaglio formale. Ogni volta che parlo con altri studenti di scienze informatiche, la maggior parte di loro ha già dimenticato l'80% della matematica che facevano allo studente universitario.
@G.Bach: Non sto dicendo che non sia possibile, ma sono curioso di sapere come potresti evitare l'algebra lineare per così tanto tempo. Come puoi fare la teoria dei giochi senza l'algebra lineare, per esempio? Le matrici di payoff e gli equilibri di Nash non sono definiti usando l'algebra lineare? Mi sento come se anche la teoria del linguaggio * formale * [usi un'algebra lineare] (http://cstheory.stackexchange.com/a/19094/6006). O se intendevi linguaggi * naturali *, le catene di Markov vengono in mente come ottimi esempi anche per questo.
Hai pensato di cercare un programma di master in qualcosa di più vicino al lavoro che hai svolto? Ci sono alcune università, mi viene in mente Columbus State, che hanno M.S. in Ingegneria del software che potrebbe essere più in linea sia con la tua esperienza che con i tuoi obiettivi educativi e professionali.
L'algoritmo è la parte fondamentale di CS. Inoltre, sei uno sviluppatore web front-end di professione e in questa professione, è consigliabile avere l'algoritmo come argomento. perché non vai alle lezioni e lo impari bene, ti divertirai e ti aiuterà troppo.
@Mehrdad Non ho deciso di evitare linalg, semplicemente non è mai saltato fuori oltre a risolvere lin. sistemi. Mentre gli equilibri di Nash sono soluzioni a lin. sistemi, calcolarli è una semplice questione di scegliere un sottoinsieme di alternative, costruendo il lin. sistema e poi eliminazione gaussiana; ma non ho incontrato nessuno che calcoli gli equilibri di Nash nella ricerca (ho fatto qualcosa sulle funzioni di scelta sociale). Il post sui linguaggi formali che hai collegato riguarda anche la risoluzione di sistemi lineari, ma non è necessaria la conoscenza dell'algebra lineare per questo; puoi imparare l'eliminazione gaussiana in un'ora senza ottenere linalg.
@G.Bach: Immagino che dipenda da ciò che chiami "algebra lineare" ... consideri i minimi quadrati come algebra lineare, per esempio? Se è così, non hai mai dovuto farlo? In caso contrario, cosa chiameresti algebra lineare?
@Mehrded Non ho mai dovuto farlo; ma non credo che questo contribuisca molto alla discussione qui.
Quindi, sono passati molti anni, qual è l'aggiornamento?
Otto risposte:
xLeitix
2014-08-07 11:27:50 UTC
view on stackexchange narkive permalink

Sembra che tu sia caduto contemporaneamente in un paio di trappole comuni.

Trappola 1:

Sono bravo a sviluppo web front-end, sono sicuramente bravo anche in informatica

Come probabilmente hai imparato ormai, è possibile (abbastanza comune, in realtà) essere un fantastico programmatore e ancora lottare con argomenti CS fondamentali, come gli algoritmi. Potrebbe esserci stato un tempo in cui la programmazione era davvero algoritmi applicati, ma oggi le competenze richieste per scrivere la tua applicazione web media sono relativamente disgiunte da ciò che impari in CS 101.

Trap 2:

Ho fatto un discreto corso di matematica e fisica (undergrad), sicuramente quei corsi CS (master) andranno bene.

Questa è una combinazione di molteplici errori che ho visto. In primo luogo, potresti non aver tenuto conto del fatto che i corsi CS di livello master sono, beh, per studenti a livello master. Assumono una forte padronanza delle basi, che, a quanto pare, ti manca. Inoltre, fare bene in matematica e fisica è un buon indicatore del fatto che farai bene in matematica e fisica, non ti qualifica in alcun modo direttamente per un master CS.

Trap 3:

So quello che ho bisogno di sapere, ho appena fatto domanda per il master perché ho bisogno di una laurea migliore.

Dici che:

[Ho] pensato che sarebbe stato fantastico avere una laurea in modo da sembrare un programmatore più legittimo di quello che il mio BA di antropologia grado potrebbe implicare

Trovo questa affermazione molto preoccupante, in quanto sembra che tu sia più interessato a ottenere una laurea che a imparare CS. Se è così, dovresti riconsiderare seriamente se la laurea vale davvero la pena. Francamente, per la maggior parte delle case di programmazione con cui sono in contatto, 10 anni di esperienza contano comunque più di un master.

Ora per rispondere alla tua domanda concreta:

Se fossi in me, lasceresti il ​​programma? Non sono sicuro se sia la mancanza di un background in informatica universitaria, il fatto che io sia uno studente più anziano che ha quasi 40 anni o una mancanza di attitudine per questa materia.

Non presumo che tu sia semplicemente "non abbastanza bravo", e nemmeno l'età dovrebbe essere un problema. Sicuramente sembra che ti manchi il background, e il fatto che tu stia facendo il master part-time sicuramente non aiuta neanche. Tutto sommato, ciò non crea condizioni molto favorevoli.

Nessuno tranne tu puoi dire se dovresti smettere, ma date le informazioni, rivaluterei se (a) un master è realizzabile per te e (b) se per te vale davvero la pena conseguire un master.

Avevo sentito che CS è principalmente matematica, quindi avevo l'impressione (sbagliata) che fare bene in matematica significhi fare bene in CS. Penso invece che passerò a un master in matematica. La maggior parte degli studenti della mia classe in arrivo è cinese o indiana; non tendono a studiare per amore di esso, ma per ottenere un buon lavoro. La differenza è che loro possono gestire i corsi e io no. Trovo che gli studenti internazionali sembrano avere punteggi quantitativi GRE più alti rispetto agli studenti americani nel mio programma. Tutti gli studenti stranieri con cui ho parlato hanno ottenuto il 90 ° percentile, mentre gli americani sono al 75 ° percentile.
@user3912481 Penso che la maggior parte dei datori di lavoro che offrirebbero più soldi a un programmatore con un master in CS esiterebbero a offrire lo stesso a un programmatore con un master in matematica. Potrebbe non funzionare molto bene.
@user3912481 Esco qui e dico che anche il maestro di matematica non andrà così bene senza avere uno studente universitario pesante sotto la cintura (o aver fatto un serio studio da solo).
@Tim Sì, hai ragione, sicuramente qualcos'altro da considerare ... Penso che proverò a seguire questo programma finché non mi cacciano.
Sembri MNRC molto flip-floppy. Devi impostare la tua mente su qualcosa e portarlo a termine, indipendentemente dallo sforzo. Anche i tuoi obiettivi sembrano essere fuori di testa, farlo più per il titolo che per l'esperienza appresa. Nei tuoi panni o ce la farei e farei del mio meglio o dimenticherei i maestri e prenderei una laurea in CS. Hai esperienza lavorativa e se avessi solo una laurea potresti facilmente trovare un lavoro, a questo punto non credo ne varrebbe la pena un master anche se ce la fai. La differenza in $ non sarà molto prima del TimeYouRetireSinceYourAlreadyHalfWayThere
@MNRC: Un master in matematica senza una laurea in matematica, e visto che non sei riuscito a completare il corso "algoritmi"? Se so una cosa, allora che un master in matematica è molto più difficile di un master in CS. È molto più teorico, quindi i tuoi 10 anni non contano nulla. Se non sei in grado di completare gli algoritmi (che è un po '"matematica in modalità facile"), allora avrai ** molto ** periodo difficile nelle lezioni di matematica. Fare bene in matematica al liceo non significa che puoi saltare subito alle lezioni di matematica di MSc ...
"Avevo sentito dire che la CS è principalmente matematica": ciò che generalmente si intende con questo è che la matematica compare in molte parti della CS. Per qualcuno che disprezza la matematica, sembra decisamente "terribilmente matematica", per qualcuno che è d'accordo con la matematica, potrebbe essere una sensazione di "matematica qua e là" (sebbene quelle persone probabilmente selezioneranno le specializzazioni più pesanti per la matematica e quindi ristabilire la loro - non malcontento - impressione che il CS sia per lo più matematica). Certamente * non * significa che ci sia poco altro oltre alla matematica, o che capire la matematica significhi comprendere tutto il resto che fa parte degli studi sulla CS.
No, frequentavo il corso di laurea in algebra lineare nella mia scuola e ho avuto un tempo più facile comprenderlo e il libro di testo rispetto al mio corso di algoritmi di laurea.
__Trap 4__ * "10 anni dopo il college ho avuto una carriera di successo come sviluppatore web front-end e ho pensato che sarebbe stato fantastico avere una laurea in modo da sembrare un programmatore più legittimo" *
Vorrei dare seguito e far sapere ai lettori che ho incontrato un grande professore che gentilmente mi ha preso da parte e mi ha detto i miei punti deboli in CS. Mi è stato assegnato un tutor che mi ha detto che non comprendevo appieno la ricorsione e come applicarla correttamente. Stavo risolvendo correttamente algoritmi come Towers of Hanoi e Josephus Problem, ma avevo problemi a tradurre i miei pensieri in pseudocodice. Ho lavorato duramente per affrontare questi problemi con il tutor e ho fatto molti progressi. Le lezioni sono ora più gestibili e non vedo l'ora che inizi il machine learning il prossimo semestre.
Lacoppidan
2014-08-07 17:13:38 UTC
view on stackexchange narkive permalink

Guida alla sopravvivenza da qualcuno che si è trovato nella tua situazione

Penso che tu riceva molti commenti scoraggianti qui che non ti aiutano molto. Sai già di non avere le migliori qualifiche possibili, non hai bisogno che le persone te lo ricordino. La domanda è: cosa puoi fare al riguardo?

Sono una specializzazione in informatica, ma ho iniziato come studente di fisica. Ho frequentato il tipo di corso di cui parli, calcolo multivariato, ecc. Ciò significa che quando ho seguito il mio corso di algoritmi (seguendo lo stesso libro del tuo corso), non avevo affatto matematica discreta. La matematica discreta ti aiuta a comprendere le strutture dei dati. Le strutture dati vengono utilizzate durante l'implementazione degli algoritmi.Le tecniche di dimostrazione della matematica discreta ti aiutano a comprendere la correttezza e la complessità di runtime di un algoritmo.

Anche se avere una vasta conoscenza della matematica (discreta) aiuterebbe la tua comprensione algoritmi, è una grande esagerazione insinuare che non puoi cavartela senza. Ho raccolto tutte queste cose durante il mio corso sugli algoritmi. Se io, come te, avessi chiesto alle persone se dovevo smettere perché non avevo nessuna conoscenza di grafici e alberi prima di seguire il corso, probabilmente avrei ricevuto commenti scoraggianti come fai ora. In effetti, ho ottenuto un punteggio perfetto per il corso perché ho studiato duramente esattamente ciò che l'esame richiedeva. Ho provato ogni singola dimostrazione del programma (il mio era un esame orale) .Non so che tipo di esame stai affrontando, ma ti suggerisco di restringere il più possibile il programma e di concentrarti solo su ciò che dovresti sapere che ti farà passare .

"Introduzione agli algoritmi" è un libro molto completo e ci sono molte cose che non ti servono. Molte persone qui sono perfezioniste e pensano che dovresti sapere tutto, ho persino visto qualcuno qui suggerire che dovresti conoscere la meccanica lagrangiana, davvero non vedo la rilevanza di tutto ciò. Questo non è un corso di fisica.

Infine vorrei aggiungere un commento sulle ricorrenze T (n). Questo può essere difficile da capire perché il libro non ti fornisce una ricetta esatta per questo ed è utile pensare alla relazione di ricorrenza T (n) come al comportamento del problema. Il problema è l'input dell'algoritmo ed è espresso in termini di n - la dimensione del problema.

Esempio: presumo che tu abbia familiarità con Mergesort. Con l'algoritmo Mergesort prendi il problema n e lo dividi in due problemi ugualmente grandi (lo puoi capire guardando l'algoritmo). Questi problemi sono la metà delle dimensioni del problema originale, quindi ottieni una ricorrenza che dice

T (n) = 2T (n / 2) + O (n)

La ricorrenza fondamentalmente dice che il problema inizia come n e poi diventa due problemi di mezza dimensione, a cui viene applicato l'algoritmo (da cui la T). (Potresti notare quindi che le relazioni di ricorrenza vengono applicate solo agli algoritmi ricorsivi). La O (n) esprime il costo lineare necessario per unire i due problemi insieme una volta che sono stati risolti (perché sappiamo che questo viene eseguito dalla subroutine Merge). Questo passaggio non è ricorsivo, poiché viene eseguito dopo che il problema è "tornato" dall'essere risolto ricorsivamente.

Quindi, come puoi vedere, la relazione di ricorrenza viene raccolta osservando l'algoritmo. La relazione viene quindi risolta dal teorema principale o dal metodo di sostituzione o ricavata dal disegno di un grafico delle ricorsioni (albero di ricorsione) e quindi verificata rigorosamente con il metodo di sostituzione. La soluzione ti dirà la natura del runtime, ovvero: Se aumenti la dimensione n del problema, di quanto aumenti il ​​tempo di esecuzione?

Per Mergesort la risposta è Theta (n log n), il che significa che l'aumento del runtime sarà una funzione del tipo f (n) = n log n. Si confrontano i tempi di esecuzione osservando la pendenza dei pendii di queste funzioni. Se il tempo di esecuzione è Theta (2 ^ n), la pendenza sarà estremamente ripida e il tempo necessario per eseguire l'algoritmo aumenterà molto velocemente, quindi si dice che l'algoritmo sia molto lento.Questa è la risposta che stai cercando per quando costruisci la ricorrenza.

E infine: non disperare, a volte potrebbe sembrare molto difficile, ma probabilmente sarai più vicino alla comprensione di quanto pensi. Un ottimo strumento per me è stato per guardare le lezioni su algoritmi e strutture di dati dal MIT opencourseware. http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall- 2011 / lecture-videos / e http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503- autunno-2005 / video-lezioni /

Buona fortuna!

Grazie, la tua risposta è stata la più solidale (e realistica) qui! Mi sto già chiedendo se dovrei o meno restare nel programma. Essere criticati da alcuni dei commentatori qui e farmi notare le mie inadeguatezze non sta facendo molto per aiutare la mia autostima in un corso di laurea difficile. Vorrei che alcune persone provassero a immaginarsi nei panni di qualcun altro prima di mettere la penna sulla carta (o le dita sulla tastiera).
Grazie anche per la spiegazione delle equazioni di ricorrenza: ha aiutato molto!
Sei il benvenuto. Non credo che le persone si rendano conto di quanto sia importante avere fiducia in se stessi quando si cerca di ottenere qualcosa. Se ti convincono con successo che non sei abbastanza bravo, sicuramente non avrai successo, indipendentemente dalle tue capacità. Hai quello che serve, avevi ragione nel presupposto che se puoi capire la matematica, puoi capire l'informatica. Vedo persino persone con abilità matematiche molto limitate che superano corsi difficili. L'approccio migliore è avere un piano di studi con solo le cose essenziali e non lasciarsi travolgere da nient'altro. Allora avrai successo :-)
Un'altra cosa, le persone sembrano prendersela con te perché volevi un diploma di Master. Ma non vanno tutti all'università per il diploma? Sicuramente so di sì, potrei imparare tutto questo da solo leggendo i libri e cercando online. Ho seguito diversi corsi senza nemmeno presentarmi alle lezioni. Voglio il diploma come prova concreta delle mie capacità quantitative, e anche tu, niente di sbagliato in questo. E sicuramente ti meriti i complimenti per tornarci, non molte persone hanno il coraggio! Sono sicuro che non te ne pentirai!
+1 per consigli matematici discreti. Grafici e calcolo combinatorio sono una pietra angolare di CS.
_Ma non tutti vanno all'università per il diploma? _ - ** No, certo che no. ** Alcune persone vanno all'università per avere l'opportunità di imparare in un ambiente strutturato. Altri se ne vanno perché non sanno cos'altro fare, o perché non vogliono deludere i loro genitori, o perché gli piace la scena sociale, o perché vogliono sviluppare futuri contatti d'affari, o perché stanno cercando un coniuge. Ognuno è diverso.
Jeff, potresti facilmente sostenere che alcune persone vanno all'università solo per il cibo della mensa o qualsiasi altra cosa, e non potrei dire altrimenti. Forse hai ragione, potrebbero esserci persone che vedono l'università solo come una grande opportunità di appuntamenti, ma penso davvero che la maggior parte delle persone sia lì * principalmente * per la laurea. Se non vuoi deludere i tuoi genitori, beh, non prendere una laurea fa parte di questo? (Dubito che vorrebbero che tu partecipassi, penso che vorrebbero che finissi - ma questo sono solo io che indovino di nuovo!) Ci saranno anche molte ragioni secondarie, ma non era questo il punto.
@Lacoppidan Ho appena visto i nuovi commenti. Sì, decisamente vero per la parte della fiducia in se stessi. C'è una donna che ha appena vinto la medaglia Fields e ha detto che da bambina non aveva fiducia nella matematica e voleva rinunciare finché non avesse trovato un insegnante che credesse in lei. La fiducia in se stessi fa davvero una grande differenza se puoi avere successo in un programma o meno!
Ho deciso di tornare a scuola per molte ragioni. La prima era probabilmente la noia. Lo sviluppo web frontend non è stato intellettualmente impegnativo nella mia ultima azienda. Di tanto in tanto ho fatto un po 'di programmazione back-end, mi è piaciuto e ho pensato di ottenere una base migliore in informatica. Avere un master in CS apre anche le porte a lavori che non sono disponibili (perché alcune aziende non assumono persone senza almeno un BS in CS). Non importa quanto sei bravo con gli algoritmi. Quindi, c'erano sicuramente molti incentivi per tornare a scuola ...
Steve Jessop
2014-08-07 13:52:47 UTC
view on stackexchange narkive permalink

Penso che la mancanza di background sia un fattore enorme.

Ho già un master in matematica, laureato 14 anni fa. Sono certo che ora non potrei fare un master in matematica senza tornare prima sul materiale universitario. Sono abbastanza sicuro che rivisitare quel materiale richiederebbe molto di più del semplice tempo libero che mi rimane dopo aver fatto un master nel tempo libero dal mio lavoro. Ovviamente la matematica non è la stessa di CS, ma penso che si applicherebbe la stessa considerazione.

Fare bene in matematica e fisica a livello universitario potrebbe averti preparato in qualche modo per un CS master (anche se come dicono tutti, non è affatto garantito che sia sufficiente). Ma 10 anni sono abbastanza lunghi per dimenticare anche quello che avevi, a parte il fatto che quello che avevi erano pochi corsi piuttosto che il programma di una laurea in matematica. Non è solo il contenuto del corso (la maggior parte della matematica è irrilevante per CS), è la mentalità di "essere un matematico" e "fare matematica formalmente" che è simile alla formalità richiesta nel corso, ma è per lo più assente dalle app di tutti i giorni programmazione. Se sei come me, hai in qualche modo dimenticato come operare nella modalità necessaria, non è più naturale.

Come test, dai un'occhiata ora ai problemi più difficili di matematica e fisica dai corsi che hai seguito. Puoi localizzare e farli ora con qualcosa di simile alla facilità che hai fatto allora? Anche con un "libro aperto" per cercare definizioni che non ricordi? In caso contrario, allora sei meno preparato per CS ora di quanto non lo fossi allora e, come tutti dicono, non eri completamente preparato allora.

Penso che la tua migliore fonte di informazioni sia chi ha deciso che eri qualificato per il corso. Devono aver pensato che potevi metterti al passo. Verifica con i tuoi professori se hai fatto il genere di cose che pensano che dovresti fare per prepararti e se tale preparazione è fattibile nel tuo programma. Fino a quando non affronti la mancanza di background, non penso che ci sia alcun modo per dire se ti manca l'attitudine.

L'età non dovrebbe essere intrinsecamente un problema, dal momento che le persone prendono lauree in tutte le materie a tutte le età. Tuttavia, la tua vita piena di altre cose è in una certa misura un ostacolo. Parte del motivo per cui 15 anni fa ero molto più bravo in matematica rispetto a adesso, è che 15 anni fa lo facevo tutti i giorni, di solito per diverse ore. Quindi ero semplicemente in una posizione migliore per accettare le informazioni fornite in modo "matematico", cosa che credo siano fondamentalmente i corsi CS. Non c'è dubbio che là fuori c'è materiale specificamente destinato agli studenti part-time, che potrebbe aiutarti a raggiungere e mantenere "la zona".

Non riesco a capire le equazioni ricorsive come il modo in cui costruisci T (n ) = log (n) + O (1) da un algoritmo

Se le spiegazioni che funzionano per i tuoi colleghi non funzionano per te, potresti prendere in considerazione il tutoraggio uno a uno. Naturalmente è estremamente costoso, ma se la classe ascolta "e poi lancia il teorema del Maestro" e sa cosa significa e come riempire i dettagli, e tu no, allora chiaramente hanno un background che non lo fai e quindi hai bisogno di riempire cose che non fanno.

Se fossi in me, usciresti dal programma?

Se fossi in te, probabilmente chiederei all'università (a) se c'è qualcos'altro su cui posso lavorare con i crediti del corso che ho, (b) se esiste un mezzo approvato per seguire il programma più lentamente, dando più tempo per riempire qualsiasi sfondo mancante mentre procedo. Non ho idea di quali sarebbero le risposte, ma vorrei conoscere le mie opzioni prima di pensare seriamente di smettere.

Se è solo questo corso (certamente importante, presumibilmente altri corsi successivamente lo richiedono ) allora è del tutto possibile che alla fine lo decifrerai. C'è stato un corso universitario che ho ripetuto (in modo informale: i miei problemi non venivano valutati la seconda volta) anche dopo averlo completato la prima volta secondo quello che sarebbe stato uno standard valido se la mia università avesse funzionato in quel modo (non negli Stati Uniti). Dopo è stato molto più facile. Hai visto alcuni di questo corso due volte, ma alcuni non lo sono affatto (dato che l'hai lasciato cadere la prima volta e non sei arrivato alla fine questa volta). Personalmente non farei nulla di affrettato finché non avessi raggiunto almeno una volta la fine del corso. E se raschi un passaggio, ciò non significa che non puoi visitare il materiale più duro alla fine una seconda volta e il materiale iniziale una terza. Anche se presumibilmente se volessi essere rielaborato dovresti iscriverti ufficialmente al corso ancora una volta?

Ho trovato divertente che tu abbia menzionato il teorema del Maestro, data la natura della domanda (M.Sc.).
@Mehrdad: è del tutto possibile che non l'avrei considerato come il mio esempio se la domanda fosse stata su un dottorato di ricerca.
Riflessioni interessanti. Ho fatto un dottorato in fisica teorica 12 anni fa e la mia esperienza è un po 'mista. Sebbene le capacità di fare calcoli dettagliati siano sicuramente quasi completamente erose, sento che il mio livello generale di pensiero concettuale non è diminuito. Rileggere parti della mia tesi non mi sembra alieno, eppure so che non sarei in grado di riscoprire le formule su un'isola deserta.
user20464
2014-08-07 23:40:22 UTC
view on stackexchange narkive permalink

Penso che prima devi iniziare a prendere seriamente l'argomento.

Avevo sentito che CS è principalmente matematica, quindi avevo l'impressione (sbagliata) che fare bene in matematica significhi fare bene in CS.

È come "Avevo sentito dire che il basket è principalmente corsa, quindi avevo l'impressione (sbagliata) che fare bene nella corsa significhi fare bene nel basket".

Sì, tu " Avrò bisogno della tua corsa. No, non ti salva per niente dall'allenamento come gli altri. Perché tutti sanno che è un prerequisito.

Ho avuto una carriera di successo come sviluppatore web front-end e ho pensato che sarebbe stato bello avere una laurea per guardare come un programmatore più legittimo di quello che il mio BA di antropologia laurea potrebbe implicare.

Uno sviluppatore web front-end ti qualifica per una laurea in informatica, ad esempio digitando 100 parole al minuto ti qualifica per un meccanico di macchina da scrivere.

Se fossi in me, lo faresti uscire dal programma?

Prima di uscire, potrebbe valere la pena controllare cosa ci vorrebbe per iniziare sul serio. Solo allora sei in grado di giudicare se lo sforzo è fattibile / possibile per te e ne vale la pena. Per un lavoro di programmazione, una laurea in informatica ha un valore alquanto marginale.

Per un lavoro di programmazione in Scheme, probabilmente guarderei e intervisterei attentamente prima di prendere una decisione tra qualcuno con una laurea in greco antico e arabo o in informatica. È probabile che il primo sia molto più bravo a pensare in modo analitico e fuori dagli schemi e non avere paura delle sfide che provenire da una disciplina completamente diversa gli sta causando meno problemi rispetto all'essere istruiti in un paradigma di linguaggio di programmazione diverso.

Sul serio. Quindi, se hai intenzione di provare a conseguire una laurea in scienze informatiche, non fare in modo di ottenere una laurea. È un insieme di abilità completamente diverso e nuovo. Se vuoi lavorare nella tua professione attuale, potresti anche non essere in grado di utilizzarla molto.

scaaahu
2014-08-07 07:42:09 UTC
view on stackexchange narkive permalink

Per prima cosa, parla con il tuo consulente. Lui / lei conoscerebbe la tua situazione molto meglio di noi.

Non smetterei adesso se fossi in te. Penso che smettere adesso sia una decisione prematura. Penso che sia comprensibile che tu non possa recuperare molto velocemente, specialmente se frequenti solo part time. Probabilmente dovresti seguire corsi di livello inferiore (probabilmente livello undergrad) per aggiornare le conoscenze che hai acquisito 10 anni fa. Se ancora non riesci a farle molto bene, allora considera di smettere.

Sono un adulto che lavora e non sono più un bambino, quindi non posso andare a tempo pieno e chiedere ai miei genitori che sono in pensione di sostenermi durante la scuola di specializzazione ... Sì, parlerò sicuramente con il mio consulente se lo faccio fallire questo corso di algoritmi ...
@MNRC Quali sono le restrizioni di tempo / voti? Ho visto alcuni programmi che dicono più di 4 anni o due voti meno di un B e tu sei fuori.
Aggiungo che sono sorpreso che almeno una parte di questo non sia già stata discussa durante la tua iscrizione al programma Master con il tuo consulente. Assicurati inoltre di conoscere le risorse disponibili per gli studenti maturi e non lasciare che la tua età interferisca con il lavoro / studio con i tuoi compagni di classe quando appropriato. A volte, essere _in grado di_ non significa che _dovresti_ ottenere una rinuncia per un prerequisito; se tu o il tuo consulente pensate che in realtà vi farà più male che non vi aiuterà. In questo caso di opinioni contrastanti è accettabile la richiesta di una seconda opinione da un'altra struttura.
_ Parlerò sicuramente con il mio consulente se fallisco questo corso sugli algoritmi_ No, ti consiglio di farlo ** ora, ** mentre sei ancora in regola nel tuo programma. IMHO gran parte della discussione dovrebbe essere fatta ** prima ** di prendere qualsiasi lezione.
@MNRC Non ho mai incontrato uno studente MS in CS in uno dei 25 migliori programmi negli Stati Uniti che è stato supportato dai suoi genitori. Tuttavia, ne ho incontrati alcuni che avevano famiglie (incluso più di un bambino da mantenere) e tuttavia sono stati in grado di studiare a tempo pieno, poiché la maggior parte ottiene un assistentato con stipendio. Nel tuo caso, penso che studiare part-time abbia senso, ma non penso che dovresti attribuire la capacità di studiare a tempo pieno di altre persone a loro che hanno genitori che aiutano con i costi.
cs_alumnus
2014-08-08 19:34:34 UTC
view on stackexchange narkive permalink

A livello universitario, "Strutture dati e algoritmi" è in genere il corso da eliminare per il nostro dipartimento. Gli studenti lo prendono nel loro secondo anno dopo aver avuto l'introduzione alla programmazione. Il tipo di problemi che incontri in quel corso ti aiuteranno a ragionare sulla codifica, tuttavia è assolutamente possibile lavorare nello sviluppo web front-end senza incontrarli. In genere, il luogo in cui questo tipo di logica è più utile è nel back-end, non nel livello di visualizzazione.

La versione per laureati di quel corso è probabilmente il corso più difficile con cui devi affrontare e il più sconosciuto al tuo set di abilità. È anche uno dei pochi posti in cui una solida comprensione della matematica discreta sarà molto utile. È molto comune che gli studenti laureati provenienti da altre discipline o università che non hanno coperto questo bene abbiano problemi con questo corso. Spesso la soluzione è fargli controllare prima il corso di laurea.

Per quanto riguarda se dovresti continuare, se scopri che dopo una certa esperienza sei interessato a "strutture dati e algoritmi" e "linguaggi formali e automi ", allora una laurea in informatica incentrata sulla teoria potrebbe interessarti. Se non lo fai, concentrarti su corsi rilevanti per la gestione come l'ingegneria del software potrebbe interessarti. Se sei in questo programma perché vuoi imparare di più per il tuo bene, è fantastico che ne trarrai quello che ci metti. Se sei in questo programma per l'avanzamento di carriera, questo grado potrebbe aiutarti a posizioni a livello di gestione del territorio, ma avrà un effetto minimo o nullo sulla tua capacità di trovare posizioni a livello di sviluppatore per il lavoro di frontend. Potrebbe aprire nuove opportunità per il lavoro di back-end, tuttavia, se questo è il tuo interesse, il percorso del certificato potrebbe essere molto più economico e veloce per te. In qualità di sviluppatore, i tuoi 10 anni di esperienza sono molto più preziosi di un master in CS.

Se non l'hai già fatto, ti consiglio di seguire la matematica discreta universitaria, le strutture dati e gli algoritmi universitari e i corsi di lingue formali universitari prima di continuare con le materie difficili in informatica. Se hai bisogno di seguire alcuni corsi di laurea allo stesso tempo, prendi alcune materie morbide come l'ingegneria del software che probabilmente ti saranno molto più familiari.

Inoltre, mentre i corsi per gli algoritmi sono abbastanza ben definiti, non tutti i libri sono uguali. Raccomando http://mitpress.mit.edu/books/introduction-algorithms.

"è assolutamente possibile lavorare nello sviluppo web front-end senza incontrare [strutture dati e algoritmi" - forse è per questo che così tante "applicazioni" web stanno monopolizzando la CPU come se non ci fosse un domani?
Spiega anche molto sulle strutture di database che vedo in natura e lo sciocco entusiasmo per i database relazionali "post" (non dovrebbe essere "pre"?). Per non parlare del video su youtube in cui le persone di Facebook si congratulano per aver creato un gestore delle transazioni che utilizza le code per serializzare gli aggiornamenti simultanei. Non lo chiamano così, perché ultimamente sono completamente ignari di essere alla festa.
The Real Edward Cullen
2014-08-08 20:57:14 UTC
view on stackexchange narkive permalink

Ho dovuto lasciare una risposta separata perché non ho abbastanza rappresentante per metterla come commento alla risposta di @ Lacoppidan.

Innanzitutto, ti saluto per i tuoi tentativi di diventare un corretto programmatore;)

Secondo, voglio scotch alcune delle BS che altri hanno scritto:

  1. Non hai bisogno una laurea in scienze informatiche, a meno che il corso non dica che lo fai . Molti corsi di master sono progettati per accettare studenti interdisciplinari, qual è il tuo chiaramente , poiché non avrebbe un modulo DS&A se fosse non lo erano!
  2. L'età probabilmente non è un fattore importante. Sì, la neuroplasticità diminuisce con l'avanzare dell'età, ma tutto ciò significa che devi lavorare di più non che non puoi farlo. Certamente, ho scoperto che ci sono cose che posso capire intuitivamente ora che non potevo quando ero più giovane. Inoltre, se hai una vita domestica e un lavoro stabile / stabile, questo ti metterà in un enorme vantaggio rispetto a molti, poiché l'ansia è il più grande ostacolo all'apprendimento che puoi ottenere.

Mi sembra che tu abbia due cose separate che lavorano contro di te:

  1. Stai facendo part-time.
  2. Ti stai preoccupando sul passaggio; se puoi farlo.

Il part-time è ++ difficile (vedi cosa ho fatto lì?;)) - la risorsa più preziosa che hai a l'università sono tuoi coetanei. Ho scoperto che il solo fatto di avere altre persone con cui parlare di cose mi ha aiutato enormemente sia a migliorare la mia comprensione e consolidare le mie conoscenze, sia a costruire la mia fiducia.

Quindi, il mio consiglio numero 1 a chiunque intraprendere un corso di livello universitario è: trovare persone nei tuoi corsi con cui vai d'accordo e costruire relazioni con loro intorno al lavoro. Non preoccuparti "dell'età", preoccupati se quelle persone ti aiutano a capire cosa sta succedendo o no.

Inoltre, non preoccuparti di chiedere aiuto a qualcuno "super intelligente": in realtà gli farai un favore convincendolo a spiegartelo in un modo che tu possa capire . Suona strano, lo so, ma dover spiegare qualcosa a qualcuno (che può o meno essere intelligente come te), ti costringe a capire meglio il tuo argomento; per organizzare i propri pensieri. Sono sicuro che tu sappia dalla tua esperienza nel mondo reale che essere "buono" e "intelligente" non è sufficiente: devi essere in grado di comunicare le tue idee agli altri e lavorare in modo collaborativo, perché il software interessante non è banale e il software non banale è un complesso di & troppo grande perché una persona possa farlo da solo.

Preoccuparsi di avere successo o meno ti tratterrà sempre. È qualcosa con cui ho lottato molte volte.

Una strategia che ho trovato funziona per me è concentrarmi solo sull'apprendimento di cose ; impara solo qualsiasi cosa correlata al corso. Leggi per il puro e semplice inferno! Concentrati sulle cose che trovi interessanti. E scrivi molto codice.

Concentrandoti su solo apprendimento otterrai molto di più dal tempo che dedichi e sarai più soddisfatto di ciò che hai imparato. È vero, potrebbe non aiutarti a superare il tuo corso, ma è probabile che lo sarà, perché quando avrai ripreso l'abitudine di imparare solo cose, troverai più facile imparare le cose che devi superare.

Un'altra strategia è scrivere altro codice . Una cosa che sicuramente non ho fatto abbastanza come studente universitario, era scrivere abbastanza codice. Questo è particolarmente importante per cose come DS&A: l'unico modo per acquisire familiarità con un algoritmo o con cose come la manipolazione del puntatore è farlo. Molto.

Se puoi farlo e puoi spiegare come funziona, allora lo capisci.

Dovrebbe essere qui che entra in gioco la tua esperienza più ampia; hai 10 anni di esperienza nella scrittura di codici, quindi senza dubbio hai acquisito molte tecniche e abilità che ti aiuteranno. Usali!

Usa cose come il funzionamento a secco (qualcosa che non penso sia insegnato molto in questi giorni, ma è comunque uno strumento fantastico, in particolare per l'apprendimento di DS&A) e / o il debug interattivo per eseguire la tua esecuzione.

La terza tecnica che ho trovato davvero utile è la mappatura mentale. L'ho usato come un modo per colmare le lacune nella mia conoscenza, suddividendo un argomento nelle sue parti costitutive, esplorando le cose che non capivo e poi tornando all'argomento principale mentre questa nuova conoscenza era fresca nella mia mente.

Ad esempio (scusa, nessuna immagine), l'oggetto di "elenchi collegati" potrebbe decomporsi in:

  • elenco
  • puntatori
  • head
  • tail
  • allocazione dinamica della memoria

Poi guarderei ognuno di questi e mi chiedevo "lo so che cos'è ciascuno di questi? " Se la risposta è "sì", allora vado avanti, se "forse", controllo le mie conoscenze con Google, se "no", quindi creo un foglio separato e ci lavoro fino a farlo (scomponendolo ulteriormente se necessario). In questo modo, la prossima volta che vengo a un argomento che io e vedo "lista collegata", io:

  • saprò cos'è una lista collegata e come funziona; oppure
  • avere una buona serie di note che posso usare rapidamente per rinfrescare la mia memoria

Ancora una volta, esercitati, esercitati, esercitati. Più codice scrivi e devi eseguire il debug, meglio capirai cosa sta succedendo.

Questa si è trasformata in una risposta molto più lunga di quanto volevo, ma spero che la troverai utile .

Jen
2014-08-07 23:12:42 UTC
view on stackexchange narkive permalink

Sono leggermente confuso su dove hai iniziato con i tuoi Master? Ma questa è la mia esperienza come qualcuno in un ruolo simile.

Ho una laurea in Scienze Politiche ma volevo seguire un Master in CS. Per fare questo ho dovuto ricominciare da capo e ritardare la mia laurea per prendere le classi preliminari per i Master. Ora questo è il punto per chiunque: entrare in CS a fine partita è difficile. Non hai avuto esperienza mentre altri ne hanno avuta ampia (dato che molti provengono da autodidatti o da aver visto al liceo).

Imparare CS può essere scoraggiante e immagino da quello che hai detto il tuo Il lavoro è che non ti rendi conto di una cosa fondamentale sulla programmazione, e questo per renderla più facile per gli altri programmatori. Da quello che ho visto di molti programmi basati sul web è che c'è molta programmazione backdoor in corso. Non è una brutta cosa ma, come altri hanno sottolineato, la programmazione è diversa da CS.

Ad essere onesti, questa suona come una scelta personale e non pesante su pro e contro che non sono personali. Non lo ottieni perché sei senza opzioni, perché hai sempre voluto impararlo o perché il tuo lavoro lo richiede. Vai perché pensi che potrebbe aiutarti sulla carta. Non sto dicendo che sia una cattiva ragione, ma di certo non è utile nella categoria della motivazione.

Ho conosciuto molte persone che ottengono il loro BS in CS e fanno schifo. Non riescono in quasi tutte le lezioni (o solo a malapena). Ma amico ci stanno ancora (nel bene o nel male, chi lo sa davvero). Quello che sto dicendo è che non sei il solo a trovare un argomento di CS difficile o confuso. È di più, vale davvero la pena per te alla fine della giornata?

Oh, un'ultima cosa, hai paura di fare domande essendo un membro più anziano della classe? Ti siedi lì senza speranza ma hai paura che tutti sappiano più di te? Se è così, smettila. Non sanno più di te e molto probabilmente non lo fanno nemmeno peggio. Tornare a 20 anni tu in undergrad, cosa faresti allora? Parleresti con i tuoi compagni di classe e insegnante per ottenere una migliore comprensione. Se lo fai già, allora ti fa bene, ma in caso contrario, potresti semplicemente essere sorpreso di dove ti trovi effettivamente in classe. (Ho seguito dei corsi in cui la semplice rottamazione è considerata un risultato in quanto vi è un tasso di fallimento variabile)



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...