Skip to content
This repository has been archived by the owner on Sep 22, 2023. It is now read-only.

Latest commit

 

History

History
127 lines (108 loc) · 2.71 KB

README.md

File metadata and controls

127 lines (108 loc) · 2.71 KB

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
  • LaTeX
  • Emacs
  • Vim

###Systems administration

###Programming Languages

  • C
  • Haskell
  • C++
  • Assembly
  • JavaScript
  • Java
  • Squeak
  • Standard ML
  • Prolog
  • Scala
  • Racket

###Discrete mathematics

###Data structures and algorithms

  • hash tables
  • linked lists
  • trees
  • binary search trees
  • 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
  • Git
  • gdb
  • valgrind

###Formal methods

  • theorem prover

###Machine Learning

  • Bayesian networks
  • Clustering
  • Decision-tree learning

That's all folks!