IST356: Programming Techniques for Data Analytics#
ποΈ Term: Fall 2026
ποΈ Room: Hinds Hall 111
πSections:
IST 356 M001 (15927): Tu/Th 9:30a - 10:50a
IST 356 M002 (15956): Tu/Th 2:00p - 3:20p
π¨ Professor: Michael Fudge
βοΈ Email: mafudge@syr.edu
π°οΈ Office Hours: M/W 12:00pm - 1:30pm
Course Description#
Approaches for building pipelines in data analytics using the Python programming language; data cleaning, extraction, wrangling, APIβs, web scraping. Building data products. Programming experience required.
Additional Course Description#
This course is a tour of programming techniques for building data pipelines for analytics. It will not just emphasize exploratory approaches, but also techniques to build extract transform load pipelines to run code in production. Throughout the course we will learn how to source data from a variety of sources (files, data streams, APIs, web scraping, etc.) and ultimately transform data as to prepare it for dashboards or machine learning. You will also learn some simple data visualization but that is not the primary emphasis of the course.
Prerequisites#
This courses uses the Python programming language. Proficiency n any programming language is the only pre-requisite. Students should have a clear understanding of these concepts:
Input, output, variables and data types
Control flow statements (if, for, while)
Functions (function definition, calling, parameters, return values)
Data structures (lists, dictionaries)
Using code in other libraries
Audience: IST256 or IST356?#
This course is intended as a follow up course to IST256. It is also appropriate for students with prior experience with programming who have an interest in data analytics.
IST256 is for students with little to no programming experience. The course content is 75% python fundamentals and 25% python for data analytics.
IST356 is for students with prior programming experience. The course content is 25% python fundamentals and 75% python for data analytics.
Are you ready for this course? π§ͺ Take the diagnostic assessment.
Credits#
3 credits
Course Fees#
None
Learning Objectives#
Upon completion of this course, students will be able to:
Explain techniques for sourcing or transforming data, and be able to justify the choice of technique
Solve data-oriented problems using programming techniques
Evaluate different code modules and application programming interfaces for suitability
Apply data transformational programming techniques to build a larger data pipelines
Create production quality data pipelines from exploratory code
Textbooks And Supplies#
π Textbooks#
There is no textbook you need to purchase for this course. All required readings are available freely online, and in many cases, the online sources are the most up-to-date references to the relevant course material. See reading list section for additional details.
Main Text#
Python Programming for Data Science, by T. Beuzen (2021) https://www.tomasbeuzen.com/python-programming-for-data-science/
Bring Your Own Device#
You are expected to bring your computer to each class session. This class is very hands-on, and you will be programming in class often using your own device.
Software to install and Github#
This course requires you to install software on your computer, or use a cloud computer from your Github account. Instructions are provided here:
π§βπ« IST356 Course Setup
Please complete the course setup ASAP. The expectation is you will be ready to code on the first day of class.
Course Requirements and Expectations#
Attendance and Participation#
You are expected to attend and participate in every class session. If you must miss class, you are responsible for making up the work and catching up on what you missed. Do not expect a pre-recorded lecture or instructor support if you miss class. A suggestion is to partner with a classmate to share notes from class.
Assignments#
The assignments are programming / problem solving activities that you will complete outside of class. The assignment due dates are posted on the course schedule. Consider these assignments formative assessments - practice so you can get better at computational thinking, problem solving and writing code. It is important to reflect upon your work and take an honest assessment of your abilities as you complete each assignment.
Each Monday we will review the homework assignment. Students will be asked to contribute to the discussion.
Factors affecting your grade:
Is the code working and correct?
Were the instructions followed? (e.g. commit after each function is written)
Good reflection: specific, uses terminology, actionable
Handed in on time, so your prof only needs to review submissions 1 time.
Exams#
Exams are summative assessments. They are designed to test your knowledge of the material. The exams will be issued in class on the dates posted on the course schedule. Exams are closed-book but you may bring one 8.5x11 sheet of paper with your notes on it. Exams length is 60 minutes. They will be a mix of mix of multiple choice, short answer and code tracing and code writing.
Project#
The project is your opportunity to demonstrate what you have learned in an experiential fashion. In your final project you will be expected to create a data pipeline of your choosing.
The pipeline should incorporate techniques we learned in the course and the more techniques you incorporate correctly the higher your grade.
It is expected that you will be able to explain your choices, and they will be appropriate for the problem.
The pipeline should be first written exploratory, and then refactored into a production quality pipeline. Both pipelines should be submitted.
There should be a simple data visualization or dashboard from the pipeline output as to demonstrate its usefulness.
Grading#
Assessment |
Type |
Learning Outcomes |
Quantity |
Points Each |
Points Total |
|---|---|---|---|---|---|
Assignments |
Formative |
1, 2 |
8 |
10 |
80 |
Exams |
Summative |
3, 4 |
2 |
50 |
100 |
Project |
Summative |
5 |
1 |
20 |
20 |
Total |
200 |
Grading Table#
The following grading scale translates your total points earned into a letter grade to be submitted to the University registrar.
Student Achievement |
Total Points Earned |
Registrar Grade |
Grade Points |
|---|---|---|---|
Mastery |
190 - 200 |
A |
4.000 |
180 - 189 |
A- |
3.666 |
|
Satisfactory |
170 - 179 |
B+ |
3.333 |
160 - 169 |
B |
3.000 |
|
150 - 159 |
B- |
2.666 |
|
Low Passing |
140 - 149 |
C+ |
2.333 |
130 - 139 |
C |
2.000 |
|
120 - 129 |
C- |
1.666 |
|
Unsatisfactory |
100 - 119 |
D |
1.000 |
0 - 99 |
F |
0.000 |
Other Policies#
Use of AI in this Course#
Based on the assignments in this course and our specified learning outcomes, the full use of artificial intelligence (AI) as a tool, with disclosure and citation, is permitted in this course. Students do not need to ask permission to use these tools before starting an assignment, but they must explicitly and fully indicate which tools were used and describe how they were used. Exams are issued in class with the understanding that AI will not be permitted.
Class Schedule#
Week |
Tuesday Class |
Thursday Class |
Friday Assignment Due |
|---|---|---|---|
1 |
8/25 |
8/27 |
8/28 |
Course Introduction |
Python 1-1 |
||
2 |
9/1 |
9/3 |
9/4 |
Python 1-2 |
Python 1-3 |
Assignment 1 (A1) β Submission Practice |
|
3 |
9/8 |
9/10 |
9/11 |
Python 1-4 |
UI 2-1 |
||
4 |
9/15 |
9/17 |
9/18 |
UI 2-2 |
Data Wrangling 3-1 |
Assignment 2 (A2) β Python |
|
5 |
9/22 |
9/24 |
9/25 |
Data Wrangling 3-2 |
Data Wrangling 3-3 |
Assignment 3 (A3) β UI/Streamlit |
|
6 |
9/29 |
10/1 |
10/2 |
Data Wrangling 3-4 |
Data Wrangling 3-5 |
||
7 |
10/6 |
10/8 |
10/9 |
Data Wrangling 3-6 |
Exam 1 Review |
Assignment 4 (A4) β Data Wrangling 1 |
|
8 |
10/13 |
10/15 |
10/16 |
No Class: Fall Break |
Exam 1 (E1) β 50 pts |
Assignment 5 (A5) β Data Wrangling 2 |
|
9 |
10/20 |
10/22 |
10/23 |
Web APIs 4-1 |
Web APIs 4-2 |
||
10 |
10/27 |
10/29 |
10/30 |
Web APIs 4-3 |
Web APIs 4-4 |
||
11 |
11/3 |
11/5 |
11/6 |
Web Scraping 5-1 |
Web Scraping 5-2 |
Assignment 6 (A6) β Web APIs |
|
12 |
11/10 |
11/12 |
11/13 |
Web Scraping 5-3 |
Web Scraping 5-4 |
||
13 |
11/17 |
11/19 |
11/20 |
Data Visualization 6-1 |
Data Visualization 6-2 |
Assignment 7 (A7) β Web Scraping |
|
14 |
11/24 |
11/26 |
|
No Class: Thanksgiving |
No Class: Thanksgiving |
||
15 |
12/1 |
12/3 |
12/4 |
Data Visualization 6-3 |
Data Visualization 6-4 |
||
16 |
12/8 |
12/10 |
12/11 |
Exam 2 (E2) β 50 pts, Last Day of Classes |
No Class: Final Exam Period |
Assignment 8 (A8) β Data Visualization |
|
Finals |
12/10 - 12/15 |
||
Project Due (P) β see registrar final exam schedule |
Reading List#
Unit 1. Python Essentials (Python)#
Reading List#
Python 1-1: Input, output, variables, types, conditionals
Python 1-2: Iterations, lists, dictionaries, comprehensions
Python 1-3: Functions, documentaion, strings, files
https://www.tomasbeuzen.com/python-programming-for-data-science/ (2.5 to 2.10)
For files / context Managers: https://realpython.com/python-with-statement
Python 1-4: Modules, import, pip, testing
https://www.tomasbeuzen.com/python-programming-for-data-science/ (3.1 to 3.2, and 4.1 to 4.4)
Reference Documenation#
Official Python Docs: https://docs.python.org/3/
PY4E - Python for Everybody. (2018). Py4e.com. https://www.py4e.com/book
Unit 2. User Interface (UI)#
Reading List#
UI 2-1: Ipywidgets and Interact in Jupyter
UI 2-2: Streamlit interactions
Reference Documenation#
IPywidget list: https://ipywidgets.readthedocs.io/en/latest/examples/Widget%20List.html
Streamlit API Reference: https://docs.streamlit.io/develop/api-reference
Unit 3. Data Wrangling#
Reading List#
Data 3-1: Pandas: series, data frame, index, numpy types, Nan, slicing
Data 3-2: Loading / saving, file formats json, csv, parquet, pickle, HTML
Data 3-3: Working with multiple dataframes: Concat, Merge
Data 3-4: Apply, iterations, lambdas
Data 3-5: Reshaping: Group by / aggregations, Pivot, Melt
Data 3-6: String and Date Handling
https://www.tomasbeuzen.com/python-programming-for-data-science/ (9.1, 9.2, 9.5)
Reference Documentation#
Pandas 2 documentation. https://pandas.pydata.org/docs/reference/index.html
Unit 4. Web APIs#
Reading List#
API 4-1: HTTP basics, requests, caching, error handling
Python Requests Quickstart: https://requests.readthedocs.io/en/latest/user/quickstart/
API 4-2: Reading swagger, GET/POST, API Keys
Fudge, M. (2018) Web APIs In Python. https://ist256.com/readings/Web-APIs-In-Python.html (Parts 1-3)
API 4-3: Open AI, AWS, Azure, Google APIs, OAUTH2 Flows
API 4-4: Hosting your own API with FastAPI
Fast API Tutorial. https://fastapi.tiangolo.com/tutorial/
Reference Documentation#
Python Requests API Reference: https://requests.readthedocs.io/en/latest/api/
The iSchool IoT Portal: https://portal.ischool-iot.net
OpenAPI Specification - Version 3.0.3 Swagger. (2020). https://swagger.io/specification
RFC6749. The OAuth 2.0 Authorization Framework (2012) https://datatracker.ietf.org/doc/html/rfc6749 β- FastAPI Reference. https://fastapi.tiangolo.com/reference/
Unit 5. Web Scraping#
Reading List#
Web 5-1: HTML basics, scraping techniques
Web Scraping with Python Playwright. https://scrapfly.io/blog/web-scraping-with-playwright-and-python/
Web 5-2: Playwright locators: finding data on the page
Playright documentaiton: locators. https://playwright.dev/python/docs/locators
Web 5-3: Playwright inputs: actionability
Web 5-4: Playwright: authentication
Reference Documentation#
Python Playwright docs: https://playwright.dev/python/
CSS Selectors Cheat Sheet: https://www.freecodecamp.org/news/css-selectors-cheat-sheet/
Unit 6. Data Visualization#
Reading List#
Viz 6-1: Plotting basics, matplotlib /seaborn
https://www.tomasbeuzen.com/python-programming-for-data-science/ (9.4)
Fudge, M. (2024) Python Visualizations. ist256/fall2024 (1-6 Seaborn)
Viz 6-2: Folium / Leaflet
Fudge, M. (2024) Python Visualizations. ist256/fall2024 (8-9 Folium)
Viz 6-3: Plotly
https://plotly.com/python/plotly-fundamentals/ (The first 4 tutorials - Figures to Plotly express)
Viz 6-4: Choropleths / GeoPandas
Introduction to Geopandas: https://geopandas.org/en/stable/getting_started/introduction.html
Reference Documentation#
Plotly for Python: https://plotly.com/python/plotly-fundamentals/
API reference β Seaborn Documentation. https://seaborn.pydata.org/api.html
Folium documentation. https://python-visualization.github.io/folium/quickstart.html
Seaborn Documentation. https://seaborn.pydata.org/api.html
Geopandas Documentation. https://geopandas.org/