Browse Source

adding to-do list and further details of the plan.

master
Charles Reid 5 years ago
parent
commit
ebf77d7b75
  1. 243
      README.md

243
README.md

@ -3,6 +3,63 @@
This repository contains checklists to prepare for
software engineering and machine learning interviews and jobs.
## The Plan
### Tracks
We are following two tracks:
* Software Engineering Track
* Machine Learning Track
Software engineering track:
* Paper and pencil working out algorithms
* Wiki: distilled, polished notes
* Git: to-to list for topics
* Git: code practice
* Flashcards
Machine learning track:
* Paper and pencil notes (rough), problems (working out), thinking
* Note: following Alpaydin book, working through problems
* Wiki: distilled, polished notes and learnings
* Summary of major concepts
* Answers/examples worked out more clearly
* Fast notes, for studying, not presentation, so snap photos and upload
* Git: to-do list for topics
* Git: code practice
* Flashcards
### Daily Plan
Each day:
- Pick one subject from the list.
- Watch videos on the topic.
- Implement the concept in Java or Python.
- Optionally, implement in C (and/or in C++, with or without the stdlib).
- Write tests to ensure code is correct.
- Create flashcards
After one week:
- Revisit and review
Long term strategy:
- Practice coding until you are sick of it.
- Add flashcards
- Work within limited constraints (think interviews).
- Know the built-in types.
Code:
- [Java](https://git.charlesreid1.com/cs/java)
- [Python](https://git.charlesreid1.com/cs/python)
- [C](https://git.charlesreid1.com/cs/c)
- [C++](https://git.charlesreid1.com/cs/cpp)
Practice writing out on a whiteboard and/or on paper,
before implementing on computer.
Get a big drawing pad from the art store.
See [checklist](#checklist) below for the checklist of completed tasks.
## Software Engineering
### Software Engineering: The Basics
@ -99,17 +156,6 @@ A much longer and fuller list of topics:
* Bloom Filter
* HyperLogLog
* Crypto and Security
* Information Theory
* Parity and Hamming Code
* Entropy
* Hash Attacks
* Unix
* Kernel Basics
* Command Line Tools
* Emacs/Vim
* Systems Level Programming
* Processing and threads
* Caching
@ -125,14 +171,91 @@ A much longer and fuller list of topics:
* Scalability
* Data Handling
* Crypto and Security
* Information Theory
* Parity and Hamming Code
* Entropy
* Hash Attacks
* Unix
* Kernel Basics
* Command Line Tools
* Emacs/Vim
* Supplemental topics
* Unicode
* Endianness
* Garbage Collection
* Networking
* Compilers
* Compression
* Garbage Collection
* Endianness
### Software Engineering: The To-Do List
- [ ] Arrays
- [ ] Linked lists
- [ ] Stacks
- [ ] Queues
- [ ] Hash tables
- [ ] Trees: binary search trees
- [ ] Trees: heap trees
- [ ] Trees: priority queues
- [ ] Trees: balanced search trees
- [ ] trees: red black trees
- [ ] Trees: tree traversal
- [ ] Graphs: directed and undirected
- [ ] Graphs: graph <--> adjacency matrix/list
- [ ] Graphs: BFS, DFS
- [ ] Algorithms: NP, NP-Complete, Approximation
- [ ] Search Algorithms: Sequential search
- [ ] Search Algorithms: Binary search
- [ ] Algorithms: Selection sort
- [ ] Algorithms: Merge sort
- [ ] Algorithms: Quick sort
- [ ] Algorithms: Heap sort
- [ ] Algorithms: String search methods
- [ ] Algorithms: Recursion
- [ ] Algorithms: Dynamic programming
- [ ] Algorithms: Convex hull
- [ ] Algorithms: Computational geometry
- [ ] Bits and Bytes
- [ ] Mathematics: Combinatorics
- [ ] Mathematics: Probability
- [ ] Mathematics: Linear Algebra (computational)
- [ ] Mathematics: FFT
- [ ] Systems: Processing and Threads
- [ ] Systems: Caching
- [ ] Systems: Memory
- [ ] Systems: System routines
- [ ] Systems: Messaging systems
- [ ] Systems: Serialization
- [ ] Systems: Queue systems
- [ ] Scaling: Systems design
- [ ] Scaling: Scalability
- [ ] Scaling: Data handling
- [ ] Parallel programming: Basic concepts/algorithms
- [ ] Crypto Security: Information Theory
- [ ] Crypto Security: Parity and Hamming Code
- [ ] Crypto Security: Entropy
- [ ] Crypto Security: Birthday/Hash Attacks
- [ ] Crypto Security: Public Key Cryptography Math
- [ ] Supplemental: Unicode
- [ ] Supplemental: Garbage Collection
- [ ] Supplemental: Networking
- [ ] Supplemental: Compilers
- [ ] Supplemental: Compression
- [ ] Supplemental: Endianness
## Machine Learning
@ -184,7 +307,7 @@ A longer, fuller list of topics:
* Naive Bayes
* Gaussian Naive Bayes
* Multinomial Naive Bayes
* Bayesian Netowrk
* Bayesian Network
* BBN (Bayesian Belief Network)
* Clustering
@ -240,39 +363,63 @@ A longer, fuller list of topics:
* Stacked Generalization (Blending)
* Gradient Boosted Regression Trees
### Machine Learning: The To-Do List
Have 1 repo, with a github pages.
HTML landing page with info about each topic.
Notebook for each overarching topic,
split into multiple notebooks as needed.
For exmaple, a notebook to compare ridge and lasso.
- [ ] Regression: linear regression
- [ ] Regression: logistic regression
- [ ] Regression: OLS regression
- [ ] Regression: Stepwise regressoin
- [ ] Regression: MARS
- [ ] Regression: LOESS
- [ ] Instance: k-Nearest Neighbor
- [ ] Instance: Learning Vector Quantization
- [ ] Instance: Self-Organizing Map
- [ ] Instance: Locally Weighted Learning
- [ ] Regularization: Ridge regression
- [ ] Regularization: LASSO
- [ ] Regularization: Elastic net
- [ ] Regularization: LARS
- [ ] Decision Tree: classification tree
- [ ] Decision Tree: CHAID
- [ ] Decision Tree: conditional decision trees
- [ ] Bayesian: LARS
- [ ] Bayesian: Naive Bayes
- [ ] Bayesian: Gaussian Bayes
- [ ] Bayesian: Multinomial Naive Bayes
- [ ] Bayesian: Bayesian Network
- [ ] Bayesian: Bayesian Belief Network
- [ ] Clustering: k-Means
- [ ] Clustering: k-Medians
- [ ] Clustering: Expectation Maximization
- [ ] Clustering: Hierarchical Clustering
- [ ] Dimensionality Reduction: PCA
- [ ] Dimensionality Reduction: t-SNE
- [ ] Dimensionality Reduction: PLS
- [ ] Dimensionality Reduction: Multidimensional Scaling
- [ ] Dimensionality Reduction: Principal Component Regression
- [ ] Dimensionality Reduction: Discriminant Analyses
- [ ] Association Rule: Apriori algorithm
- [ ] Deep Learning: CNN
- [ ] Deep Learning: RNN
- [ ] Deep Learning: LSTM
- [ ] Deep Learning: DBM
- [ ] Deep Learning: DBN
- [ ] Deep Learning: Stacked Auto-Encoders
## Daily Plan
Each day:
- Pick one subject from the list.
- Watch videos on the topic.
- Implement the concept in Java or Python.
- Optionally, implement in C (and/or in C++, with or without the stdlib).
- Write tests to ensure code is correct.
- Practice until you are sick of it.
- Work within limited constraints (think interviews).
- Know the built-in types.
Code:
- [Java](https://git.charlesreid1.com/cs/java)
- [Python](https://git.charlesreid1.com/cs/python)
- [C](https://git.charlesreid1.com/cs/c)
- [C++](https://git.charlesreid1.com/cs/cpp)
Practice writing out on a whiteboard and/or on paper,
before implementing on computer.
Get a big drawing pad from the art store.

Loading…
Cancel
Save