diff --git a/Models/0124-REPORT-Optimization_ShawkMasboob.ipynb b/Models/0124-REPORT-Optimization_ShawkMasboob.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..d6701ce3e25e0f0380d7bd8891283157f8546a87
--- /dev/null
+++ b/Models/0124-REPORT-Optimization_ShawkMasboob.ipynb
@@ -0,0 +1,60 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# <center>Using Optimization in Data Science</center>\n",
+    "\n",
+    "<center>by Shawk Masboob</center>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Optimization in industrial work, specifically data science, is an especially useful method of when there is limited information about accurate parameter values or the distribution of the random variables. Decision-making under uncertainty is very common in data science. Often, there is not enough historical data that the data scientist can refer to when estimating probabilities or the historical data may no longer accurately portray current trends. Additionally, estimation errors are threatening in industries; for instance, a company may over produce some product which in turn can cause a loss in profit. Hence, using a non-probabilistic method in decision-making under uncertainty is necessary. \n",
+    "\n",
+    "A great (and simple) example that demonstrates the importance of optimization in industrial work is inventory management: the warehouse manager needs to order a product for n number of stores and, based on some circumstances, are only able to purchase the product once for the entire planning period. The goal of the warehouse manager is to maximize the total cost with the actual aggregate demand. Potential uncertainty issues that may arise are assuming the values of the parameter follow a specific distribution or only focusing on the “worst-case” values. Optimization allows the warehouse manager  to create bounds on expected cost while incorporating a budget of uncertainty in the model. The warehouse manager can model the “maximum expected cost as a function of the budget of uncertainty.” Not incorporating uncertainty in the model is not wise because often times, the warehouse manager is unable to account and plan for all randomness, for instance, the actual demand does not match the forecasted demand. On the other hand, attempting to avoid the worst case scenario by “playing it safe” can result in lost profit. By utilizing optimization, the warehouse manager is able to make a decision that balances out the extremes. \n",
+    "\n",
+    "Other scenarios in which optimization is considered beneficial is in machine learning. Machine learning allows data scientists to learn from data in order to make predictions (or classifications) on similar data. Optimization allows data scientists to turn the knowledge into decisions. For example, performing a grid search is a form of optimization. Grid searches are a common way for data scientists to tune parameters. In support vector classification, for example, a grid search can be used to select the optimal error acceptance or the kernel  that produces the best accuracy. In general, optimization is necessary when the data scientist is working with missing data, making inferences about the future, or needs to make some decision under uncertainty. Optimization is also useful in any parametrized model or when the current available data does not match with the data scientist’s prior knowledge or intuition on the real world. Some optimization techniques that data scientists can use are accelerated gradient, stochastic gradient, coordinate decent, asynchronous parallel, shrinking techniques for regularized formulations, higher-order methods, or augmented Lagrangians, splitting, ADMM. \n",
+    "\n",
+    "In general, there are numerous optimization techniques and with a relatively broad job as a data scientists, the majority of these techniques can be used to make decisions that will typically result in the best possible outcome."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "---\n",
+    "# References\n",
+    "\n",
+    "[Bertsimas, Dimtris, and Aurelie Thiele. Robust and Data-Driven Optimization: Modern Decision-Making Under Uncertainty. Mar. 2006, www.mit.edu/~dbertsim/papers/Robust Optimization/Robust and data-driven optimization- modern decision-making under uncertainty.pdf.](http://www.mit.edu/~dbertsim/papers/Robust%20Optimization/Robust%20and%20data-driven%20optimization-%20modern%20decision-making%20under%20uncertainty.pdf)\n",
+    "\n",
+    "[Bertsimas, Dimtris, and Aurelie Thiele. Robust and Data-Driven Optimization: Modern Decision-Making Under Uncertainty. Mar. 2006, www.mit.edu/~dbertsim/papers/Robust Optimization/Robust and data-driven optimization- modern decision-making under uncertainty.pdf.](https://helper.ipam.ucla.edu/publications/gss2015/gss2015_12539.pdf)"
+   ]
+  }
+ ],
+ "metadata": {
+  "anaconda-cloud": {},
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.7.3"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
diff --git a/Topological_Machine_Learning/.DS_Store b/Topological_Machine_Learning/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..d626a404444af1ca378c8e6d5ccff55076c3097d
Binary files /dev/null and b/Topological_Machine_Learning/.DS_Store differ
diff --git a/Topological_Machine_Learning/.ipynb_checkpoints/Untitled1-checkpoint.ipynb b/Topological_Machine_Learning/.ipynb_checkpoints/Untitled1-checkpoint.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..2fd64429bf421126b7000c94ce0f6fd186fbd01f
--- /dev/null
+++ b/Topological_Machine_Learning/.ipynb_checkpoints/Untitled1-checkpoint.ipynb
@@ -0,0 +1,6 @@
+{
+ "cells": [],
+ "metadata": {},
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Topological_Machine_Learning/.ipynb_checkpoints/__init__.py-checkpoint.ipynb b/Topological_Machine_Learning/.ipynb_checkpoints/__init__.py-checkpoint.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..2fd64429bf421126b7000c94ce0f6fd186fbd01f
--- /dev/null
+++ b/Topological_Machine_Learning/.ipynb_checkpoints/__init__.py-checkpoint.ipynb
@@ -0,0 +1,6 @@
+{
+ "cells": [],
+ "metadata": {},
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Topological_Machine_Learning/__init__.py b/Topological_Machine_Learning/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..2fd64429bf421126b7000c94ce0f6fd186fbd01f
--- /dev/null
+++ b/Topological_Machine_Learning/__init__.py
@@ -0,0 +1,6 @@
+{
+ "cells": [],
+ "metadata": {},
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/Topological_Machine_Learning/__init__.py.ipynb b/Topological_Machine_Learning/__init__.py.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..30349492904d6ab76fc13a00d78259b0fb9f8b6a
--- /dev/null
+++ b/Topological_Machine_Learning/__init__.py.ipynb
@@ -0,0 +1,32 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.7.3"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/doc/.DS_Store b/doc/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..6e27a44abf0d397be0acd102067cfe58e9169201
Binary files /dev/null and b/doc/.DS_Store differ
diff --git a/doc/0117-PROJECT_Proposal_Template.ipynb b/doc/0117-PROJECT_Proposal_Template.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..73f3fce1813b367bf088ff7fe505fdb909367ef8
--- /dev/null
+++ b/doc/0117-PROJECT_Proposal_Template.ipynb
@@ -0,0 +1,139 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# <center>  Topological Data Analysis & Machine Learning </center>\n",
+    "\n",
+    "<center>By Shawk Masboob</center>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "<img src=\"https://avatars3.githubusercontent.com/u/41389769?s=400&v=4\" width=\"25%\">\n",
+    "\n",
+    "<p style=\"text-align: right;\">Image from: https://github.com/scikit-tda/scikit-tda</p>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "---\n",
+    "# Overview\n",
+    "\n",
+    "[Topological Data Analysis](https://en.wikipedia.org/wiki/Topological_data_analysis) (TDA) is a relatively new field  that seeks to integrate methods from topology with data science. In the most general sense, TDA attempts to make inferences and prediction by studying the the shape of data. The idea behind TDA is that the shape of the data contains important and useful information. Take a scatter plot that forms a loop, for example. TDA allows users to group points together based on some measure of similarity. Although groups are formed, the overall structure of the data is maintained. It works great with large and noisy data. To quote [Ayasdi](https://www.ayasdi.com/), a machine intelligence software company, \"Data has Shape, Shape has Meaning, Meaning drives Value.\" \n",
+    "\n",
+    "Skit-tda, the Python TDA package, offers a few examples on how to use TDA and more specifically, how to use the packages found within the library. Unfortunately, these examples are limited and not entirely helpful for those who are both new to TDA and wish to incorporate TDA with machine learning techniques. For instance, the example code for the Rips() function offers uses an array of random numbers. While this example demonstrates how the Rips() function is used, Additionally, the projects that do incorporate machine learning with TDA are typically presented as reports so their code is typically not accessible. This presents a challenge to inexperienced data scientists because while they are not required to know the theory behind TDA, integrating TDA with machine learning is not very simple.\n",
+    "\n",
+    "As stated above, there are not many references available online, specifically ones that integrate TDA with machine learning. To demonstrate the effectiveness of this integration, an an educational document that is accessible to any interested persons will be created. This document will provide a detailed example project which can be used as a reference. It can be thought of as a comprehensive tutorial. All of the programming libraries that this project will use are already available on Python. "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "---\n",
+    "# Program Description\n",
+    "\n",
+    "The first 1/3 of this project will require the utilization of traditional machine learning methods on a dataset. The purpose of this portion of the project is promote the benefits of TDA. It is used to show data scientists that they can achieve very interesting results when using TDA. The second portion of this project will be incorporating TDA with machine learning. This portion of the project will be the most demanding due to lack of references. I will attempt to perform both a classification type project and prediction type project. Additionally, I may have to rely on HPCC to run my script (TDA is computationally expensive). The final portion of the project will be creating a Jupyter demo project for data scientists as well as a short semi-theoretical document that discusses the more important features of TDA.\n",
+    "\n",
+    "I hope to create a script that is easy for those who are not familiar with TDA to follow. Ideally, I would like to create a document that scikit-tda is willing to publish. Hence, the document needs to be constructed in a manner that is easy to interpret by anyone who is new to TDA.\n",
+    "\n",
+    "Thankfully, python is already has the libraries that I will need. They are as follows:\n",
+    "- scipy\n",
+    "- numpy\n",
+    "- matplotlib\n",
+    "- pandas\n",
+    "- seaborn\n",
+    "- sklearn\n",
+    "- scikit-tda"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "---\n",
+    "# Project Goals and Timeline\n",
+    "\n",
+    "__Project deliverables:__ \n",
+    "\n",
+    "- 1/17/2020 - Proposal Due\n",
+    "- 1/31/2020 - Project git repository and structure due\n",
+    "- 2/14/2020 - Stub functions and Example code integration (With documentation)\n",
+    "- 2/28/2020 - Coding standers and Unit Test integrated into project\n",
+    "- 3/1/2020 - Spring break week\n",
+    "- 3/20/2020 - Code Draft (Code Review 1) \n",
+    "- 4/3/2020 - Code Draft (Code Review 2) \n",
+    "- 4/20/2020 - Final Project and Presentation Due\n",
+    "\n",
+    "__The overall timeline and project goals are as follows:__\n",
+    "\n",
+    "- 1/25/2020 - Have a dataset prepared\n",
+    "- 1/30/2020 - Data should be cleaned, normalized, or standardized\n",
+    "- 2/15/2020 - The short machine learning projects should be completed\n",
+    "- 2/30/2020 - Persistent homology portion of project is completed\n",
+    "- 3/30/2020 - Combining TDA with machine learning, e.g. using TDA for prediction\n",
+    "- 4/15/2020 - Project visualizations are complete\n",
+    "- 4/25/2020 - Project edits are completed and semi-theoretical article is completed article is completed\n",
+    "\n",
+    "__Term goals:__\n",
+    "\n",
+    "- 1/30/2020 - Project topic, i.e. type of dataset is selected and cleaned\n",
+    "- 2/30/2020 - Machine learning portion of the project is completed and first portion of the TDA aspect of the project is completed.\n",
+    "- 3/15/2020 - Classification using TDA is completed\n",
+    "- 3/30/2020 - Prediction using TDA is completed\n",
+    "- 4/1/2020 - Begin semi-theoretical document, improve visualizations, and find potential errors in code\n",
+    "- 4/15/2020 - Begin the Jupyter exercises, i.e. a step by step tutorial project for beginners\n",
+    "- 4/25/2020 - Editting is complete"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "---\n",
+    "# Anticipating Challenges  \n",
+    "\n",
+    "Concepts/skills to be learned and potential issues:\n",
+    "- I need to become familiar with the TDA package that Python offers. This will require some work but overall, it should not be very demanding.\n",
+    "\n",
+    "- I am currently only familiar with a small portion of TDA, specifically persistent homology. I have never used TDA and machine learning so it will be a challenge.\n",
+    "\n",
+    "- My knowledge is limited and is contingent on what is taught in the TDA course I am attending. I worry that the machine learning aspect will be covered at the end of the semester.\n",
+    "\n",
+    "- The coding required for this project is not the most rigorous however I may just be oblivious to the complexity of it all.\n",
+    "\n",
+    "- I am somewhat worried about interpreting the results at the end of the project. For instance, I carried out a TDA project on presidential election voting patterns.\n",
+    "\n",
+    "- My computer may not be powerful enough to run some code. I may very likely need to use the HPCC account. What worries me is the potential error in my code and having it backfire. This will slow me down substantially. "
+   ]
+  }
+ ],
+ "metadata": {
+  "anaconda-cloud": {},
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.7.3"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
diff --git a/doc/images/TDAscikit.png b/doc/images/TDAscikit.png
new file mode 100644
index 0000000000000000000000000000000000000000..11a67ccb482755adab9cc89fa0bc47ebbf722dd4
Binary files /dev/null and b/doc/images/TDAscikit.png differ