informatica teorica è in gran parte una disciplina matematico astratto che cerca di comprendere meglio la natura del calcolo. Ma come la ricerca nel campo della fisica, i progressi nella scienza teorica fine informatici, fino fornire contributi concreti al settore informatico in generale. La disciplina di informatica teorica può essere divisa in diverse sottocategorie.
La sottocategoria prototipo di informatica teorica è lo studio della complessità astratta, che coinvolge algoritmi, automi, la complessità, e giochi. Per esempio, che cosa possiamo fare generalizzazioni sul comportamento di alcuni algoritmi come si avvicinano a una quantità infinita di potenza di calcolo del limite? Qual è lo spazio dei possibili programmi che possono essere descritti con meno di 50 bit? Quali metodi statistici possono essere utilizzati per determinare se un dato algoritmo o un programma sta svolgendo il suo compito in modo ottimale? Un'altra sottocategoria di informatica teorica è la logica, la semantica, e la teoria della programmazione. Questa categoria tende ad essere un po 'più concreto di quanto sopra. Per esempio, come possiamo determinare quale linguaggio di programmazione ha il vantaggio di affrontare un determinato problema di calcolo? Come possiamo utilizzare linguaggi di programmazione per scrivere Celle teorema automatizzato? Come si fa a validare il codice, come in possesso di informazioni fornite proprietà teorica? Un ultima categoria generale in informatica teorica è lo studio dei processi di calcolo presenti in natura, e artificiali processi computazionali ispirati dalla natura. Per esempio, algoritmi evolutivi, le reti neurali, l'informatica molecolare, e quantum computing. Essa tenta di rispondere a domande quali: cosa sta succedendo, computazionalmente, durante il processo di evoluzione e selezione naturale? È la realtà stessa fondamentalmente di calcolo? E così via.informatica teorica nata nel 1940 e '50 con geni come Jon von Neumann e Alan Turing. Gli obiettivi nel campo della scienza informatica teorica sono di unificare i campi apparentemente separati di informatica, di determinare o meno di certi problemi sono in via di principio insolubile, quali tecniche possono essere utilizzate per fattorizzare numeri enormi, o scoprire i più grandi numeri primi, uno così via.
