Computer Science Tree Map

Computer-Science-Mind-Map
Theory
Computational complexity
understand the difference
between P, NP, NPHard and
NPComplete
models of computation
finitestate automata
regular languages (and regular
expressions)
pushdown automata
contextfree languages
formal grammars
Turing machines
lambda calculus
undecidability
Architecture
understand a computer from
the transistors up
standard levels of abstraction
transistors
gates
adders
adders
flip flops
ALUs
control units
caches
RAM
GPU model of
highperformance computing
recommendations
design and simulate a small CPU
The Unix philosophy
emphasizes linguistic abstraction and
composition in order to effect
computation
commandline computing
IDEless software development
textfile configuration
recommendations
navigate and manipulate the filesystem
compose processes with pipes
comfortably edit a file with
emacs and vim
create, modify and execute a
Makefile for a software project
write simple shell scripts
An engineering core
physics through electromagnetism
take up through multivariate calculus
differential equations
probability
linear algebra
statistics
Software engineering
version control
debugging tools
Discrete mathematics
formal mathematical notation
sets
tuples
sequences
functions
power sets
trees
graphs
formal languages
automata
learn enough number theory to study and
implement common cryptographic
protocols
Build a portfolio
publicly browsable code
perproject page
github or Google code
Cryptography
Understand
symmetrickey cryptosystems
publickey cryptosystems
secure hash functions
challengeresponse authentication
digital signature algorithms
threshold cryptosystems
recommendations
breaking ciphertext using premodern
cryptosystems with handrolled statistical
tools
implemment RSA
create their own digital certificate
and set up https in apache
write a console web client that
connects over SSL
know how to use GPG
know how to use publickey
authentication for ssh
know how to encrypt a directory
or a hard disk
Data structures and algorithms
how to design algorithms
greedy
dynamic strategies
know both the imperative and
functional versions of each
algorithm
hash tables
linked lists
trees
binary search trees
directed and undirected graphs
Systems administration
Install and administer a Linux distribution
Configure and compile the Linux kernel
Troubleshoot a connection
with dig, ping and traceroute
Compile and configure a web
server like apache
Compile and configure a DNS
daemon like bind
Maintain a web site with a text editor
Cut and crimp a network cable
32 1