-
Notifications
You must be signed in to change notification settings - Fork 40
/
syllabus.Rmd
384 lines (246 loc) · 28.6 KB
/
syllabus.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
---
title: "QTM 151 - Introduction to Statistical Computing II"
author: "Danilo Freire"
date: "Fall 2024"
output:
pdf_document:
fig_caption: yes
latex_engine: pdflatex
template: syllabus-template.latex
email: [email protected]
fontsize: 12pt
geometry: margin=1in
header-includes: \linespread{1.05}
office: "[36 Eagle Row, room 480](https://maps.app.goo.gl/bGHKwasQyp5MnQND6)"
officehours: Mon-Fri Afternoon
classroom: XXX
classhours: Mon/Wed, 16:00-16:50
web: github.com/danilofreire/qtm151
---
# Course Description
Welcome to [QTM 151](https://github.com/danilofreire/qtm151)! This course introduces students to data analysis and statistical computing using Python and SQL. It is ideal for those with little or no programming experience who want to develop skills for data-driven decision making.
Over the semester, we will cover version control for collaborative coding, Jupyter Notebooks for reproducible research, Python programming basics, data wrangling and merging in SQL, data visualisation, and introductions to linear modelling and time series analysis.
Students will work with real-world datasets and problems, gaining practical experience in using these tools to extract insights from data. The course aims to develop both technical skills and critical thinking needed for complex data challenges. By the end, students will be ready for advanced study in quantitative methods and data science.
# Learning Objectives
By the end of this course, students will be able to:
1. Perform basic operations and write functions in Python.
2. Conduct data wrangling and manipulate data using Python libraries such as Pandas.
3. Merge and manage databases using SQL.
4. Create visualisations to effectively communicate data insights.
5. Implement linear models and understand the principles of time series analysis.
6. Use Jupyter Notebooks for reproducible research.
7. Develop problem-solving skills relevant to data analysis and statistical computing.
# Prerequisites
There are no prerequisites for this course. All students are welcome to join, regardless of their prior experience with programming or data analysis. Please feel free to reach out if you have any questions about the course content or your readiness to take the class.
# Materials
This course is designed to be self-contained, providing all the necessary resources and materials to succeed in mastering the core concepts. However, students are encouraged to explore the following suggested books and online courses to deepen their understanding of Python and SQL.
## Suggested Books
- [Python for Data Analysis](https://wesmckinney.com/book/) by Wes McKinney
- [Elements of Data Science](https://allendowney.github.io/ElementsOfDataScience/README.html) by Allen Downey
- [Automate the Boring Stuff with Python](https://automatetheboringstuff.com) by Al Sweigart
- [Python for Everybody](https://www.py4e.com/book.php) by Charles Severance
- [SQL for Data Scientists](https://sqlfordatascientists.com/) by Renee M. P. Teate
## Online Courses
- [Coursera: Python for Everybody Specialisation](https://www.coursera.org/specializations/python)
- [edX: Python Basics for Data Science](https://www.edx.org/learn/python/ibm-python-basics-for-data-science)
- [Codecademy: Learn Python](https://www.codecademy.com/learn/learn-python-3)
- [DataCamp: Introduction to SQL](https://www.datacamp.com/courses/intro-to-sql-for-data-science)
- [Coursera: SQL for Data Science](https://www.coursera.org/learn/sql-for-data-science)
## Additional Resources
- [Python Documentation](https://docs.python.org/3/)
- [Pandas Documentation](https://pandas.pydata.org/pandas-docs/stable/)
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)
- [SQLBolt](https://sqlbolt.com/)
- [DataLemur for SQL interview practice](https://datalemur.com)
- [Github Guides](https://guides.github.com/)
# Course Information
We will meet every Monday and Wednesday from 16:00 to 16:50 in the [Anthropology
Building, 303](https://maps.app.goo.gl/bgxTfADzf1Vz2z1EA). It is important that you read the materials before class. All information about the course is available on the course's GitHub repository at <https://github.com/danilofreire/qtm151>. While I will try to adhere to the course schedule as much as possible, I also want to adapt to your learning pace and style. The syllabus and course plan may change in the semester. Again, please check [the course repository](https://github.com/danilofreire/qtm151) regularly to check for updates. I will also announce any changes in class and via email.
# Software
We will mainly use [Python](https://www.python.org) in this course. Python is a free, versatile, and powerful programming language that is widely used in data science, machine learning, and scientific computing. I recommend using the [Anaconda distribution](https://www.anaconda.com/products/individual) as it comes with many necessary Python libraries for data analysis, such as [Pandas](https://pandas.pydata.org/), [NumPy](https://numpy.org/), and [Jupyter](https://jupyter.org/).
You can write your Python code in any text editor, but I recommend [VS Code](https://code.visualstudio.com/) with the [Python extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python). [Pycharm](https://www.jetbrains.com/pycharm/) is also well-regarded by developers. If you are feeling adventurous, you can also use [Neovim](https://neovim.io/) with the [coc-pyright](https://github.com/fannheyward/coc-pyright) plugin. That is, if [you can exit the editor](https://stackoverflow.blog/2017/05/23/stack-overflow-helping-one-million-developers-exit-vim/). :)
We will use [PostgreSQL](https://www.postgresql.org/) for database management. You can download PostgreSQL from the [official website](https://www.postgresql.org/). Please also install [pgAdmin](https://www.pgadmin.org/) and the [VS Code extension](https://marketplace.visualstudio.com/items?itemName=ckolkman.vscode-postgres) for PostgreSQL to interact with the database.
We will also use [Jupyter Notebooks](https://jupyter.org/) in class. Jupyter itself comes pre-installed with Anaconda, but please install the [Jupyter extension for VS Code](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter&ssr=false) as well. We will have a hands-on session to learn how to use Jupyter effectively.
To help you get started, I have prepared [a series of tutorials](https://github.com/danilofreire/qtm151/tree/main/tutorials) on how to install Anaconda, Jupyter, PostgreSQL, VS Code, and open a free educational account on GitHub. Please follow these tutorials as soon as possible to ensure that you have all the necessary tools for the course.
# Office Hours
I am very flexible with office hours, but it is easier to contact me via email. Feel free to send me a message any time at [[email protected]](mailto:[email protected]), and I will likely reply within a few hours. If you prefer, you can meet me in the afternoon at my office. I am in the [Department of Quantitative Theory and Methods](https://qtm.emory.edu) almost every weekday. My office address is in the [Psychology and Interdisciplinary Sciences Building, 36 Eagle Row, room 480](https://maps.app.goo.gl/bGHKwasQyp5MnQND6). If possible, please email me before coming to ensure that no two students book the same time slot.
# Academic Integrity
Upon every individual who is a part of Emory University falls the responsibility for maintaining in the life of Emory a standard of unimpeachable honour in all academic work. The [Honour Code of Emory College](http://catalog.college.emory.edu/academic/policies-regulations/honor-code.html) is based on the fundamental assumption that every loyal person of the University not only will conduct his or her own life according to the dictates of the highest honor, but will also refuse to tolerate in others action which would sully the good name of the institution. Academic misconduct is an offense generally defined as any action or inaction which is offensive to the integrity and honesty of the members of the academic community. Any suspected case of academic misconduct will be referred to the Emory Honour Council.
# Artificial Intelligence
Students have to submit ten problem sets and complete five in-class quizzes. You are allowed and encouraged to use AI to assist with your assignments. I recommend using [GitHub Copilot](https://copilot.github.com/) to generate code snippets, as it is free for students and provides good suggestions and explanations. [Claude](https://claude.ai), [ChatGPT](https://chat.openai.com), and [Perplexity AI](https://perplexity.ai) are also good tools. I am available to provide support and assistance with these tools during office hours or by appointment. However, please note that any errors or omissions resulting from the use of AI tools are your responsibility. Do not rely solely on AI to complete your assignments; you must always double-check your work. Remember to cite all sources used in your problem sets and projects, including AI tools.
# Special Needs and Accessibility Services
I am committed to providing necessary accommodations to ensure all students have an equal opportunity to succeed in this course. Students with medical or health conditions that may impact their academic performance should visit the [Department of Accessibility Services (DAS)](http://accessibility.emory.edu/) to determine eligibility for appropriate accommodations. Those who receive accommodations should provide me with an Accommodation Letter from DAS at the beginning of the semester or as soon as the accommodation is granted. Please note that DAS accommodations, such as extra time or quiet spaces, will apply only to quizzes, not assignments. This is because assignments are released in advance, allowing students to work at their own pace. Athletes and students with other commitments should also inform me of any scheduling conflicts at the beginning of the semester. I will do my best to accommodate these students, but I cannot guarantee that all requests will be granted. If you have any questions or concerns, please contact me.
# English Language Learners
Emory University welcomes students from around the country and the world, and the unique perspectives international and multilingual students bring enrich the campus community. To empower multilingual learners, an array of support is available including language and culture workshops and individual appointments. For more information about English Language Learning support at Emory, please contact the ELLP Specialists at <https://writingcenter.emory.edu>. No student will be penalised for their command of the English language.
# Assignments and Grading Policy
**Problem Sets (50%).** There will be ten problem sets throughout the course. These assignments are designed to reinforce concepts covered in lectures and readings, and to provide hands-on practice with statistical programming. Problem sets will include a mix of theoretical questions and practical applications. They will be assigned regularly and must be completed individually. You may discuss your work with other colleagues as long as you do not copy entire sentences, just changing a few words. If you worked with other students, please write down their names on your assignment. Please also acknowledge any sources you used in your work, including textbooks, articles, and AI resources. *Any assignment submitted after the due date/time will automatically be graded for half points*. To accommodate unexpected circumstances, your lowest assignment grade will be automatically dropped at the end of the semester. *The same applies to in-class quizzes*. Please submit all assignments in Jupyter Notebook format (`.ipynb`) via Canvas until midnight on the due date.
**Class Quizzes (30%).** Students will also take five in-class quizzes throughout the semester. These quizzes will be based on the lectures from the previous weeks. They will be designed to test your understanding of the material and your ability to apply the concepts to new problems. Quizzes will be open-book and open-notes, and students have 50 minutes to complete them. You are **not** allowed to use AI tools. They are individual assessments, and students are not allowed to discuss the questions with their colleagues in class.
**Final Project (20%).** The final project will consist of a short report, created using Jupyter and using one of the datasets shared on the course [GitHub repository](https://github.com/danilofreire/qtm151/tree/main/final-project). Further instructions will be provided in class. The final project will be due on the last day of class.
# Grading Scale
Each student's final grade will be based on the following after rounding up to the nearest point:
| Grade | A | A- | B+ | B | B- | C | D | F |
|-------|---------|---------|---------|---------|---------|---------|---------|------|
| Range | 91%–100%| 86%–90% | 81%–85% | 76%–80% | 71%–75% | 66%–70% | 60%–65% | <60% |
# Course Outline and Suggested Readings
The lecture notes cover all the necessary material for the course, and the weekly suggested readings are recommended for those who want to deepen their understanding of the course topics. As mentioned above, the course outline is subject to change, and I will update the syllabus if needed. Please remember to check the course [GitHub repository](https://github.com/danilofreire/qtm151) regularly.
## Module 01: Introduction to Python, Jupyter, and GitHub
### Wednesday, August 28:
- Syllabus and course repository: <https://github.com/danilofreire/qtm151>.
- Lecture 01: [Welcome to QTM 151 - Introduction](https://danilofreire.github.io/qtm151/lectures/lecture-01/01-introduction.html).
- [Course Tutorials: How to Install Anaconda, Jupyter, PostgreSQL, VSCode, and Open a Free Educational Account on GitHub](https://github.com/danilofreire/qtm151/tutorials).
Weekly suggested readings:
- [DataCamp: SQL vs Python: Which Should You Learn?](https://www.datacamp.com/blog/sql-vs-python-which-to-learn) (Note: *both!*)
- Cao, L. (2017). [Data Science: A Comprehensive Overview](https://dl.acm.org/doi/pdf/10.1145/3076253). ACM Computing Surveys (CSUR), 50(3), 1-42.
- Brady, H. E. (2019). [The Challenge of Big Data and Data Science](https://www.annualreviews.org/content/journals/10.1146/annurev-polisci-090216-023229). Annual Review of Political Science, 22(1), 297-323.
- Zitnik, M., Nguyen, F., Wang, B., Leskovec, J., Goldenberg, A., & Hoffman, M. M. (2019). [Machine Learning for Integrating Data in Biology and Medicine: Principles, Practice, and Opportunities](https://www.sciencedirect.com/science/article/abs/pii/S1566253518304482). Information Fusion, 50, 71-91.
### Monday, September 02: Labour Day (no class)
### Wednesday September 04:
- Lecture 02: [GitHub Review](https://danilofreire.github.io/qtm151/lectures/lecture-02/02-github-review.html) and [Introduction to Jupyter Notebooks](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-02/02-jupyter.ipynb).
- **Assignment 01:** [Problem Set 01](https://github.com/danilofreire/qtm151/blob/main/assignments/01-assignment.ipynb).
Weekly suggested readings:
- [Microsoft: Jupyter Notebooks in VSCode](https://code.visualstudio.com/docs/datascience/jupyter-notebooks).
- VanderPlas, J. (2016). Python Data Science Handbook: Essential Tools for Working with Data. O'Reilly Media. [Chapter 01: IPython: Beyond Normal Python](https://jakevdp.github.io/PythonDataScienceHandbook/index.html).
- McKinney, W. (2022). Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython (3rd ed.). O'Reilly Media. [Chapter 02: Python Language Basics, IPython, and Jupyter Notebooks](https://wesmckinney.com/book/python-basics).
- [Corey Schafer: Jupyter Notebook Tutorial - Introduction, Setup, and Walkthrough](https://www.youtube.com/watch?v=HW29067qVWk). (Note: Corey Schafer is a great Python instructor on YouTube. Check out his other videos as well.)
- [Markdown Guide](https://www.markdownguide.org/basic-syntax/).
## Module 02: Python Data Types and Controlling Flows
### Monday September 09:
- Lecture 03: [Variables and Lists](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-03/03-variables-lists.ipynb).
### Wednesday, September 11:
- Lecture 04: [Mathematical Operations, Arrays, and Random Numbers](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-04/04-maths-arrays-random.ipynb).
- **Assignment 01 due (5%).**
- **Assignment 02:** [Problem Set 02](https://github.com/danilofreire/qtm151/blob/main/assignments/02-assignment.ipynb).
Weekly suggested readings:
- [Real Python: Python Data Types](https://realpython.com/python-data-types/).
- [Python Documentation: An Informal Introduction to Python](https://docs.python.org/3/tutorial/introduction.html).
- [NumPy Documentation: Quickstart Tutorial](https://numpy.org/doc/stable/user/quickstart.html).
- [Programiz: Math Operations in Python](https://www.programiz.com/python-programming/operators).
- Matthes, E. (2019). Python Crash Course: A Hands-On, Project-Based Introduction to Programming (2nd ed.). No Starch Press. [Chapter 02](https://nostarch.com/download/PCC3e_ch2sample_8.17.22.pdf).
- Severance, C. (2016). Python for Everybody: Exploring Data in Python 3. CreateSpace Independent Publishing Platform. [Chapters 3-11](https://www.py4e.com/lessons) (Note: Read only the chapters which interest you).
### Monday, September 16:
- Lecture 05: [Boolean Variables and If/Else Statements](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-05/05-boolean-if-else.ipynb).
### Wednesday, September 18:
- Lecture 06: [While Loops and For Loops](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-06/06-while-for.ipynb).
- **Assignment 02 due (5%).**
- **Assignment 03:** [Problem Set 03](https://github.com/danilofreire/qtm151/blob/main/assignments/03-assignment.ipynb).
Weekly suggested readings:
- [Real Python: Conditional Statements in Python](https://realpython.com/python-conditional-statements/).
- [Python Official Documentation: More Control Flow Tools](https://docs.python.org/3/tutorial/controlflow.html).
- [Python Official Documentation: Compound Statements](https://docs.python.org/3/reference/compound_stmts.html).
- [Real Python: Python 'while' Loops (Indefinite Iteration)](https://realpython.com/python-while-loop/).
- [Real Python: Python 'for' Loops (Definite Iteration)](https://realpython.com/python-for-loop/).
- [W3Schools: Python While Loops](https://www.w3schools.com/python/python_while_loops.asp).
- Sweigart, A. (2019). Automate the Boring Stuff with Python: Practical Programming for Total Beginners (2nd ed.). No Starch Press. [Chapter 02: Flow Control](https://automatetheboringstuff.com/2e/chapter2/).
## Module 03: Writing and Running Functions
### Monday, September 23:
- Lecture 07: [Applications 1: Simulation Studies](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-07/07-applications-simulation.ipynb).
### Wednesday, September 25:
- Lecture 08: [Functions and Arguments](https://danilofreire.github.io/qtm151/lectures/lecture-08/08-functions-arguments.ipynb).
- **Assignment 03 due (5%).**
- **Assignment 04:** [Problem Set 04](https://github.com/danilofreire/qtm151/blob/main/assignments/04-assignment.ipynb).
Weekly suggested readings:
- [NumPy Random Module Tutorial](https://www.w3schools.com/python/numpy/numpy_random.asp).
- [Python Functions](https://www.w3schools.com/python/python_functions.asp).
- [Real Python: Defining Functions in Python](https://realpython.com/defining-your-own-python-function/).
- [Python Tutorial for Beginners: Functions](https://www.youtube.com/watch?v=9Os0o3wzS_I).
### Monday, September 30:
- Lecture 09: [Global and Local Variables](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-09/09-global-local.ipynb).
### Wednesday, October 02:
- Lecture 10: [**Quiz 01: Application 02 - Operations over Multiple Datasets (6%)**](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-10/10-operations-multiple-datasets.ipynb).
- **Assignment 05:** [Problem Set 05](https://github.com/danilofreire/qtm151/blob/main/assignments/05-assignment.ipynb).
### Friday, October 04: (exceptionally)
- **Assignment 04 due (5%).**
Weekly suggested readings:
- [Programiz: Python Variable Scope (With Examples)](https://www.programiz.com/python-programming/global-local-nonlocal-variables).
- [NumPy Documentation: Indexing on `ndarrays`](https://numpy.org/doc/stable/user/basics.indexing.html).
- [Pandas Documentation: How do I Select a Subset of a `DataFrame`?](https://pandas.pydata.org/pandas-docs/stable/getting_started/intro_tutorials/03_subset_data.html).
### Monday, October 07:
- Lecture 11: [Subsetting Data](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-11/11-subsetting-data.ipynb).
Weekly suggested readings:
- McKinney, W. (2022). Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython (3rd ed.). O'Reilly Media. [Chapter 05: Getting Started with Pandas](https://wesmckinney.com/book/pandas-basics).
- VanderPlas, J. (2016). Python Data Science Handbook: Essential Tools for Working with Data. O'Reilly Media. [Section 3.2: Data Indexing and Selection](https://jakevdp.github.io/PythonDataScienceHandbook/03.02-data-indexing-and-selection.html).
- [Real Python: Linear Regression in Python](https://realpython.com/linear-regression-in-python/)
- [Towards Data Science: Linear Regression in Python](https://towardsdatascience.com/linear-regression-using-python-b136c91bf0a2).
- Sheppard, K. (2023). Introduction to Python for Econometrics, Statistics and Data Analysis (5th ed.). University of Oxford. [Chapter 21: Statistical Analysis with `statsmodels`](https://www.kevinsheppard.com/files/teaching/python/notes/python_introduction_2021.pdf).
## Module 04: Data Manipulation with Pandas
### Wednesday, October 09:
- Lecture 12: [Application 03: Linear Models](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-12/12-linear-models.ipynb).
- **Assignment 05 due (5%).**
- **Assignment 06:** [Problem Set 06](https://github.com/danilofreire/qtm151/blob/main/assignments/06-assignment.ipynb).
### Monday, October 14: Fall Break (no class)
### Wednesday, October 16:
- Lecture 13: [Creating and Replacing Variables](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-13/13-creating-replacing-variables.ipynb).
- **Assignment 06 due (5%).**
- **Assignment 07:** [Problem Set 07](https://github.com/danilofreire/qtm151/blob/main/assignments/07-assignment.ipynb).
Weekly suggested readings:
- [Python for Data Analysis: Data Cleaning and Preparation](https://wesmckinney.com/book/data-cleaning).
- [Codedamn: How to use the Replace function in Python](https://codedamn.com/news/python/how-to-use-the-replace-function-in-python).
### Monday, October 21:
- Lecture 14: [**Quiz 2: Application 4: Random Assignment (6%)**](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-14/14-random-assignment.ipynb).
### Wednesday, October 23:
- Lecture 15: [Aggregating Data](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-15/15-aggregating-data.ipynb).
- **Assignment 07 due (5%).**
- **Assignment 08:** [Problem Set 08](https://github.com/danilofreire/qtm151/blob/main/assignments/08-assignment.ipynb).
Weekly suggested readings:
- VanderPlas, J. (2016). Python Data Science Handbook: Essential Tools for Working with Data. O'Reilly Media. [Chapter 3: Data Manipulation with Pandas](https://jakevdp.github.io/PythonDataScienceHandbook/03.00-introduction-to-pandas.html).
- McKinney, W. (2022). Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython (3rd ed.). O'Reilly Media. [Chapter 07: Data Cleaning and Preparation](https://wesmckinney.com/book/data-cleaning).
- [DataCamp: Pandas Tutorial: DataFrames in Python](https://www.datacamp.com/tutorial/pandas-tutorial-dataframe-python).
- [Real Python: Pandas Tutorial: DataFrames in Python](https://realpython.com/pandas-dataframe/).
## Module 05: Data Manipulation with SQL
### Monday, October 28:
- Lecture 16: [Merging Data](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-16/16-merging-data.ipynb).
### Wednesday, October 30:
- Lecture 17: [Introduction to SQL](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-17/17-introduction-sql.ipynb).
- **Assignment 08 due (5%).**
- **Assignment 09:** [Problem Set 09](https://github.com/danilofreire/qtm151/blob/main/assignments/09-assignment.ipynb).
- **Instructions for the Final Project:** [Final Project](https://github.com/danilofreire/qtm151/blob/main/final-project).
Weekly suggested readings:
- [Mode Analytics: SQL Tutorial](https://mode.com/sql-tutorial/).
- [Real Python: SQL Databases and SQLite](https://realpython.com/python-sql-libraries/).
- [Khan Academy: SQL Basics](https://www.khanacademy.org/computing/computer-programming/sql). (Note: Khan Academy is a great resource for learning SQL and other programming languages).
- [Coursera: PostgreSQL for Everybody](https://www.coursera.org/specializations/postgresql-for-everybody).
- [PostgreSQL Tutorial](https://www.postgresqltutorial.com/).
- [PostgreSQL Documentation: SQL Commands](https://www.postgresql.org/docs/current/sql-commands.html). (Note: For reference only).
### Monday, November 04:
- Lecture 18: [**Quiz 3: Application 5: Practicing Chaining (6%)**](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-18/18-chaining.ipynb).
### Wednesday, November 06:
- Lecture 19: [Import SQL Data into Python](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-19/19-sql-python.ipynb).
- **Assignment 09 due (5%).**
- **Assignment 10:** [Problem Set 10](https://github.com/danilofreire/qtm151/blob/main/assignments/10-assignment.ipynb).
Weekly suggested readings:
- [Pandas Documentation: SQL Databases](https://pandas.pydata.org/docs/user_guide/io.html#sql-queries).
- [Real Python: Working with SQLite Databases Using Python and Pandas](https://realpython.com/python-sql-libraries/).
- [Mode Analytics: SQL Joins](https://mode.com/sql-tutorial/sql-joins/).
- [PostgreSQL Documentation: Joins Between Tables](https://www.postgresql.org/docs/current/tutorial-join.html).
## Module 06: Time Series and Panel Data
### Monday, November 11:
- Lecture 20: [Merging Tables in SQL](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-20/20-sql-merging.ipynb).
### Wednesday, November 13:
- Lecture 21: [Time Series Analysis](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-21/21-time-series.ipynb).
- **Assignment 10 due (5%).**
Weekly suggested readings:
- [W3 School: SQL Joins](https://www.w3schools.com/sql/sql_join.asp).
- VanderPlas, J. (2016). Python Data Science Handbook: Essential Tools for Working with Data. O'Reilly Media. [Section 3.11: Working with Time Series](https://jakevdp.github.io/PythonDataScienceHandbook/03.11-working-with-time-series.html).
- McKinney, W. (2022). Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython (3rd ed.). O'Reilly Media. [Chapter 11: Time Series](https://wesmckinney.com/book/time-series).
- [Pandas Documentation: Time Series / Date functionality](https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html).
### Monday, November 18:
- Lecture 22: [**Quiz 4: Application 6: Practice SQL Queries (6%)**](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-22/22-sql-queries.ipynb).
### Wednesday, November 20:
- Lecture 23: [Pivot Tables](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-23/23-pivot-tables.ipynb).
Weekly suggested readings:
- VanderPlas, J. (2016). Python Data Science Handbook: Essential Tools for Working with Data. O'Reilly Media. [Section 3.9: Pivot Tables](https://jakevdp.github.io/PythonDataScienceHandbook/03.09-pivot-tables.html).
- [Pandas Documentation: Reshaping and Pivot Tables](https://pandas.pydata.org/pandas-docs/stable/user_guide/reshaping.html).
- [Analytics Vidhya: Create Pivot Table Using Pandas in Python](https://www.analyticsvidhya.com/blog/2020/03/pivot-table-pandas-python/).
- [Real Python: How to Create Pivot Tables With `pandas`](https://realpython.com/how-to-pandas-pivot-table/).
## Module 07: Text Data and Advanced Plots
### Monday, November 25:
- Lecture 24: [**Quiz 5: Application 8: Time Data, Panel Data, and Plots (6%)**](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-24/24-time-panel-plots.ipynb).
### Wednesday, November 27: Thanksgiving Break (no class)
### Monday, December 02:
- Lecture 25: [Manipulating Text Data](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-25/25-text-data.ipynb).
### Wednesday, December 04:
- Lecture 26: [Advanced Plots](https://github.com/danilofreire/qtm151/blob/main/lectures/lecture-26/26-advanced-plots.ipynb).
Weekly suggested readings:
- [Real Python: Python String Formatting Best Practices](https://realpython.com/python-string-formatting/).
### Monday, December 09:
- **Final Project due (20%).**