Skip to content

Instantly share code, notes, and snippets.

@H2CO3
Created July 24, 2016 19:51
Show Gist options
  • Save H2CO3/8b7ffecc60c764d680ff72e1608311f3 to your computer and use it in GitHub Desktop.
Save H2CO3/8b7ffecc60c764d680ff72e1608311f3 to your computer and use it in GitHub Desktop.
Learning TODO:
~~~~~~~~~~~~~~
* Theoretical(-ish) Stuff:
------------------------
- Computer Science, Algorithms, Data Structures (e.g. Finite Automata,
Classic Graph Algos, Searching and Sorting, Solutions to NP-Complete
Problems, Inventing and Using Heuristics, Complexity Theory in Depth,
Combinatorial Optimization, Linear and Non-Linear Optimization, …)
- Declarative, Functional, Logic programming; Type Theory, Dependent Types,
Higher-Order and Higher-Kinded Types, Lambda Calculi, Hindley-Milner
Type Systems and Inference, Generics (Param. Polymorphism) and
Inheritance/Subtyping (Dynamic Poly.)…
- Cryptology: Cryptography and Cryptanalysis and the Underlying Maths
(Discrete Maths, Number Theory, Abstract Algebra [for Cryptography];
Statistics and Probability [for Cryptanalysis]),
State-of-the-Art Algorithms (RSA, Diffie-Hellmann, …)
…and Information Security in general
- Machine Learning, Deep Learning, Neural Networks, …
- Numerics, Numerical Analysis, Analytic Methods for Developing Numerical Methods,
Numeric Stability, Scientific Computing, Simulation, Fortran, …
- Systems Design and Architecture; Designing Big and Scalable Systems;
Special Methodologies (e.g. MapReduce, …)
See those pesky Design Patterns and Know When Not To Use Them
- Data Processing, Data Science, Database Management and Administration,
Data Mining, Interaction with Machine Learning, …
* Practical(-ish) Stuff:
----------------------
- Compilers: High-level and Low-Level Optimizations, Correctness Proofs,
Transformations, SSA in Detail, …
- Concurrency (understand CSP, program in Go with goroutines, green threads, …),
Transactional Memory
- Parallelism (Hardware, Vector, Pipelining, Instruction-Level Parallelism,
GPU programming; OpenMP, CUDA, OpenCL, etc.), Locking, Transactional Memory, …
- Hardware (FGPA, Caching, Pipelining, Branch Prediction, Hyperthreading,
other type of magic modern CPUs do;
Actually Understand Register-Transfer Language, …)
Understand and Practice Designing Digital Hardware
(like an Electrical Engineer)
- DSP, esp. Image Processing, Audio Processing, and The Math Behind It!!!
- Computer Graphics, Animation, 2D _and_ 3D, Lighting, Raytracing, Geometry,
Linear Algebra, Game Physics, …
- Networking (understanding protocols such as TCP and UDP in depth),
System Administration, Server Maintenance, Sandboxing,
Source Code Management (know SVN and Git reasonably well), …
- Operating Systems, Kernels, Resource Management (memory, scheduler, …)
- Reverse Engineering, Debugging, Cracking methods, Software and
Hardware Exploitation, Hardware Debugging (JTAG, serial…!)
Social Engineering, …
- Getting Real Expertise in Significant Programming Languages and Methodologies
- C, C++, Rust (Systems Programming)
- Haskell & ML, Agda, Prolog … (Pure Functional and Logic Programming)
- Learn a Real Lisp Well (Dynamically-Typed Functional Programming)
- Python, Ruby, JS (2 Good scripting languages and 1 Front-End Language)
- Unix Shell Script flavors and - mainly - lots of CLI tools/utilities!
- Pick an SQL Dialect (DB Administration)
- Hardware Design: VHDL, Verilog,
- Embedded Programming: C, Assembly - Microcontrollers [AVR, PIC], PLCs…
- Do More Technical Writing, Blogging, Presenting, Talks, goto conferences, …
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment