# Computer Science Tree Map

Computer scientists design and analyze algorithms to solve programs and study the performance of computer hardware and software.

Tags:

Similar Mind Maps

Outline

Computer-Science-Mind-Map

Theory

Computational complexity

understand the differencebetween P, NP, NPHard andNPComplete

models of computation

finitestate automata

regular languages (and regularexpressions)

pushdown automata

contextfree languages

formal grammars

Turing machines

lambda calculus

undecidability

Architecture

understand a computer fromthe transistors up

standard levels of abstraction

transistors

gates

adders

adders

flip flops

ALUs

control units

caches

RAM

GPU model ofhighperformance computing

recommendations

design and simulate a small CPU

Systems administration

Install and administer a Linux distribution

Configure and compile the Linux kernel

Troubleshoot a connectionwith dig, ping and traceroute

Compile and configure a webserver like apache

Compile and configure a DNSdaemon like bind

Maintain a web site with a text editor

Cut and crimp a network cable

Data structures and algorithms

how to design algorithms

greedy

dynamic strategies

know both the imperative andfunctional versions of eachalgorithm

hash tables

linked lists

trees

binary search trees

directed and undirected graphs

The Unix philosophy

emphasizes linguistic abstraction andcomposition in order to effectcomputation

commandline computing

IDEless software development

textfile configuration

recommendations

navigate and manipulate the filesystem

compose processes with pipes

comfortably edit a file withemacs and vim

create, modify and execute aMakefile for a software project

write simple shell scripts

Discrete mathematics

formal mathematical notation

sets

tuples

sequences

functions

power sets

trees

graphs

formal languages

automata

learn enough number theory to study andimplement common cryptographicprotocols

Cryptography

Understand

symmetrickey cryptosystems

publickey cryptosystems

secure hash functions

challengeresponse authentication

digital signature algorithms

threshold cryptosystems

recommendations

breaking ciphertext using premoderncryptosystems with handrolled statisticaltools

implemment RSA

create their own digital certificateand set up https in apache

write a console web client thatconnects over SSL

know how to use GPG

know how to use publickeyauthentication for ssh

know how to encrypt a directoryor a hard disk

Build a portfolio

publicly browsable code

perproject page

github or Google code

Software engineering

version control

debugging tools

An engineering core

physics through electromagnetism

take up through multivariate calculus

differential equations

probability

linear algebra

statistics