Course Code 
Course Title 
Weekly Hours* 
ECTS 
Weekly Class Schedule 
T 
P 
AID201 
Programming for Data Science 
3 
2 
6 

Prerequisite 
None 
It is a prerequisite to 

Lecturer 

Office Hours / Room / Phone 

Email 

Assistant 

Assistant Email 

Course Objectives 
The objectives of this course are:
1. To introduce the concepts and applications of data science and Python
2. To teach the basics of Python programming and data structures
3. To teach how to use various Python libraries and tools for data science
4. To teach how to perform data analysis, visualization, machine learning, and deep learning tasks with Python
5.  To teach how to apply Python skills to realworld data science projects and challenges

Textbook 
1. VanderPlas, J. (2016). Python Data Science Handbook: Essential Tools for Working with Data. O'Reilly Media.
2. Grus, J. (2019). Data Science from Scratch: First Principles with Python. 2nd ed. O'Reilly Media.
3. Klosterman, S. (2019). Data Science Projects with Python: A Case Study Approach to Gaining Valuable Insights from Real Data with Machine Learning. Packt Publishing.
4. McKinney, W. (2018). Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython. 2nd ed. O'Reilly Media.
5. Mueller, J.P. and Massaron, L. (2019). Python for Data Science For Dummies. 2nd ed. Wiley. 
Additional Literature 

Learning Outcomes 
After successful completion of the course, the student will be able to: 
 understand the definition and scope of data science and Python
 write clear and efficient Python code for data science
 use various Python libraries and tools for data science
 perform data analysis, visualization, machine learning, and deep learning tasks with Python
 apply Python skills to realworld data science projects and challenges

Teaching Methods 
There will be a 1 hour of theory and explaining the background of the topic, then we will continue with the programming and practice 
Teaching Method Delivery 
Facetoface 
Teaching Method Delivery Notes 

WEEK 
TOPIC 
REFERENCE 
Week 1 
Introduction to Data Science and Python   Understand the definition and scope of data science  Learn the basics of Python programming and syntax  Install and use Anaconda and Jupyter Notebook 

Week 2 
Data Structures and Control Flow in Python   Learn how to use variables, data types, operators, and expressions in Python  Learn how to use lists, tuples, dictionaries, and sets to store and manipulate data in Python  Learn how to use conditional statements, loops, and functions to control the flow of execution in Python 

Week 3 
NumPy and SciPy   Learn how to use NumPy arrays and operations to perform numerical computations in Python  Learn how to use SciPy modules and functions to perform scientific computations in Python  Learn how to use linear algebra, statistics, optimization, and integration tools from NumPy and SciPy 

Week 4 
Pandas and Data Wrangling   Learn how to use Pandas Series and DataFrame objects to store and manipulate tabular data in Python  Learn how to use Pandas methods and functions to perform data wrangling tasks such as indexing, slicing, filtering, sorting, grouping, aggregating, merging, and reshaping data  Learn how to handle missing values, outliers, duplicates, and inconsistent data using Pandas 

Week 5 
Matplotlib and Data Visualization   Learn how to use Matplotlib pyplot module and objectoriented interface to create and customize various types of plots in Python  Learn how to use Matplotlib features such as axes, labels, titles, legends, annotations, colors, styles, grids, subplots, and interactive plots  Learn how to use Matplotlib to visualize different kinds of data such as histograms, bar charts, pie charts, line charts, scatter plots, box plots, etc 

Week 6 
Seaborn and Advanced Data Visualization   Learn how to use Seaborn library to create highlevel statistical data visualization in Python  Learn how to use Seaborn features such as themes, palettes, facets, grids, distributions, regressions, categorical plots, etc.  Learn how to use Seaborn to visualize different kinds of data such as correlations, distributions, relationships, comparisons, etc. 

Week 7 
Midterm Exam   Review the topics covered in the first six weeks of the course  Apply the knowledge and skills learned in the course to solve various data science problems using Python  Demonstrate the ability to write clear and efficient Python code for data analysis and visualization 

Week 8 
Introduction to Machine Learning with ScikitLearn   Understand the definition and types of machine learning  Learn the basic steps of a machine learning project such as data preparation, model selection, model training, model evaluation, and model deployment  Learn how to use ScikitLearn library to perform machine learning tasks in Python 

Week 9 
Supervised Learning: Regression   Understand the concept and applications of regression analysis  Learn how to use ScikitLearn to perform linear regression, polynomial regression, ridge regression, lasso regression, and elastic net regression in Python  Learn how to evaluate and compare different regression models using metrics such as mean squared error, root mean squared error, Rsquared, and adjusted Rsquared 

Week 10 
Supervised Learning: Classification   Understand the concept and applications of classification analysis  Learn how to use ScikitLearn to perform logistic regression, knearest neighbors, decision trees, random forests, support vector machines, and naive Bayes classification in Python  Learn how to evaluate and compare different classification models using metrics such as accuracy, precision, recall, f1score, confusion matrix, ROC curve, and AUC score 

Week 11 
Unsupervised Learning: Clustering and Dimensionality Reduction   Understand the concept and applications of clustering and dimensionality reduction techniques  Learn how to use ScikitLearn to perform kmeans clustering, hierarchical clustering, DBSCAN clustering, principal component analysis, and tSNE in Python  Learn how to evaluate and visualize different clustering and dimensionality reduction results using metrics such as silhouette score, inertia, and scatter plots 

Week 12 
Machine Learning Model Selection and Evaluation   Understand the concept and importance of model selection and evaluation in machine learning  Learn how to use ScikitLearn to perform crossvalidation, grid search, random search, and pipeline in Python  Learn how to use ScikitLearn to perform model validation, model comparison, model selection, and model improvement in Python 

Week 13 
Introduction to Deep Learning with TensorFlow and Keras   Understand the definition and types of deep learning  Learn the basic concepts and components of artificial neural networks such as neurons, layers, weights, biases, activations, loss functions, optimizers, etc.  Learn how to use TensorFlow and Keras libraries to build and train various types of neural networks in Python 

Week 14 
Deep Learning Applications: Computer Vision and Natural Language Processing   Understand the applications and challenges of computer vision and natural language processing using deep learning  Learn how to use TensorFlow and Keras to perform image classification, object detection, face recognition, text classification, sentiment analysis, text generation, etc. in Python  Learn how to use TensorFlow and Keras to implement some of the popular deep learning models such as convolutional neural networks ( 

Week 15 
Final Exam   Review the topics covered in the second half of the course  Apply the knowledge and skills learned in the course to solve various data science problems using Python  Demonstrate the ability to write clear and efficient Python code for data analysis, visualization, machine learning, and deep learning 
