Practical Machine Learning and AI Systems
Course website on GitHub Pages · Start here · Course outline
Read the lessons here on GitHub or on the reading site. If a download link does not open, use the offline access route.
Learn to frame a useful problem, work with data, build and evaluate models, and explain whether an AI system should be used. This open educational resource combines short lessons, runnable Python examples, guided notebooks, independent practice and worked feedback across 14 modules.
Start with the readiness check and learning routes, or pick one of the learning paths. If you have never programmed, begin with Python Foundation, then return for our Python-to-ML bridge. You can learn through this resource independently or use it alongside an instructor's course.
Edition 0.7.0. Current status and tested scope.
All 14 modules include separate practice and solution notebooks. Attempt practice before consulting solutions; connect the small operations to the complete study and transfer task.
Who this is for
- MSIT and other graduate students encountering ML and AI for the first time.
- Learners from non-IT disciplines who want practical, explainable examples.
- Students with programming or ML experience who want to strengthen evaluation and explore deeper experiments.
- Instructors adapting individual modules or a complete sequence.
You do not need prior ML knowledge, calculus, a GPU or a paid AI account for the documented core activities. New programmers need planned preparation time. Python Foundation estimates about 12 guided hours plus practice; our bridge then adds dictionaries, packages, paths, CSV/JSON and dataframes. Experienced students can use the readiness check to skip familiar preparation. This support does not create a formal prerequisite course.
What you will learn
You will practice how to:
- Define a task, its stakeholder, observation, inputs, outcome and error costs.
- Read, validate, clean and explore data while preserving its meaning and provenance.
- Construct a model and compare it with a relevant simple baseline.
- Keep training, validation and final evaluation separate, and explain leakage and uncertainty.
- Work with classification, regression, clustering, neural networks and text representations.
- Evaluate local LLM outputs, small fine-tuning experiments and bounded tool workflows.
- Demonstrate checked inference, monitoring and a rollback plan.
- Communicate numerical evidence, limitations, ethical concerns and reasons not to deploy.
These are resource learning goals. The module outcomes identify more specific evidence; an adopting course sets its own official outcomes and assessments.
Get your first result
- Choose support: complete readiness and any needed Python preparation.
- Get the complete source: follow download, extraction and folder instructions. A notebook downloaded alone does not include the shared code and data.
- Run Module 1: open a terminal in the extracted project folder, where README.md and examples are visible. Python 3.11–3.13 are supported for the core modules; CI checks 3.12 and 3.13. The first script uses only the standard library.
Windows PowerShell:
py examples/first-run/scripts/first_run.py --storage-percent 85 --output runs/module01/first-run.txt
If py is unavailable, use python in the command above.
Linux or macOS:
python3 examples/first-run/scripts/first_run.py --storage-percent 85 --output runs/module01/first-run.txt
Expect Review storage. Open runs/module01/first-run.txt, change 85 to 70, save to a different output filename and explain the changed decision. This is a human-written rule; it does not train a model.
Continue with Module 1 and first-run setup. If a command fails, use troubleshooting before reinstalling unrelated software.
Choose how to work
| Route | How to begin | Execution scope |
|---|---|---|
| Notebook | Keep it inside the complete source folder, install the matching environment and select its kernel | Interactive construction and saved explanations |
| Script | Run the public script from the complete source folder with the matching environment | Same shared implementation; text/CSV/HTML evidence |
| Reading | Use the lesson pages and verified worked reports | Interpretation practice; implementation outcomes still need execution |
Core execution is checked on Windows and Linux. Framework modules 8–12 and 14 use a separate Linux CPU environment for TensorFlow, PyTorch/Transformers and Streamlit. For framework work on other platforms, use the Linux CPU reference environment. First installation and data/model downloads need connectivity; keep valid caches for later replay. Framework work needs additional disk and memory; see the framework requirements.
Environment choices explains Codespaces, Colab, Binder and local setup, including access, saving and verification limits. Select a service that can access the complete source and meets the documented environment requirements. Use an instructor's verified workspace when available.
Module map
The historical phishing-detection case adds an authentic IT security example with separate preparation, training, validation, evaluation and reporting stages, plus a combined notebook. The project companion helps you connect concepts across an existing course project or independent study.
A repeatable learning workflow
For an optional view of the entire lifecycle, use the complete capstone exemplar: a separate CPU project with grouped tuning, multi-seed and split-sensitivity experiments, frozen evaluation, a numeric inference bundle, monitoring rehearsal and an annotated completed report. The advanced route explains these investigations and distinguishes implemented experiments from further extensions. The existing 14 modules and their commands remain independently usable.
- Read the outcomes and decide what evidence you need to produce.
- Review the foundation bridge; use the glossary for unfamiliar terms.
- Predict the result of the guided construction before running it.
- Execute the notebook or script, inspect saved evidence and check a calculation independently.
- Make the required purposeful change, diagnose a failure and explain what happened.
- Attempt practice before comparing worked feedback; try a changed example if an answer was unfamiliar.
- Save code, commands, versions, source identities, readable results and your explanation. For notebooks, restart and run all to expose hidden state.
- Attempt optional depth after meeting the core outcome. Preserve evaluation boundaries when experimenting.
All modules include outcomes, a foundation bridge, guided construction, practice, public feedback and instructor notes. A copied report or successful run alone does not demonstrate independent mastery. Small models can perform poorly; those results are retained so you can critique them.
Data, reports and responsible AI use
Early modules use clearly labeled original teaching fixtures. Regression and the later modeling modules use attributed public datasets; the phishing case uses real historical security attributes. The source register documents rights, reviewed hashes, transformations and model provenance. Historical benchmark results do not establish current operational performance.
Lesson source is readable directly on GitHub. The reading site adds verified reports, executed notebook copies and source/data downloads; if a link there does not open, see reading the reports. You do not need to build the full site to study one module.
GenAI assistance is optional. Verify suggestions against code and evidence, protect private data, and follow the AI collaboration guidance and your instructor's disclosure rules. Public feedback supports self-study; it is not a confidential answer key.
Repository guide
| Location | Purpose |
|---|---|
| docs/start-here.md | Readiness, Python preparation and learning routes |
| docs/lessons/ | Student lessons, guided construction, practice, feedback and instructor notes |
| notebooks/ | Interactive companions; use inside the complete source tree |
| examples/ | Public scripts calling the shared implementation |
| src/practical_ml_ai/ | Shared Python processing, modeling and reporting code |
| data/ | Original fixtures, schemas and source manifests; downloaded external records stay in ignored runtime caches |
| docs/setup/ | Acquisition, environments, Python bridge and troubleshooting |
| docs/instructor/ | Adoption, assessment, pacing, alignment and learner-pilot guidance |
| templates/ | Reusable lesson, practice, data/model-card and review templates |
| tests/, scripts/, environments/ | Maintainer checks, build tools and tested dependency constraints |
| docs/maintenance/ | Repository hygiene and historical review evidence |
Generated site files, runtime results, environment folders, credentials, student submissions and private institutional planning sources do not belong in tracked course source. See the inventory audit and retention rules.
Instructors, contributors and help
Independent reviewers can use the review guide. Start with teach and adapt, assessment guidance and pacing. The resource does not replace Canvas grading, deadlines, accommodations or official course policies. Pilot preparation and workload with your actual learners. Text/table and script routes support access; accessibility status records remaining human testing.
Report security problems privately as described in SECURITY.md. For a nonsensitive reproducible software problem, open an issue with the module, environment, command and error text. Report accessibility barriers to ntiik@ucmail.uc.edu; see the reporting guide. Use the institution's established channels for course assessment or accommodation decisions.
Maintainers should use DEVELOPMENT.md for the separate core/framework test profiles, notebook verification, site assembly, archive checks and browser checks. Read CONTRIBUTING.md, the architecture and release checklist before extending the course. Students do not need the maintainer toolchain for their first lesson.
Maintainer and license
Maintained by Isaac K. Nti. Code is licensed under MIT; original educational content is CC BY 4.0 with component boundaries. External datasets and models retain their own rights. Use citation metadata and cite the datasets/models used in your work.
Authorship and course relationship
Isaac K. Nti developed the original explanations, activities, worked examples, code, and supporting materials in this repository. These supplementary resources support the course he teaches in the School of Information Technology at the University of Cincinnati. The official course description, course learning outcomes, and module learning outcomes are attributed to the University of Cincinnati and are excluded from this repository’s license grants. External materials retain their respective attribution and terms. These resources supplement the official syllabus. See licensing and institutional boundaries.