Created
July 24, 2016 19:51
-
-
Save H2CO3/8b7ffecc60c764d680ff72e1608311f3 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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