Index:
Course Overview:
Machine learning is an area of artificial intelligence that provides systems the ability to
automatically learn. Machine learning allows machines to handle new situations via analysis,
selftraining, observation and experience. The wonderful success of machine learning has made
it the default method of choice for artificial intelligence experts. In this course, we review
the fundamentals and algorithms of machine learning.
TextBooks:
Slides and Papers:
Recommended Slides & Papers:

Anaconda, Jupyter Lab, Markdown, Git, GitHub, and Google Colab:
Teaching Assitant Class: 
Python continues to take leading positions in solving data science tasks and challenges. Here are three of the most important of libraries. 
Numpy is the fundamental package for scientific computing with Python. 
Pandas is an easytouse data structures and data analysis tools 
Matplotlib is a Python 2D plotting library 
Resources: 
Scipy Lecture Notes 
Data Science iPython Notebooks 

Introduction

Empirical Risk Minimization

PAC Learning


The BiasComplexity Tradeoff

The VCDimension


Linear Predictors
R (Programming Language):

Decision Trees
R (Programming Language):

Nearest Neighbor
R (Programming Language):

Ensemble Methods
R (Programming Language):

Model Selection and Validation
R (Programming Language):

Neural Networks
R (Programming Language):

Convex Learning Problems

Regularization and Stability
R (Programming Language):

Support Vector Machines
R (Programming Language):

Multiclass Classification

Additional NoteBooks and Slides:
Class Time and Location:
Sunday and Tuesday 13:0014:30 PM (Spring 2020), Room 210
Recitation and Assignments:
Sunday 11:3012:30 PM (Spring 2020), Room 210
Refer to the following link to check the assignments.
Projects:
Projects are programming assignments that cover the topic of this course. Any project is written by
Jupyter Notebook. Projects will require the use of Python 3.7, as well as
additional Python libraries as follows.
 Python 3.7: An interactive, objectoriented, extensible programming language.
 NumPy: A Python package for scientific computing.
 Pandas: A Python package for highperformance, easytouse data structures and data analysis tools.
 ScikitLearn: A Python package for machine learning.
 Matplotlib: A Python package for 2D plotting.
 SciPy: A Python package for mathematics, science, and engineering.
 IPython: An architecture for interactive computing with Python.
Practical Guide:
Fascinating Guide to Use Python Libraries (Machine Learning):
Google Colab:
Google Colab is a free cloud service and it supports free GPU!
Latex:
The students can include mathematical notation within markdown cells using LaTeX in their Jupyter Notebooks.
 A Brief Introduction to LaTeX PDF
 Math in LaTeX PDF
 Sample Document PDF
Useful NoteBooks:
Grading:
 Homework – 30%
— Will consist of mathematical problems and/or programming assignments.
 Midterm – 20%
 Endterm – 50%
Two Written Exams:
Midterm Examination: Tuesday 1399/02/16, 13:0014:30
Final Examination: Tuesday 1399/03/27, 11:0013:00
Prerequisites:
General mathematical sophistication; and a solid understanding of Algorithms, Linear Algebra, and
Probability Theory, at the advanced undergraduate or beginning graduate level, or equivalent.
Linear Algebra:
Probability and Statistics:
Discrete Mathematics:
Course (Videos, Lectures, Assignments): MIT OpenCourseWare (Discrete Mathematics)
Topics:
Have a look at some reports of Kaggle or Stanford students (CS224N, CS224D) to get some general inspiration.
Account:
It is necessary to have a GitHub account to share your projects. It offers
plans for both private repositories and free accounts. Github is like the hammer in your toolbox,
therefore, you need to have it!
Academic Honor Code:
Honesty and integrity are vital elements of the academic works. All your submitted assignments must be entirely your own (or your own group’s).
We will follow the standard of Department of Mathematical Sciences approach:
 You can get help, but you MUST acknowledge the help on the work you hand in
 Failure to acknowledge your sources is a violation of the Honor Code
 You can talk to others about the algorithm(s) to be used to solve a homework problem; as long as you then mention their name(s) on the work you submit
 You should not use code of others or be looking at code of others when you write your own: You can talk to people but have to write your own solution/code
Questions?
I will be having office hours for this course on Monday (09:30 AM–12:00 AM). If this is not convenient, email me at hhaji@sbu.ac.ir or talk to me after class.