"You can't stop the signal, Mal. Everything goes somewhere, and I go everywhere."
 Mr. Universe, from the movie "Serenity"
Course Description
This course is part of the University of Idaho series on Artificial Intelligence and Machine Learning which comprises these three courses: Artificial Intelligence, Machine Learning, and Evolutionary Computation.
Prereq: Solid C/C++ programming skills, solid understanding of basic linear algebra, calculus, probability/statistics, UNIX skills desirable, CS210 or instructor permission.
We will focus on the machine learning half of Artificial Intelligence. This includes algorithms to learn behavior, classify data, and predict behaviors and/or data given past data. This is an implementation course. We will implement some of the important algorithms of machine learning and apply them to small problems (usually under 1000 samples of data). This is a course about the algorithms and not about using premade tools to do machine learning and data mining. We will look at topics such as decision trees, neural networks, deep learning, Markov brains, and reinforcement learning. There will be lots of programming in C/C++ and algorithm work. Proficiency in programming in C/C++ is required as well as a solid understanding of undergrad math including an understanding of basic probability and statistics, probability distributions, calculus, and linear algebra. Algorithm descriptions will be given in Python and demonstrations in Mathematica (purchase not required).
Hopefully this will be fun and entertaining.
Time: TTh 2:003:15 Pacific Time Final: 575 students are required to create a final project and report. Location: JEB 026 

Textbook:
Machine Learning: An Algorithmic Perspective by Stephen Marsland (Second Edition!) 

Optional Ref:
The Quick Python Book 2nd Ed. by Vernon L. Ceder Really great and easy to read book. Fine index. 
Estimated Syllabus From 2018
This syllabus is an estimate of what we might cover this semester. The class varies from semester to semester to reflect new and interesting topics.
Week  Monday 
Topics/Links  Assignments  Comments  

wk 1  Jan 7  Artificial Intelligence, Machine Learning, Data Analytics the big picture, Learning vs Prediction, The classes of problems  Read Chapter 1  NO CLASS MONDAY Jan 7  
wk 2  Jan 14  Examining and cleaning the input, missing data, scaling, curse of dimensionality  Read chapter 2  
wk 3  Jan 21  Simple perceptron, single layer neural networks, matrix version of single layer algorithm, sigmoid functions, demonstration of algorithms running  Read chapter 3  NO CLASS MONDAY  
wk 4  Jan 28  Multilayer NN and backprop, convergence behavior and demo  Assignment 1  
wk 5  Feb 4  NO CLASS THIS WEEK  
wk 6  Feb 11  training, validation, testing, measures of quality, ROC space, recursive networks, evolutionary training of neural networks, NEAT and HyperNEAT and topology learning  Assignment 2, Read chapter 2.4  
wk 7  Feb 18  Dimensionality reduction and PCAs. PCA derivation part 1 PCA derivation part 2  Read chapter 6.2 on  NO CLASS MONDAY  
wk 8  Feb 25  Linear Discriminant Analysis (LDA), nearest neighbor methods  Read chapter 6.1, chapter 7, Assignment 4  
wk 9  Mar 4  
xx  Mar 11  SPRING BREAK!  
wk 10  Mar 18  Decision Trees  
wk 11  Mar 25  Association Rules  
wk 12  Apr 1  Association Rules  Assignment 5  
wk 13  Apr 8  Reinforcement Learning, QLearning, Sarsa, eligibility traces  
wk 14  Apr 15  Ensemble learning, some text analysis basics  Assignment 6  
wk 15  Apr 22  Deep learning  
wk 16  Apr 29  Stochastic Learning with the EM algorithm  
wk 17  May 6  Finals Week  Final: None (Projects due on Monday) 
References and Resources
 mat.tar or mat.zip is a C++ matrix object with strong debugging features. Uses included random number generators. WARNING: the tar/zip contains a file named makefile and two example cpp code files. Do not overwrite your own makefile by exploding this archive over your makefile.
 A tutorial on make for general information
 Some notes on the formulas for basic feedforward neural networks.
 List of Python Tutorials
 A basic UNIX tutorial
 A tutorial on bit operations in C/C++
 The website for the text book
 University of California Irvine Machine Learning Repository
 A listing of the Mathematica example
 A detailed commented version of the backprop algorithm.
Services
 The class has its own machine with more uptodate compilers than maybe in other classes! The machine is: cs475.cs.uidaho.edu. Give it a try and report any problems to cshelp@uidaho.edu if there is a problem. The machine is only visible on campus. If you are outside the university firewall you will need to VPN onto campus. To be allowed to VPN, you need to sign up with IT by contacting helpdesk@uidaho.edu to have your student account added to the VPN group.
 Homeworks for CS475 are submitted for testing using this secure submission page. The last submission before the due date will be graded. This is the only place to submit homeworks.
 How Testing Works