A student cornered me after an AI club session at MUBS: “I fine-tuned a tiny model on Colab. Why did my internship test still ask for a confusion matrix on a CSV?” Because most business problems in Kampala still arrive as tables, not as demo chatbots. Jumping straight to deep learning looks exciting and leaves you weak where employers measure you.
I teach and consult across cybersecurity and machine learning. This roadmap is the sequence I give Applied Computing students and Nkumba learners who want usable skill, not vibes. You will build a classical baseline today, then see how deep learning and MLOps fit later.
Level 1: Foundations you cannot skip
Before models, get fluent at:
Python data structures and scripts.
NumPy arrays and pandas DataFrames.
Enough linear algebra to talk about vectors and matrices without panic.
Enough probability to understand mean, variance, and why class imbalance hurts accuracy bragging.
If pandas pipelines still feel foreign, stop and complete your first data pipeline. Dirty data is the real first boss fight.

Level 2: Classical ML with scikit-learn
For structured data, start with the scikit-learn user guide. Learn train/test splits, preprocessing, and metrics before you touch neural nets. Random forests and gradient boosting solve a large share of tabular problems in SMEs, SACCOs, and campus research surveys.
Worked example: churn-style classification you can run today
Scenario: a Kampala ISP internship gives you a CSV of anonymised subscriber features and a churn label. Your task is a baseline model and a short note on precision versus recall. Create churn_baseline.py:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, confusion_matrix
df = pd.read_csv("subscriber_churn.csv")
y = df["churn_label"]
X = df.drop(columns=["churn_label", "subscriber_id"])
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)
model = RandomForestClassifier(
n_estimators=100,
max_depth=6,
random_state=42,
n_jobs=-1,
)
model.fit(X_train, y_train)
pred = model.predict(X_test)
print(confusion_matrix(y_test, pred))
print(classification_report(y_test, pred))Read the report out loud. If recall on the churned class is weak, a marketing team calling every customer will hate your “high accuracy.” That conversation is machine learning in the workplace.
Stretch the same afternoon: try HistGradientBoostingClassifier, compare F1, and write why you would or would not ship the change. Keep ethics in mind when features proxy sensitive attributes; campus AI governance discussions are not abstract here.
Level 3: Deep learning when the data shape demands it
Images, audio, and free text push you toward neural networks. PyTorch is a common engineering choice; start from the official PyTorch tutorials once classical metrics feel natural. Do not begin here because social media said transformers are mandatory.
A sane order:
Tensors and autograd toy examples.
A small CNN on a public image set.
Transfer learning before training giants from scratch on a laptop that overheats in a Kampala afternoon.
Only then experiment with larger language models, with clear data rules.
Level 4: MLOps enough to demo responsibly
A notebook is not a product. Learn to:
Pin dependencies.
Wrap predict in a small FastAPI service.
Containerise with Docker when the lab allows.
Log inputs/outputs for debugging.
Watch for obvious drift when live data shifts after fees or network changes.
National GPU capacity is growing through research partnerships, but undergraduate work still succeeds on clean classical baselines and honest evaluation. Fancy clusters do not rescue a leaky train/test split.
Math without theatre
You need intuition, not a vanity bookshelf:
Linear algebra: shapes, dot products, why weight matrices match feature counts.
Calculus: gradients as “which way reduces loss.”
Statistics: sampling, confidence, and why tiny campus surveys mislead.
When a proof blocks progress for three days, switch to a worked numerical example, then return. Teaching assistants see both extremes: students lost in symbols, and students calling fit() with no idea what split they used.
Uganda-flavoured project ideas that hire
Predict lab machine failure risk from simple ticket features for a campus ICT office.
Classify support tickets into networking, accounts, or applications to route queues.
Forecast daily branch transaction counts for a SACCO after you clean the pipeline.
Detect spammy SMS patterns in a carefully scoped, privacy-respecting dataset.
Each project should ship with a README, a metrics section, and a limitations paragraph. That portfolio beats a vague “I use ChatGPT” line on a CV.
Evaluation habits that keep you honest
Accuracy is a weak headline when classes are imbalanced. For the ISP churn example, prefer a short table:
Confusion matrix counts.
Precision and recall for the churned class.
A cost story: false positive means wasted call-centre time; false negative means a quiet cancellation.
When I review student projects at MUBS, I ask them to defend the metric with a stakeholder sentence. If they cannot, they are not ready to demo to a manager in Ntinda.
Also check leakage. If a feature is “days since last complaint close” computed with future information, your score is fiction. Build features using only knowledge available at prediction time. Write that rule in the README.
Community practice without copying nonsense
Join campus AI clubs, but keep a personal build log. Recreate one tutorial from official docs each fortnight rather than downloading mystery notebooks. The PyTorch and scikit-learn documentation exist so you can verify behaviour instead of trusting a random gist.
When you use generative tools for boilerplate, still run the model and read the metrics yourself. Assessment integrity policies on campus are tightening for good reason. Your consulting reputation later depends on the same honesty.
Same-day takeaway
Today’s block:
Find or invent a small tabular CSV with a binary label.
Run the random forest baseline above.
Write ten lines explaining precision, recall, and one business cost of a false positive.
List three features you would engineer next week.
Book time next weekend to read one scikit-learn user guide chapter end to end.
Machine learning careers in Kampala reward people who can clean data, choose a simple model, measure honestly, and talk to non-engineers. Start there. Add deep learning when the problem’s data type demands it, not when a timeline says you are late to the trend.