Data Science for Human-Centered Systems (IAT 461 / IAT 882, 4 units) – Summer 2026Archived
Welcome! This course follows the spirit of SFU SIAT's IAT 461 data science pipeline — carrying analyses from questions and data through cleaning, modeling, and interpretation for human-centered and interactive systems. Teaching happens online, over Zoom. Videos will be recorded and posted on YouTube, with downloadable slides on this site.
This page summarizes structure, outcomes, policies, grading, and the weekly schedule. When in doubt, the official SFU outline and Canvas announcements win if they ever differ from a draft here.
Format
- Lectures — Live Zoom sessions and asynchronous video on YouTube; slides (and sometimes links/references) are published on this website. CHECK THIS WEBSITE REGULARLY.
- Labs — online support / exercises aligned with each week.
- Expectations — plan roughly 6–8 hours/week beyond lecture viewing for readings, tutorials, and assignments (aligns with prior offerings of this course).
Learning Outcomes
On successful completion, you should be able to:
- Carry out the data analytics process for human-centered systems end to end, using appropriate terminology.
- Understand types of data and common pitfalls in analyzing each.
- Identify which techniques fit each stage of the pipeline and when they apply.
- Execute cleaning, feature engineering, method selection, and interpretation of results.
- Apply core models — including linear and logistic regression, k-means and hierarchical clustering, and methods such as decision trees, random forests, NLP, Topic Modeling, and Agentic Systems.
- Reason about integrating data into system design from needs analysis.
- Use the Python ecosystem (e.g. pandas, scikit-learn, stats-focused libraries) to implement analyses in notebooks.
Resources
- Required text: Steven S. Skiena, The Data Science Design Manual (2017). Access via SFU Library (Skiena e-book permalink from prior syllabus)
- Readings are required.
- Environment: we standardize on VS Code + Python; you may use Google Colab if you prefer, but support may be limited — export
.ipynband PDF as required for hand-ins.
Session videos & slides
Each week's YouTube link will appear in the syllabus table in the Video column as recordings go public. The Slides are hosted on this site; links appear in the same table when available.
Teaching Team
Course Policies
Contacting us
We use Discord for community Q&A; use SFU email for anything official (concessions, grading disputes with the instructor, etc.). Please allow up to about two business days for email replies — we'll often be faster.
To speed up replies, include: your full name; a subject line starting with "IAT461:"; and a clear question. For logistics specific to labs/tutorials, start with TA Mehdi; escalate to the instructor if needed.
Conduct
Please treat our online interactions the same way you would in-person interactions. As a teaching team we are dedicated to providing a harassment-free experience for everyone in this class, regardless of gender, sexual orientation, disability, physical appearance, body size, race, or religion. Harassment of any form is not tolerated. Sexual language and imagery is not appropriate in this class.
If you have concerns with anyone's conduct either in-person or online, email your instructor. If you do not feel comfortable reaching out to your instructor, please contact SIAT's advisors.
SFU's complete student conduct policy is available online.
Illness
If you are feeling ill, you should stay home and get better. Let your instructor or TA know that this is the case, and make sure to catch up with course materials to stay up-to-date.
Late assignments
Late penalties (10% a day for 2 days, 20% after). If you have issues and can't submit on time, please let us know in advance, we are happy to work figure out a way to get you up to speed.
Use of AI-assisted tools
Tools like ChatGPT, Copilot, and similar can help with syntax, debugging, or small code patterns — and learning to use them well is part of modern practice. For this course, disclosure and academic honesty matter.
In general: do not paste whole assignment solutions or full interpretation paragraphs from a model without doing your own analytical work. When AI informs a block of code, mark it clearly in the notebook (tool, link, prompt, and the adapted code) so we can see your judgment — a pattern like the #BEGIN/#END blocks used in prior offerings works well.
For written reports and presentations, your analysis should be your own words and reasoning; do not submit synthetic prose as if it were unchanged human insight.
Grading
| Component | Weight |
|---|---|
| Assignment | 38% |
| Midterm Quiz | 15% |
| Final Project Submission | 30% |
| Final Presentation | 12% |
| In-class Quiz and Lab Attendance | 5% |
| Lecture engagement | 5% (extra) |
This offering is online: you need a reliable computer, Python, and a notebook environment. Lecture ideas are introduced in the YouTube videos and readings; labs and assignments are where you practice the pipeline end to end.
You will submit work through GitHub. Instructions, rubrics, and due dates for each item are posted there — this site holds the week-by-week plan and slide decks.
There will be at least one midterm-style quiz.
The final project applies the full data-science workflow — implementation, communication, and often a short presentation or recording.
Note: For due dates and details, refer to the syllabus table below; we will keep Canvas aligned with this schedule.
Acknowledgements
The weekly structure, outcomes, and many pedagogical ideas trace to SIAT colleagues who developed IAT 461 before this offering — including Marek Hatala and Dilky Felsinger.
Course Syllabus
1 readings (show more)collapse
1 readings (show more)collapse
4 readings (show more)collapse
4 readings (show more)collapse
- Skiena (2017) — §§7–7.1.2, 7.2–7.2.4, 7.3, 7.4, 7.5.2 and §§9.6–9.7.2
- Gašević et al. (2016) — revisit §3.4 interpretation (same paper as week 6) — grads
- Van Goidsenhoven et al. (2020 LAK) — blended learning prediction (§§3–4; logistic results) — grads
- UCLA FAQ — interpreting odds ratios in logistic regression (bookmark)
4 readings (show more)collapse
- Skiena (2017) — §§5–5.1.3, 5.3 and §§9–9.1.2 (skip §9.1.3); read §9.2
- Gašević et al. (2016) — LA should not be one-size-fits-all (abstract + §§1.4, 2, 3.1–3.3) — grads
- ISL Lesson 3 — linear regression / residuals summary (optional technical depth)
- UVA — interpreting log transformations in a linear model (bookmark)
1 readings (show more)collapse
1 readings (show more)collapse
| Date | Topic | Lecture Topics | Lab Activities | Video | Slides | Readings & Prep | Assignment Out | Assignment Due |
|---|---|---|---|---|---|---|---|---|
W1 Lec May 11 Lab May 12 | Introduction to data science, Course structure — human-centered pipelines & repurposed data | How the course runs | What counts as data science — questions, goals | NumPy arrays and Pandas DataFrames — indexing, slicing, and vectorization (programming exercises). | 1 readings (show more)collapse | - | |||
W2 Lec May 18 Lab May 19 (self-paced) | Math for data science | Mathematical foundations used across DS | Probability and relationships | Optional Python exercises on distributions and correlations. | 1 readings (show more)collapse | - | - | ||
W3 Lec May 25 Lab Jun 2 | EDA, Data Cleaning and Visualization | Why and how to clean data | Choosing and interpreting plots — extracting insight visually | Rigorous cleaning with Pandas | Plot distributions with Seaborn | EDA-focused programming work tied to logging-style data. | 4 readings (show more)collapse | - | - | ||
W4 Lec Jun 1 | Models, Machine Learning, Model Performance | Model families | interpreting coefficients/odds | — | 4 readings (show more)collapse
| - | - | ||
W5 Lec Jun 8 Lab Jun 9 | Feature engineering | Feature construction in the project lifecycle — scaling, encoding | Sklearn.preprocessing — prepare a behavioral dataset for modeling (programming exercises). | - | ||||
W6 Lec Jun 15 Lab Jun 16 | Statistical analysis, Regression, Significance testing | Statistical significance testing | Linear regression — specification and interpretation | Statsmodels and Sklearn for regression on continuous human-centered metrics. | 4 readings (show more)collapse
| - | - | ||
W7 Lec Jun 22 Lab Jun 23 | Classification and Logistic regression | Midterm + a deep dive into logistic regression, coefficients, and classification evaluation | Classification and evaluation using SKLearn | 1 readings (show more)collapse | - | - | ||
W8 Lec Jun 29 Lab Jun 30 | Unsupervised Learning ,Clustering, and Dimensionality reduction | Unsupervised learning, Kmeans, DBScan, dimensionality reduction, PCA, UMAP | Unsupervised learning, and dimensionality reduction exercise. | 1 readings (show more)collapse | ||||
W9 Lec Jul 6 Lab Jul 7 | Natural Language, Text representation & Naive Bayes | Vector spaces | TF–IDF | Text Classification | Build a small semantic similarity calculator with NumPy and Sklearn. | - | - | - | ||
W10 Lec Jul 13 Lab Jul 14 | Embeddings & modern topic modeling | Transformers and contextual embeddings | BERTopic-style topic discovery | Hugging Face transformers to pull semantic themes from text (programming exercises). | — | - | |||
W11 Lec Jul 20 Lab Jul 21 | Transfer learning — zero-shot & few-shot | Pre-trained models | In-context learning with LLMs | Evaluate LLM zero-shot classification vs. a simple baseline. | — | — | - | - | |
W12 Lec Jul 27 Lab Jul 28 | LLM agents & structured outputs | Prompt engineering for function calling and retrieval-style (RAG) workflows | Streamlit — single-page app that talks to an LLM agent (programming exercises). | — | — | - | - | |
W13 Lec Aug 3 Lab August 3 (flex) | BC Day — university closed; flex project consulting | No formal lecture | Use the flex window for integration and deployment prep | Final project consulting and Streamlit deployment troubleshooting. | — | — | - | - | - |
Final showcase Lec Aug 10 Lab Aug 10 | Final project showcase | Presentations — showcase expectations and format | Final data project demonstrated as a hosted Streamlit app. | — | — | - | - |