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

carlosavieira/self-study

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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!

About

Self study files based on "What every computer science major should know" from matt.might.net

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published