From ebf77d7b757b5dd18d2090aa9a1fd5fc099bdf09 Mon Sep 17 00:00:00 2001
From: Charles Reid
Date: Fri, 26 May 2017 00:07:26 0700
Subject: [PATCH] adding todo list and further details of the plan.

README.md  243 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 195 insertions(+), 48 deletions()
diff git a/README.md b/README.md
index 1d65972..7395445 100644
 a/README.md
+++ b/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: toto 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: todo 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 builtin 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 ToDo 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, NPComplete, 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 ToDo 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: kNearest Neighbor
+ [ ] Instance: Learning Vector Quantization
+ [ ] Instance: SelfOrganizing 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: kMeans
+ [ ] Clustering: kMedians
+ [ ] Clustering: Expectation Maximization
+ [ ] Clustering: Hierarchical Clustering
+
+ [ ] Dimensionality Reduction: PCA
+ [ ] Dimensionality Reduction: tSNE
+ [ ] 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 AutoEncoders












## 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 builtin 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.
