Course outline
COMS4036A & COMS7050A — Computer Vision
School of Computer Science and Applied Mathematics, University of the Witwatersrand
Semester 2, 2026
Instructor
Prof. Richard Klein · MSB UG07 · richard.klein@wits.ac.za
Description
Computer vision is the study of how machines extract meaning from images. This course follows the field’s own arc. It opens with the classical pipeline of filters, features, and codebooks, then spends the remaining thirteen weeks replacing that pipeline, stage by stage, with learned components: convolutional networks, detection and segmentation, transformers, self-supervised and language-aligned representations, generative diffusion models, and neural rendering in 3D.
The course is taught as one long-form lecture a week, with a lab in every week but the last. The lectures build the ideas; the labs build the practitioner skills that make them usable: experiment tracking, debugging rituals, data pipelines, hyperparameter search, and inference-time engineering. This book is the course’s written companion.
Timetable
| Day | Time | Venue | |
|---|---|---|---|
| Lectures | Tuesday | 14:15–17:00 | LB145 |
| Labs | Friday | 11:15–13:15 | MSL006 |
Fourteen teaching weeks run from 21 July to 27 October 2026. Labs are not compulsory, but they are the best opportunity to get help, and lab work is assessed. The full week-by-week schedule is on the next page.
Consultation
Tutors and I are available during most lab sessions. That is the best time to consult. Outside of that, book a slot at app.reclaim.ai/m/kleinric/consultation.
Communication
All official communication goes through the Moodle Announcements forum, which emails you. It remains your responsibility to make sure you receive it: you are expected to have seen any announcement within 24 hours of posting.
Ask questions publicly wherever you can. The Moodle Q&A forum exists so that answers reach everyone. Discord is available for informal discussion between students.
Textbooks and references
All of the following are freely available online.
- Szeliski (2022), Computer Vision: Algorithms and Applications, 2nd ed. The reference text for the classical material.
- Prince (2012), Computer Vision: Models, Learning, and Inference.
- Torralba, Isola & Freeman (2024), Foundations of Computer Vision.
- Goodfellow, Bengio & Courville (2016), Deep Learning.
- Prince (2023), Understanding Deep Learning.
Additional course resources
- Justin Johnson, EECS 498/598: Deep Learning for Computer Vision, Michigan.
- Fei-Fei Li et al., CS231n, Stanford.
- CS236: Deep Generative Models, Stanford.
- James Tompkin, CSCI 1430, Brown.
Syllabus
- Image formation and classical vision: cameras and projection; sampling, quantisation, and colour; filtering and convolution; edges and scale; texture with Gabor filters, MR8, and textons; local features (Harris, SIFT, HOG); Bag of Visual Words.
- Deep learning for vision
- Convolutional networks: LeNet, AlexNet, VGG, ResNet; transfer learning.
- Detection: the R-CNN lineage, one-stage detectors, DETR.
- Segmentation: FCN, U-Net, DeepLab, Mask R-CNN, SAM and SAM2.
- Sequences and attention: RNNs through to the transformer; ViT, Swin.
- Representation learning: contrastive and non-contrastive objectives, masked image modelling, DINOv2.
- Language-aligned vision: CLIP, open-vocabulary detection, vision-language models.
- Generative vision: diffusion mechanisms, latent diffusion, flow matching.
- 3D vision: multi-view geometry, NeRF, and 3D Gaussian Splatting.
- Frontiers: video understanding; where the field is heading.
Prerequisites
- Python sufficient to write non-trivial programs.
- Calculus and linear algebra.
- Probability theory.
- Machine learning fundamentals:
- supervised and unsupervised learning;
- feature extraction;
- the basics of neural networks and deep learning;
- train/validation/test splits;
- evaluation metrics: accuracy, precision and recall, F1, confusion matrices.
Programming languages and libraries
Python throughout. NumPy and PyTorch for tensors and models; OpenCV, PIL, and related libraries for classical work. Labs are developed and submitted as Jupyter notebooks, generally on Google Colab.
High-level library functions are permitted unless a task states otherwise. Some exercises require you to implement the method yourself. If the task says to build HOG, build it; do not call cv2.HOGDescriptor() or an equivalent wrapper. Low-level operations (slicing, convolution, broadcasting, custom filters) are always permitted.
Optional but recommended: Weights & Biases for experiment tracking, and Hugging Face for pretrained models and datasets.
Grading
Weightings are indicative and subject to change. Tests and the examination are common papers across both cohorts.
Honours (COMS4036A)
| Component | Weight |
|---|---|
| Labs | 10% |
| Test 1 | 15% |
| Test 2 | 15% |
| Project | 20% |
| Examination | 40% |
MSc Coursework (COMS7050A)
MSc students engage more deeply with the current research literature and with reproducibility, in place of the Honours applied project.
| Component | Weight |
|---|---|
| Labs | 5% |
| Test 1 | 15% |
| Test 2 | 15% |
| Research & Journal Club | 30% |
| Examination | 35% |
The Research & Journal Club component runs from Week 3 in the tail of the lecture slot, and is assessed across several activities rather than one deliverable: a paper reproduction with a report-back and viva, a presentation of the paper you intend to reproduce, a designated-discussant role (“Reviewer 2”) on somebody else’s paper, a timed PaperBlitz on an unseen paper, and a written referee report. The Journal Club page details each activity, the shared rubric, and the curated reproduction-paper list.
Assessment dates
- Test 1 (covers Weeks 1–6): Friday 4 September 2026, in the lab slot.
- Test 2 (covers Weeks 7–11): Friday 9 October 2026, in the lab slot.
Lab work continues in both of those weeks as take-home. Project presentations run in an additional session in Week 14, timing to be confirmed.
Academic integrity
Academic integrity is taken extremely seriously. Any form of academic misconduct — including plagiarism, unauthorised collaboration, accessing another student’s Moodle account, or communicating during assessments — will be dealt with in line with university and school policies.
Penalties include a mark of zero for the affected assessment, a Fail with Compulsory Misconduct (FCM) notation for the course, and referral to the Legal Office or Disciplinary Committee.
You are expected to complete all assessments honestly and independently, unless group work is explicitly permitted.
Use of AI tools
Large language models, including ChatGPT and GitHub Copilot, are permitted when used responsibly. They are genuinely useful for debugging, for clarifying concepts, and as an on-demand tutor.
Two things follow from that. First, using them raises the expectations on your submissions: you remain fully accountable for everything you hand in, and you must be able to explain and justify every part of it. Second, for written work, AI may assist with editing, summarising, and brainstorming, but may not generate whole sections — work that appears AI-generated without meaningful synthesis of your own is treated as academic misconduct.
Every submission requires a declaration of how AI tools were used. I may ask you to explain any submission in a viva voce, and that discussion replaces the mark.
If you are unsure whether a particular use is acceptable, ask.