Methods and tools for reading culture at scale.
Encode texts, map archives, model networks, and build sustainable digital scholarship — taught by practising humanists.
All Courses
Designed for senior students, this course moves on to deeper technical issues, influential critiques, and the lasting legacies of both thinkers. **Prerequisites:** "Wittgenstein and Carnap: The Core Debates" or at least two prior courses in logic and/or 20th-century philosophy. **Learning outcomes:** - Critically evaluate Wittgenstein's arguments in Remarks on the Foundations of Mathematics. <br>- Analyze the structure of the Private Language Argument. <br>- Assess the impact of Quine's critique of the analytic-synthetic distinction. <br>- Trace the legacies of formalism and practice-based philosophy.
This is a collection of intermediate and advanced modules for mastering Topic in the theoretical and practical study of Artificial Intelligence in computer science, philosophy of computing, cognitive sciences, and philosophy of artificial intelligence.
Learn how a real, published research game was built — from a humanities research question about immigration bureaucracy, through game design and full-stack engineering with AI/RAG, to ethics review and academic publication — by reading the actual codebase and design artifacts.
A hands-on, practical introduction to data science for Digital Humanities — taught through the 2026 Canadian Migration Data Challenge. Covers descriptive statistics, regression, clustering, machine learning, geospatial analysis, and policy reasoning using real Census housing data from Montréal, Toronto, Edmonton, and Vancouver.
Rock-solid setup practices: environment parity, clean settings, secrets, pinned dependencies, and stable project structure. **Prerequisites:** Comfortable with Python basics; able to run a Django project locally; basic Git usage. Some exposure to deploying (Heroku/Render/Docker) is helpful but not required. **Learning outcomes:** - Configure environment-specific settings (dev/stage/prod) safely - Manage secrets and env vars without hardcoding - Create reproducible environments with pinned dependencies - Structure apps vs project for clarity and reuse - Prepare a collectstatic-ready project and predictable media paths - Avoid common ALLOWED_HOSTS/DEBUG misconfigurations in production
Design models well, manage relations, master migrations (create/rollback/squash), and maintain data integrity and performance. **Prerequisites:** Knowledge of Python and Django basics. Should have completed Django Mastery 1. **Learning outcomes:** - Design relational models with clarity and normalization - Handle one-to-many and many-to-many relationships - Manage migrations effectively: create, rollback, squash - Maintain data integrity with constraints - Improve performance with indexes and optimized queries
Build robust views (FBV/CBV), pass context cleanly, craft DRY templates, validate input, and secure form handling. **Prerequisites:** Knowledge of Django models and migrations. Completion of Django Mastery 2 recommended. **Learning outcomes:** - Differentiate between FBVs and CBVs - Pass context and data to templates cleanly - Use template inheritance and avoid duplication - Validate forms and handle errors - Apply CSRF protection and input sanitization
Use Django auth well, design roles/permissions, customise Admin for productivity, and secure user flows end-to-end. **Prerequisites:** Knowledge of Django views, templates, and forms. Completion of Django Mastery 3 recommended. **Learning outcomes:** - Implement custom user models - Define roles and permissions - Protect views with decorators and permissions - Customise the Django Admin for productivity - Integrate social logins and password reset flows
Confident deployments with static/media pipelines, logging/observability, performance tuning, and production security. **Prerequisites:** Strong foundation in Django. Completion of Django Mastery 4 recommended. **Learning outcomes:** - Manage static and media files across environments - Configure deployment pipelines (Heroku/Render/Docker) - Debug common 500 errors in production - Tune performance with caching and query optimization - Apply best practices for Django security and monitoring