Hardware Software Co-Design for Machine Learning [ECE/SCS 8803 - HML]