Perché andare all'informatica / ricerca teorica?


36

Attualmente sto iniziando l'università [informatica] e lì abbiamo molte opportunità di iniziare la ricerca. Prima di trovare questo sito Web, non avevo intenzione di procedere in questo modo [volevo lavorare con l'IA, probabilmente sviluppatore di giochi], ma ora posso [o ho bisogno] di fare una scelta.

Puoi convincermi ad unirmi a questo "mondo"? Quali "segmenti" posso seguire? C'è qualcosa su quali tipi di argomenti lavora uno scienziato informatico o un ricercatore?


18
Siamo onorati che il sito ti abbia già ispirato a pensare alla teoria! E sei nel posto giusto, se vuoi sapere su cosa lavora un teorico informatico ... continua a leggere e lo scoprirai!
Ryan Williams,

6
Questo dovrebbe essere wiki della comunità.
Dave Clarke,

Mi sono appena iscritto oggi e ho avuto la stessa domanda ... Ho fatto la mia ingegneria in ingegneria elettronica ma mentre al college ho iniziato a provare inclinazione verso CS ... Non ho mai avuto un'introduzione formale alla teoria, ma ora sono felice di aver trovato questo sito ... E @ Júlio Souza grazie per aver posto questa domanda. Ho intenzione di monitorare questo da oggi :)
Alan Turing,

@supercooldave l'ha cambiato in wiki della comunità.
JulioC,

Epilogo: JulioC è diventato uno sviluppatore di software.
domotorp,

Risposte:


32

Posso riferire le mie ragioni come studente universitario che si applica ai corsi di laurea TCS questo prossimo inverno (così poco tempo rimasto!).

  • C'è la bellezza Questo non è qualcosa che posso spiegare (e ho visto altri matematici non riuscire a spiegare). È come "giallo". Se non l'hai visto, non sono sicuro di poterti comunicare di cosa si tratta. Ma dal momento che ti sei interessato alla teoria, suppongo che forse la sperimenterai.
  • C'è universalità. Universalità oltre la tesi di Church-Turing . TCS al suo interno studia i fenomeni di alto e basso livello nelle informazioni: è la "fisica" delle informazioni. E poiché l'informazione è qualitativamente atomica , la teoria dell'informazione ha cose da dire sulla fisica (il mio professore di QM mi ha specificamente detto che ama la teoria dell'informazione). Detto questo, è da qualche parte tra Pure Math e Engineering. Ha la capacità e la flessibilità di contribuire direttamente ad entrambi e di essere contribuito direttamente ad entrambi. Tuttavia, combatte sulla propria frontiera.
  • C'è lo scopo. Questo è stato accennato nel proiettile precedente. Informatica trova la sua strada in molte applicazioni diverse - roba tutti, dal DHD a start-up sono interessati a Non troverete voi stessi. Come morire di fame per il finanziamento come la matematica pura. (Ti ritroverai sempre a morire di fame per il finanziamento.)
  • C'è la sfida. Dai un'occhiata a un elenco di problemi aperti nell'informatica teorica (e persegue una loro comprensione fino alla fine dell'indagine). Sono molto difficili - ecco alcuni motivi per cui . Non capiamo davvero TCS - la maggior parte delle nostre prove si riduce a prove crescenti. C'è ancora così tanto lavoro da fare!

19

In effetti, decidere se andare alla ricerca in informatica teorica è una questione di scelta. Ma anche esaminando le domande su questo sito (come probabilmente hai fatto), spero che ti dia un senso dell'ampiezza, della portata di una bellezza del campo. Non so nemmeno da dove cominciare indicandoti fonti che puoi leggere per apprezzare il tipo di lavoro svolto dai teorici, ma su questo stesso sito c'è una domanda che penso possa interessarti.

La domanda è:

Paul Erdos ha parlato del "Libro" in cui Dio conserva la prova più elegante di ogni teorema matematico. Ciò ha persino ispirato un libro (che credo sia giunto alla sua quarta edizione): Proofs from the Book.

Se Dio avesse un libro simile per gli algoritmi, quale algoritmo pensi che sarebbe un candidato?

Attualmente ci sono 64 risposte a questa domanda, che coprono algoritmi per piccoli problemi, grandi problemi, puzzle e matematica profonda. Credo fermamente che se tutto ciò che facessi fosse passare attraverso questo elenco e leggere di più su uno qualsiasi degli algoritmi che attira la tua attenzione, impareresti molto su ciò che fanno gli informatici teorici e sul perché lo facciamo.

In bocca al lupo !


16

La ragione per cui molti di noi sono andati alla ricerca è perché troviamo che spingiamo i confini di ciò che è noto sia intellettualmente gratificante che divertente. Fare ricerca ci dà anche la libertà quasi ineguagliabile di lavorare su problemi che troviamo significativi e interessanti e ci tiene costantemente messi alla prova (di cui ci godiamo).

TCS (al contrario di altri campi) è uno studio matematico dell'informatica. Puoi lavorare sull'aspetto teorico di molti campi diversi dai sistemi distribuiti all'apprendimento automatico. La scelta tra TCS e altri campi dell'informatica dipende da dove risiedono i tuoi gusti e le tue abilità. Se i tuoi interessi e le tue abilità naturali risiedono più nella programmazione o nella progettazione del sistema che nell'analisi matematica, allora forse non dovresti andare in TCS. D'altra parte, se le tue abilità e interessi risiedono maggiormente negli aspetti matematici, allora dovresti considerare TCS.

Inoltre, non devi sempre scegliere un'area tra tutte le altre. Molte persone lavorano su problemi sia dal punto di vista teorico che pratico. Questo è comune, ad esempio, nell'apprendimento automatico, dove prima progettiamo e analizziamo algoritmi (spesso teoria) e poi li testiamo nel mondo reale (progettazione sperimentale, applicazioni, ecc.).

Un buon modo per capire cosa vuoi fare è prendere lezioni in molte aree diverse e forse provare sia l'industria che la ricerca nelle tue estati. Alla fine dei tuoi studi, avrai probabilmente una buona idea di cosa vuoi fare.


Mi piace molto la matematica, ma adoro programmare. Forse potrei trovare un modo per lavorare con entrambe le "parti" allo stesso tempo, come l'apprendimento automatico [che si trova nell'area dell'intelligenza artificiale, giusto?]. L'anno successivo farò domanda per alcune lezioni della mia università come AI e Algorithm Analysis che possono aiutarmi.
JulioC,

L'apprendimento automatico (almeno dal mio punto di vista) non è una sotto-area dell'IA, anche se c'è qualche sovrapposizione. In parole povere, l'IA si concentra sulla risoluzione di problemi che gli umani normalmente risolvono. L'apprendimento automatico si concentra sullo sviluppo di algoritmi e sistemi che cambiano il comportamento quando vedono i dati. Quindi c'è chiaramente una sovrapposizione tra i due campi, ma sono tutt'altro che uguali. L'apprendimento automatico offre chiaramente alle persone l'opportunità di fare sia teoria che programmazione, ma sono sicuro che non è l'unico sottocampo di CS per cui è vero.
Lev Reyzin

11

La teoria del linguaggio di programmazione è divertente per grandi e piccini. Sta applicando la logica al mondo reale. Unisciti alla sfilata !!

Più seriamente, per me, la teoria del linguaggio di programmazione è interessante per i seguenti motivi:

  • impatto percepito sul mondo reale: il vasto sistema di tipi di lavoro in Haskell e altri linguaggi funzionali, originato da idee puramente logiche (Sistema F), influenza in modo significativo lo sviluppo di linguaggi come Java (i suoi orribili generici, chiusure) e Scala (il moderno giorno in cui la teoria incontra il campo di gioco della pratica).

  • bellezza: molti degli strumenti impiegati nella teoria del linguaggio di programmazione sono basati sulla logica. Gran parte di ciò deriva dalla corrispondenza Curry-Howard, che dimostra una stretta connessione tra regole di prova logiche e regole di battitura per i linguaggi di programmazione e tra eliminazione dei tagli nella logica e valutazione in un linguaggio di programmazione. Due recenti splendidi esempi di applicazioni della logica nella ricerca del linguaggio di programmazione sono il vasto lavoro sulla logica di separazione nella verifica e l'applicazione di idee di prova focalizzate sulla comprensione dei concetti del linguaggio di programmazione come l' ordine di valutazione e la corrispondenza dei modelli .

  • divertente: puoi fare programmazione e teoria allo stesso tempo, specialmente se stai formalizzando e verificando le tue teorie usando un assistente di prova come Coq.

  • e molti altri.


11

Uno dei motivi principali per cui trovo affascinante e che vale la pena studiare la teoria del calcolo ("la mia" branca dell'informatica teorica) è la seguente: ci fornisce un modo per investigare alcune profonde (e talvolta sconcertanti) domande filosofiche.

Uno dei fondatori della teoria del calcolo, Alan Turing, ha cercato di definire il significato di "calcolare una funzione" per un essere umano dotato di un pezzo di carta, fornendo una descrizione matematica del processo. Non sono l'unico a pensare che abbia avuto molto successo e le macchine di Turing si sono dimostrate un modello accurato di molti altri processi di elaborazione.

Ora che possediamo una classe di oggetti matematici che descrivono i calcoli, possiamo effettivamente dimostrare teoremi su di essi, cercando così di scoprire cosa può essere calcolato e come può essere calcolato; si è subito scoperto che molte funzioni perfettamente legittime non possono essere calcolate affatto e che possono essere classificate in base a un grado di incomputabilità (alcune funzioni sono semplicemente "più incomputabili" di altre).

Alcuni altri ragazzi, i primi di solito identificati con Juris Hartmanis e Richard E. Stearns, hanno cercato di descrivere matematicamente cosa significa per una funzione (resp., Un problema) essere difficile o facile da calcolare (resp., Da risolvere). Esistono diverse misure di complessità in base alle quali è possibile descrivere la durezza dei problemi; il più comune è il tempo necessario per risolverli. Alan Cobham e Jack Edmonds hanno avuto abbastanza successo nell'identificare una nozione ragionevole di "calcolo efficiente".

Nel quadro della complessità computazionale, ora possiamo dimostrare alcuni risultati coerenti con la nostra nozione intuitiva di calcolo. Il mio esempio preferito è il teorema della gerarchia temporale: se ci viene concesso più tempo per il calcolo, possiamo risolvere problemi più difficili.

Il problema aperto centrale della teoria della complessità, P vs NP , è solo una formalizzazione di un'altra domanda filosoficamente significativa: è davvero più difficile risolvere un problema che verificare se una presunta soluzione di esso è effettivamente corretta? Credo che valga la pena porre e rispondere a questa domanda, indipendentemente dal suo significato pratico.


+1: piaciuto :) ps: qualcuno ha espresso opinioni simili sul blog di Scott .
Kaveh,

6

Non possiamo "convincerti", poiché l'informatica non è matematicamente migliore dell'IA o di qualsiasi altro campo. Quindi, non possiamo realizzare una prova del suo dominio! IMO, è più una questione di gusti che altro.


1
Sono d'accordo con te, ma probabilmente vuole sapere perché "tu" (o tutti gli altri qui) hai scelto questo campo.
MS Dousti,

@ Júlio Souza: nel titolo, dovrebbe essere "teorico" non "teorico".
MS Dousti,

Non voglio sapere se è meglio, ma voglio sapere perché hai scelto questo campo, come ha detto Sadeq.
JulioC,

6

È difficile rispondere a questa domanda con certezza, ma ci sono alcune cose da tenere a mente qui.

Se fai una carriera come informatico, il tuo lavoro probabilmente coinvolgerà non solo l'elaborazione e la strutturazione dei dati in un modo che lo rende utile ed efficiente da usare, ma anche pensando a come e perché ciò che stai facendo funziona, così come in quale limite opera (se non altro per capirlo abbastanza da implementarlo). Questo è particolarmente il caso di AI / NLP / IR, che è MOLTO ad alta intensità di ricerca, anche se non sei accademico. In effetti, entrare nell'intelligenza artificiale praticamente garantisce che affronterai pesantemente problemi "teorici", e in effetti potrebbe essere difficile trovare un lavoro senza quel background. Quindi questa potrebbe essere una ragione convincente che la considereresti.

Non solo, ma probabilmente sarebbe molto difficile passare la maggior parte della tua vita in qualsiasi campo CS, dove dovresti mantenere un contatto così intimo con processi così delicati e capricciosi (e per non dire difficili), mantenendo contemporaneamente no interesse di sorta anche nelle basi del perché le cose funzionano. In altre parole, suppongo che potresti incollare le biblioteche per il resto della tua vita, ma se questo non suona come la tua cosa, dovrai almeno conoscere a fondo i fondamenti dei problemi che affronti.

Mentre partecipare attivamente alla ricerca TCS è una domanda a cui probabilmente solo tu puoi rispondere, un buon punto di partenza (IMO) è iniziare con una visione dei problemi che ti interessano guardare e andare da lì. Potresti anche non avere abbastanza informazioni per rispondere a quella domanda, quindi un modo migliore di procedere potrebbe essere quello di vedere dove ti portano i tuoi interessi.


Grazie per la risposta. Sono totalmente d'accordo con il tuo POV, lavoro su qualcosa semplicemente facendolo, senza sapere perché funziona, come funziona e se potrei renderlo migliore non è qualcosa che voglio. Penso di poter provare a mantenere i miei piani con l'IA [o qualcos'altro, che è più simile alla "ricerca pratica"], ma continuerò a cercare di conoscere altri argomenti su TCS.
JulioC,

6

Ciò che più mi incuriosisce è la capacità di applicare la teoria dell'informatica ad altre discipline, in particolare la biologia e la biologia cellulare. Se questa nozione ti incuriosisce, ti suggerirei di dare un'occhiata a quanto segue: un saggio di Jeannette Wing sull'importanza del pensiero computazionale ; e un rapporto del NSF sull'applicazione della lente algoritmica ad altre discipline scientifiche.

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.