self-study
self-study copied to clipboard
Self study files based on "What every computer science major should know" from matt.might.net
self-study
Self study files based on "What every computer science major should know" from matt.might.net
Progress
- Haskell
- Latex
- Emacs
General
- [ ] Portfolio
- [ ] Resume
- [ ] Technical Communication
- [X] LaTeX
- [X] Emacs
- [ ] Vim
###Systems administration
###Programming Languages
- [X] ~~C~~
- [X] Haskell
- [ ] C++
- [ ] Assembly
- [ ] JavaScript
- [ ] Java
- [ ] Squeak
- [ ] Standard ML
- [ ] Prolog
- [ ] Scala
- [ ] Racket
###Discrete mathematics
###~~Data structures and algorithms~~
- [X] ~~hash tables~~
- [X] ~~linked lists~~
- [X] ~~trees~~
- [X] ~~binary search trees~~
- [X] ~~directed and undirected graphs~~
###Theory
- [ ] finite-state automata
- [ ] regular languages (and regular expressions)
- [ ] pushdown automata
- [ ] context-free languages
- [ ] formal grammars
- [ ] Turing machines
- [ ] the lambda calculus
- [ ] undecidability
- [ ] P, NP, NP-Hard and NP-Complete.
###Architecture
- [ ] transistors, gates, adders, muxes, flip flops
- [ ] ALUs, control units, caches and RAM
- [ ] GPU model of high-performance computing
- [ ] caches
- [ ] buses
- [ ] hardware memory management
- [ ] design and simulate a small CPU
###Operating systems
- [ ] how kernels handle system calls, paging, scheduling, context-switching, filesystems and internal resource management.
- [ ] runtime systems
- [ ] print "hello world" during the boot process;
- [ ] design their own scheduler;
- [ ] modify the page-handling policy; and
- [ ] create their own filesystem.
###Networking
- [ ] 802.3 and 802.11;
- [ ] IPv4 and IPv6; and
- [ ] DNS, SMTP and HTTP.
- [ ] an HTTP client and daemon;
- [ ] a DNS resolver and server;
- [ ] a command-line SMTP mailer.
###Security
- [ ] social engineering;
- [ ] buffer overflows;
- [ ] integer overflow;
- [ ] code injection vulnerabilities;
- [ ] race conditions; and
- [ ] privilege confusion.
###Criptography
- [ ] symmetric-key cryptosystems;
- [ ] public-key cryptosystems;
- [ ] secure hash functions;
- [ ] challenge-response authentication;
- [ ] digital signature algorithms; and
- [ ] threshold cryptosystems.
- [ ] create their own digital certificate and set up https in apache
- [ ] write a console web client that connects over SSL.
- [ ] how to use GPG;
- [ ] how to use public-key authentication for ssh;
- [ ] how to encrypt a directory or a hard disk.
###User experience design
- [ ] HTML
- [ ] CSS
- [ ] JavaScript
###Parallelism
- [ ] multicore, caches
- [ ] buses, GPUs
- [ ] CUDA and OpenCL
- [ ] MPI
- [ ] map-reduce
###Databases
- [ ] LAMP stack
###Software engineering
- [ ] SVN
- [X] Git
- [X] gdb
- [X] valgrind
###Formal methods
- [ ] theorem prover
###Machine Learning
- [ ] Bayesian networks
- [ ] Clustering
- [ ] Decision-tree learning
That's all folks!