Introduction to Data Mining
Data Science Program, George Washington University
Syllabus

“Linear algebra is everywhere in the world of learning from data.” —Gilbert Strang
DATS 6103—Introduction to Data Mining · Fall 2026
This page is the authoritative syllabus for the course. If anything posted elsewhere (Blackboard, a printed handout, an older PDF) disagrees with this page, this page is correct.
Course and Contact Information
| Term | Fall 2026 |
| Section | 11 (CRN 53793) |
| Time | Tue 6:10–8:40 p.m. |
| Location | Gov 101 |
Instructor: Dr. Sushovan Majhi
Office: Samson Hall 313 (easiest entry from the Corcoran 2nd floor, through the end-of-hallway stairs)
Email: s.majhi@gwu.edu
Office hours: Monday 4:00–6:00 p.m., in person, Samson Hall 313. No appointment needed—walk in. These are joint office hours shared with DATS 6101, so students from either course are welcome at any point during the two hours.
Teaching Assistant: TBD
Course Description
This course introduces the core concepts of data mining as applied to data science, using Python throughout. Python Bootcamp is a prerequisite for the course; we open with advanced language features and move quickly into Linear Algebra, Numpy, and Pandas. Through weekly hands-on activities (called labs) and homework exercises, you will learn to acquire, clean, and visualize messy real-world data, explore it (EDA), and model it with a range of data mining methods—regression, trees and ensembles, k-NN, association analysis, and clustering.
You are expected to use AI assistants in this course, and you are expected to catch them when they are wrong. Much of the coding you will be asked to do can now be produced by a model in seconds; what cannot be automated is knowing whether the result is correct, whether the evaluation is honest, and whether the conclusion follows. Assignments are graded accordingly—see Use of AI Assistants below.
As an introductory class, we cover a broad spectrum rather than a specialized area; you will continue to build on these concepts and skills in the more advanced courses further into the program.
Learning Outcomes
This course is built on the conviction that data science is best understood through the lens of matrices. The three weeks we spend on arrays and linear algebra in September are not a detour: they come back in November, when least squares turns out to be a projection and the SVD turns out to explain what ridge regression shrinks, and again in December, when clustering needs PCA before distances mean anything. As a result of completing this course, students will be able to:
- Write well-structured Python code, including basic object-oriented constructs, for common data science tasks;
- Represent data as vectors, matrices, and tensors in Numpy, reasoning fluently about shapes, axes, and broadcasting, and apply matrix decompositions (QR, SVD, eigendecomposition) both to concrete problems— solving linear systems, PCA, image compression—and to explaining what regression, regularization, and clustering are doing geometrically;
- Acquire, clean, reshape, and merge real-world data with Pandas, including principled handling of missing values;
- Produce and interpret visualizations with Matplotlib and Seaborn as part of a coherent exploratory data analysis;
- Build and tune supervised and unsupervised models—regression, logistic regression, trees, random forests and gradient boosting, k-NN, and k-means—and select evaluation metrics appropriate to the task;
- Mine unlabelled data for structure: derive frequent itemsets and association rules, and judge them using support, confidence, and lift;
- Apply sound evaluation practice: separate training from testing, use cross-validation, reason about the bias–variance trade-off, and recognize overfitting and data leakage;
- Critically evaluate an analysis, whether their own, a peer’s, or one produced with the help of an AI assistant, and identify specifically where and why it goes wrong;
- Explain and defend an analysis out loud—the choice of model, its limitations, and what the result does and does not support—to both technical and general audiences.
Course Prerequisites
This course does not teach Python. Python Bootcamp is an enforced prerequisite, and from the second week onward we work in Numpy and Pandas at a pace that assumes the language itself is not what you are struggling with. The first session covers advanced constructs only—classes and objects—not the basics.
What you are expected to arrive knowing
You should be able to do all of the following without looking them up:
- Write a function, including default and keyword arguments;
- Use list and dictionary comprehensions;
- Work with nested lists and dictionaries and index into them confidently;
- Use
forandwhileloops andif/elif/elsebranching; - Read a traceback, identify the failing line, and fix the error;
- Install a package and import it.
If more than one or two of those give you pause, act in the first two weeks rather than the sixth.
Week 1 self-check
The Aug 25 lab includes a short ungraded Python diagnostic taken under lab conditions: no AI assistants, no notes. It does not count toward your grade. Its only purpose is to tell you, while you still have time to act, whether your Python is where this course assumes it is.
Take the result seriously. The in-class labs are 35% of your grade and are also unaided, so the diagnostic is an honest preview of them—and because AI assistants are permitted on homework, homework will not reveal a gap here until it is too late to fix. Students may drop through the end of the fourth week of classes without a W on the transcript; see the Registrar for the exact date.
If you need to catch up
- (Official Tutorial) https://docs.python.org/3/tutorial/index.html
- (eBook) Python for Data Analysis, Ch 1–3—https://wesmckinney.com/book/
Software
You will need the following:
- The latest stable Python 3 on your laptop.
- Jupyter Notebook (for IPython, interactive Python). If you use VS Code, follow this guide.
- git—check whether it is installed by typing
which gitin a terminal. - A free GitHub account, if you don’t already have one.
- Access to an AI assistant (ChatGPT, Claude, Copilot, Gemini, or similar). Free tiers are sufficient; no paid subscription is required for this course. If free-tier limits get in your way, come talk to me rather than paying for one.
Environment
Create a dedicated virtual environment for this course and install the course packages into it:
python3 -m venv dats6103
source dats6103/bin/activate # Windows: dats6103\Scripts\activate
pip install -r requirements.txtrequirements.txt lives in the course repository. Bring installation problems to office hours in the first two weeks, not the week an assignment is due.
Optional but strongly recommended: I personally use Visual Studio Code for all of my programming projects. If you use VS Code or another IDE, install and enable the extensions for Python, Markdown, and Jupyter Notebook.
Course Format
This is a flipped classroom, and it is a workshop rather than a lecture.
I will not present the lecture slides in class. The notes are the lecture: you read them before we meet. You arrive having met the material, and we spend the session on the parts you cannot do alone.
This is a foundational course, so that means more than keyboard time. A session runs in three modes:
- Question triage—I talk, but only about what you asked. The content comes from the questions you posted on the reading, not from slides.
- Reasoning and discussion—you talk to each other, and I referee. You will predict what code does before running it, justify an answer on paper or at the board, and defend it to someone who disagrees. Understanding why a matrix operation behaves as it does is the point of this course; the syntax is not.
- Lab—you work at your keyboard, I circulate. Labs are graded.
This is why the reading is not optional. There is no session where the content gets re-covered from the front of the room. If you have not read, you will spend the class reading instead of working, the lab is graded, and the lab cannot be made up outside class.
Before class: readings and questions
Every class day has an assigned reading, listed in the schedule above. Most are chapters of these course notes; the machine learning weeks use An Introduction to Statistical Learning.
As you read, post your questions directly on the reading page. Every chapter of these notes has a comment box at the bottom, backed by GitHub Discussions. Sign in with the GitHub account you already need for this course and post on the specific chapter where you got stuck—not the week overview page, which has no comment box. Questions can be small: “why does this line use .iloc and not .loc?” is a perfectly good one. You may also answer each other, and doing so counts in your favour.
Questions are due Monday at 12:00 noon, ahead of Tuesday’s class. That deadline exists so that I can read them before my Monday 4:00–6:00 p.m. office hours and build Tuesday’s session around what actually confused you. Questions posted after noon are welcome, but they will not shape the class.
You are expected to post at least one substantive question or answer for each class day. This is the participation component of your grade.
The reading for the first class is different: rather than a chapter of these notes, it is a review of Python from your Bootcamp material and the catch-up resources above. Come back up to speed on the language before Aug 25.
Nothing on Aug 25 counts toward your grade—not the lab, not the diagnostic, and not participation. The first week exists so that you can set up your environment, sign in to the comment system, and see how a session runs before any of it is scored.
Graded participation begins with the Sep 1 class, so the first questions are due Monday, Aug 31 at 12:00 noon.
During class
A typical session runs roughly as follows:
| Time | Activity | Mode |
|---|---|---|
| 0:00–0:20 | Question triage. I work through the questions you posted on the reading. | I talk |
| 0:20–0:45 | Reasoning. Away from the keyboard: predict what a piece of code will do, work a small proof, or decide which of two approaches is right—then argue it out in pairs and defend it to the room. | You talk |
| 0:45–1:10 | Lab, part 1. | You work |
| 1:10–1:20 | Break | |
| 1:20–1:35 | Checkpoint. I put a question to the room, you confer, and I call on someone at random to answer for their group. | You talk |
| 1:35–2:20 | Lab, part 2. | You work |
| 2:20–2:30 | Wrap-up, and what to read for next week. | I talk |
That is roughly 70 minutes at the keyboard, 40 minutes of discussion and reasoning, and 30 minutes of me—none of it from slides. Treat the split as a guide rather than a contract. A week whose posted questions reveal something genuinely hard will get more triage; a week of heavy implementation will get more lab.
The reasoning block is not filler and it is not optional. In a foundational course, the students who can already type the code but cannot say why it works are the ones who come apart in November, when the material stops being mechanical. Predicting output before running it, and having to defend that prediction to a classmate, is the cheapest way I know to find out which one you are while it still costs you nothing.
Labs
Labs are the main activity of every session, and they are 35% of your grade. The Aug 25 lab is ungraded; grading begins Sep 1.
You are graded on what you do in the room, not on the file you upload. I am not marking your notebook. I am watching you work, and the lab score records that. This is a deliberate choice: a notebook can be produced anywhere, by anyone, with any amount of help, and grading it would tell me almost nothing about you. Fifteen people in a room for two and a half hours tells me a great deal.
Each session is worth three points:
| Interview | You took both seats in the Part A pair interview, and your partner’s signed rubric card says so. |
| Discussion | You said something substantive at the checkpoint. Not necessarily correct—substantive. |
| Build | You were working on Part B when I came round, and you could tell me what you were stuck on. |
None of the three rewards being right. They reward being there, in the sense that matters: arguing, attempting, and being able to say where you are. A wrong answer you can defend earns full marks. Silence does not.
Upload your notebook to Blackboard before you leave. It is the record of what you did, and I will look at it if a grade is ever questioned, but it is not what earns the points—and a notebook uploaded by someone who was not in the room earns nothing at all.
Documentation is allowed. AI assistants are not. You may consult the official NumPy, Pandas, Matplotlib, and scikit-learn documentation freely during labs, along with these course notes. Looking things up is what practitioners do all day, and I am not assessing whether you have memorized function names. What you may not use is an AI assistant—see Use of AI Assistants.
Together with the exams, labs are the unaided portion of your grade and the honest measure of what you can do on your own.
How we work in the lab
You will work in a pair for Part A and a group of three for Part B, and the groups change every few weeks. Within a group, three named jobs rotate so that everyone does each of them over the semester:
- The driver types. Nobody else touches the keyboard.
- The navigator reads the documentation and decides where to go next, and never types.
- The skeptic owns the self-check cells and has to answer one question about every result: what would tell us this is wrong?
The skeptic is the most important seat and the one people find hardest. It is also the job this whole course is about, so take it seriously when it is yours.
At the checkpoint I will put a question to the room, give you a minute to confer, and then call on someone at random to answer for their group. Confer until everyone at your table could answer it, because any of you might be the one asked.
Your two lowest lab scores are dropped. There are twelve graded labs and your lab grade is the best ten of them. You do not need to explain a missed lab, ask permission in advance, or produce documentation—illness, work travel, a family obligation, or simply a bad night all count the same. Two are yours to spend as you see fit, and I would rather you spend one than come to class sick.
Beyond those two, a missed lab is a zero. Labs are not made up outside class, because the lab is the class: it is the working session, not a worksheet attached to one. If something larger than two weeks goes wrong in your semester, come talk to me early rather than late.
Participation
Participation is 10% of your grade and is earned in two ways:
- Before class, by posting substantive questions or answers on the reading pages by Monday noon, beginning with the Sep 1 class;
- In class, by contributing to discussion, responding when called upon, and staying on task during lab exercises.
A substantive question is one that shows you engaged with the material. “I don’t understand chapter 4” is not substantive. “I followed the derivation until the transpose appeared—why is it there?” is.
As with labs, your two lowest weeks are dropped, so the reading-question half of this grade is the best ten of twelve, on the same terms: no explanation, no advance permission, nothing to document. A week you miss class is a week you need not post, and the two allowances are meant to be spent together.
Textbooks
The second half of the course will loosely follow:
- An Introduction to Statistical Learning (Python edition) by Gareth M. James, Daniela Witten, Trevor Hastie, and Robert Tibshirani. Good for coding exercises. Free copy: https://www.statlearning.com/
- Python for Data Analysis, 3E by Wes McKinney. Free e-book: https://wesmckinney.com/book/
- Introduction to Data Mining, 2E by Pang-Ning Tan, Michael Steinbach, Anuj Karpatne, and Vipin Kumar. Used for the association analysis material, which ISL does not cover.
Course Schedule
| Date | Module | Topics | Reading | Due |
|---|---|---|---|---|
| Aug 25 | Advanced Python | Course introduction; how this course runs; Python classes & objects Lab: Python problem solving (ungraded) Ungraded Python diagnostic |
Python review: your Bootcamp material and the catch-up resources | GW Bootcamp |
| Sep 1 | Thinking in Arrays | Vectors, vector operations; matrices, basic matrix operations; a matrix as a linear map Lab: Reasoning about vectors and matrices |
week-1 | HW Python |
| Sep 8 | Tensors and tensor algebra; ndarrays; shapes, axes and broadcasting; views vs copies Lab: Predicting shapes and outputs before running them |
week-2 | HW Linear Algebra | |
| Sep 15 | Numpy linalg; diagonalization; decompositions (QR, SVD, LU); eigenvalues, orthogonality, projection; PCALab: Solving linear systems; image compression Returns on Nov 3, Nov 17 and Dec 8 |
week-3 | ||
| Sep 22 | Pandas & EDA | Pandas, data frames; acquiring data (API calls, CSV) Lab: Data wrangling exercise |
week-4 | HW Numpy |
| Sep 29 | Data imputation, data wrangling Lab: Data cleaning and imputation |
week-5 | ||
| Oct 6 | Exploratory data analysis as inquiry; visualization with Matplotlib and Seaborn as far as EDA requires Lab: Exploratory data analysis |
week-6 | HW Pandas | |
| Oct 13 | Fall Break—no class | |||
| Oct 20 | Exam 1 (in class) | |||
| Oct 27 | Machine Learning | Introduction to statistical learning; types of learning; noise & loss functions; training vs testing; cross-validation; bias–variance trade-off; curse of dimensionality; evaluation metrics Lab: Broken-analysis audit |
ISL Ch 2 | |
| Nov 3 | Linear and logistic regression as prediction rather than inference; least squares as projection onto the column space (Sep 15); regularization—how the SVD explains what ridge shrinks and why; model selection by cross-validation; scoring Lab: Applying to data |
ISL Ch 3–4, §6.2 | ||
| Nov 10 | Decision trees → random forests → gradient boosting Lab: Applying to data |
ISL Ch 8 | HW Regression | |
| Nov 17 | k-NN, concepts and applications; why distances concentrate in high dimensions—the curse of dimensionality as geometry (Sep 1) Lab: Applying to data |
ISL §2.2.3 | HW Decision Trees | |
| Nov 24 | Thanksgiving Break—no class | |||
| Dec 1 | Association analysis: frequent itemsets, the Apriori algorithm, support, confidence and lift; market-basket analysis Lab: Applying to data |
Tan et al. Ch 5 | HW k-NN | |
| Dec 8 | Cluster analysis: k-means and hierarchical clustering; PCA before clustering—reducing dimension so distances mean something (Sep 15); a first look at anomaly detection Lab: Applying to data (Last day of classes) |
ISL Ch 12 | HW Association Analysis | |
| Dec 10 (R) | Optional review session for Exam 2 (Make-Up / Reading Day) |
|||
| Dec 11–17 | Exam 2, at the time assigned by the Registrar (University final examination period) |
Use of AI Assistants
Generative AI tools—ChatGPT, Claude, Copilot, Gemini, and anything like them—are now part of how data science is practiced, and pretending otherwise would not serve you. They are also confidently wrong often enough that the ability to catch their mistakes is now a core professional skill. This course therefore teaches you to use them and holds you responsible for what they produce.
The policy differs by assessment type. When in doubt, ask me before you submit.
| Assessment | AI policy |
|---|---|
| Homework | Encouraged, with disclosure (see below) |
| In-class labs | Not permitted |
| Exams 1 and 2 | Not permitted |
Homework: AI is allowed, and the transcript is part of the submission
You may use any AI assistant you like on homework. If you do, your submission must include three things:
- Your working code.
- A prompt log—the prompts you gave the assistant and the responses you got back. A copied-and-pasted transcript or an exported share link is fine.
- A critique, roughly 150–300 words, answering: What did the assistant get wrong, or what would have gone wrong if you had accepted its output unchanged? Be specific—name the line, the wrong function, the silent type coercion, the misread of the question.
A submission with correct code and a thoughtless critique will score below one with imperfect code and a sharp critique. That is deliberate. Producing the code is no longer the hard part; knowing whether to trust it is.
If you did not use an assistant on a given assignment, write “No AI used” where the prompt log goes, and use the critique to explain the part of your own solution you are least confident in. You lose nothing by working unaided.
Labs and exams: no AI
In-class labs and the two exams are your unaided baseline, and together they are 65% of your grade. They exist so that both of us can see what you can do on your own. Using an assistant on them is an academic integrity violation under the GW Code.
“Unaided” means without an AI assistant. It does not mean from memory: during labs you may freely consult the official library documentation and these course notes. Function names are meant to be looked up. Reasoning is not.
Fabricating a prompt log
Submitting an invented or doctored transcript is falsification of data under the Academic Integrity Code and will be reported. If you did not use AI, say so—that is always an acceptable answer.
Assignments
Assignments are individual and due weekly, sometimes bi-weekly. Each assignment is graded on correctness of the code and on the quality of the AI disclosure described above. Details are posted on Blackboard.
Exams
There are two exams, each worth 15% of your grade.
Exam 1 is in class on Tuesday, October 20, and covers everything through the EDA module: Python, linear algebra and Numpy, Pandas, and exploratory data analysis.
Exam 2 falls in the university final examination period, December 11–17, at the time assigned by the Registrar. It covers the machine learning half of the course, from Oct 27 through Dec 8.
Both exams are individual and taken without AI assistance. As in labs, this does not mean from memory: the materials you may consult will be announced in advance of each exam.
Two exams rather than one is deliberate. This course is a prerequisite for six others, including the capstone, so what it certifies matters. A single October exam would have assessed only the first half of the course individually and unaided, leaving everything from cross-validation onward measured by homework, where AI is permitted.
Independent or Out-of-Class Learning
The average minimum amount of out-of-class or independent learning expected is 5 hours per week, for our 2.5 hours of classroom meetings. You are strongly encouraged to make use of office hours, the TA’s help, and other resources including those offered by library services. Do not wait until it is too late to get help.
Grading
| Component | Weight |
|---|---|
| Assignments | 25% |
| In-class labs | 35% |
| Participation (reading questions and in-class engagement) | 10% |
| Exam 1 | 15% |
| Exam 2 | 15% |
Letter Grades
| A | A– | B+ | B | B– | C+ | C | C– | F |
|---|---|---|---|---|---|---|---|---|
| ≥ 93 | 90–92 | 87–89 | 83–86 | 80–82 | 77–79 | 73–76 | 70–72 | < 70 |
University Policies
Observance of Religious Holidays
Students must notify faculty during the first week of the semester in which they are enrolled in the course, or as early as possible, but no later than three weeks prior to the absence, of their intention to be absent from class on their day(s) of religious observance. If the holiday falls within the first three weeks of class, the student must inform the faculty in the first week of the semester. For details, see “Religious Holidays” at provost.gwu.edu/policies-procedures-and-guidelines.
Academic Integrity Code
Academic integrity is an essential part of the educational process, and all members of the GW community take these matters very seriously. As the instructor of record for this course, my role is to provide clear expectations and uphold them in all assessments. Violations of academic integrity occur when students fail to cite research sources properly, engage in unauthorized collaboration, falsify data, use resources not permitted for a given assessment, and otherwise violate the Code of Academic Integrity. The permitted use of AI assistants in this course is defined in the Use of AI Assistants section above; use outside those bounds is a violation. If you have any questions about whether particular academic practices or resources are permitted, you should ask me for clarification. If you are reported for an academic integrity violation, you should contact the Office of Student Rights and Responsibilities (SRR) to learn more about your rights and options in the process. Consequences can range from failure of the assignment to expulsion from the university and may include a transcript notation. For more information, see the SRR website, email rights@gwu.edu, or call 202-994-6757.
Use of Electronic Course Materials and Class Recordings
Students are encouraged to use electronic course materials, including recorded class sessions, for private personal use in connection with their academic program of study. Electronic course materials and recorded class sessions should not be shared or used for non-course-related purposes unless express permission has been granted by the instructor. Students who impermissibly share any electronic course materials are subject to discipline under the Student Code of Conduct. Please contact the instructor if you have questions regarding what constitutes permissible or impermissible use of electronic course materials and/or recorded class sessions. Please contact Disability Support Services at disabilitysupport.gwu.edu if you have questions or need assistance in accessing electronic course materials.
Academic Support
Writing Center. GW’s Writing Center cultivates confident writers in the University community by facilitating collaborative, critical, and inclusive conversations at all stages of the writing process. Working alongside peer mentors, writers develop strategies to write independently in academic and public settings. Appointments can be booked at gwu.mywconline.com.
Academic Commons. Academic Commons provides tutoring and other academic support resources to students in many courses. Students can schedule virtual one-on-one appointments or attend virtual drop-in sessions at academiccommons.gwu.edu.
Support for Students Outside the Classroom
Disability Support Services (DSS)—202-994-8250. Any student who may need an accommodation based on the potential impact of a disability should contact Disability Support Services at disabilitysupport.gwu.edu to establish eligibility and to coordinate reasonable accommodations.
Counseling and Psychological Services—202-994-5300. GW’s Colonial Health Center offers counseling and psychological services, supporting mental health and personal development by collaborating directly with students to overcome challenges and difficulties that may interfere with academic, emotional, and personal success. healthcenter.gwu.edu/counseling-and-psychological-services
Safety and Security
- In an emergency: call GWPD at 202-994-6111 or 911
- For situation-specific actions: review the Emergency Response Handbook at safety.gwu.edu/emergency-response-handbook
- In an active violence situation: Get Out, Hide Out, or Take Out. See go.gwu.edu/shooterprep
- Stay informed: safety.gwu.edu/stay-informed