self-study icon indicating copy to clipboard operation
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!