TAP Academy · Curriculum plan · August 2026

Two batches, one finish line.

July B2 has just opened NumPy. June B3 has closed Pandas. Twelve sessions of catch-up brings them level — then statistics, probability, visualisation, Excel, Power BI, Tableau and projects run as one merged cohort.

July B2 pending June B3 next Tomorrow's script → Statistics prep track

June B3 · Python track

37

sessions delivered · 52.8 h

Pandas complete — merge & groupby

July B2 · Python track

26

sessions delivered · 33.0 h

NumPy opened 28 Aug — Pandas pending

Merged cohort · from mid-Sept

54

sessions across 7 modules

Statistics → Projects · ~11 weeks

Where each batch stands today

Both playlists were read end to end. The session titles tell most of the story, but two needed checking against the recordings — and one of them changes the plan.

June B3 · 22 Jun → 27 Aug 2026

Pandas complete

37 sessions, 52.8 hours. The track closed on merging DataFrames and aggregate functions, with joins bridged explicitly from MySQL. Students can load a CSV, inspect it, clean it, filter it, derive columns and aggregate it.

  • Python core, OOP, files & exceptions
  • NumPy through masking and reshaping
  • Pandas through merge, concat and groupby

Ready for the merged syllabus now.

July B2 · 20 Jul → 28 Aug 2026

NumPy just opened

26 sessions, 33.0 hours. File handling closed on 27 Aug, and the 28 Aug session opened NumPy — the motivation only, not the API. Pandas has not been touched.

  • Python core, collections, all four OOP pillars
  • Modules and file handling
  • NumPy introduced — array creation onward still pending

Needs 12 sessions to reach parity.

Checked against the recording

The 28 Aug session is NumPy, not file handling

It carries no topic in the playlist title. The recording opens on why NumPy exists and the speed argument against plain Python loops — so B2's frontier is one step further than the titles suggest.

Checked against the recording

B2 “D12 — Ways to Create Arrays” is lists

The word array is used for Python lists here, not NumPy arrays. It sits between Strings and list comprehension, and NumPy genuinely starts on 28 Aug.

Worth confirming

Gaps in both playlists

July B2 is missing D13 and D17; June B3 is missing D15. Also confirm whether exception handling was delivered to B2 — it is not in any B2 title.

Batch one

July B2 — what is still pending

Twelve sessions, running solo, to close NumPy and cover Pandas end to end. At five sessions a week this lands in roughly two and a half weeks and brings B2 level with B3.

01

Finish NumPy

5 sessions · the introduction is done, the API is not. Every Pandas operation later is NumPy underneath, so this is not a module to compress.

N1Creating arrays array(), arange, linspace, zeros, ones, eye. dtype and the single-type rule. The list-versus-array contrast: a list repeats, an array multiplies.
N2Shape, dimensions and reshaping shape, ndim, size. reshape with the element-count law, -1 inference, flatten and transpose.
N3Indexing and slicing 1-D and 2-D indexing, row and column slices, negative indices, fancy indexing.
N4Aggregation and broadcasting sum, mean, median, std, min, max. axis=0 goes down, axis=1 goes across — the most-missed idea in the module. Broadcasting rules.
N5Boolean masking and sorting Filtering by condition, combining masks with & | ~, np.where, sort, vstack and hstack. This is the direct ancestor of Pandas filtering.
02

Pandas, end to end

7 sessions · mirrors the sequence June B3 already completed, so the two batches arrive at the merge point holding the same vocabulary.

P1Series and DataFrame Why Pandas sits on NumPy. A Series as a labelled array; a DataFrame as Series sharing an index. Building one from the dictionary-of-lists they already know.
P2Loading files and the first look read_csv and read_excel, then the fixed ritual — head, shape, info, describe. Reading missing counts straight off info().
P3Selection: loc and iloc Column selection, single versus double brackets, label-based against position-based, and why loc includes the endpoint while iloc does not.
P4Filtering and sorting Boolean filtering with & and |, brackets around every condition, isin, between, query. sort_values with multiple keys and directions.
P5Missing values isnull().sum(), dropna with subset and thresh, fillna with mean, median, mode and forward fill — and the judgement call behind each.
P6Duplicates and derived columns duplicated and drop_duplicates with subset and keep. Vectorised new columns, np.where, pd.cut, and apply as the fallback rather than the default.
P7Merge, concat and groupby The common-column rule, the four join types, concat for stacking, then split–apply–combine with agg. Bridge from SQL joins as B3 had it.

Before you start N1

Confirm exception handling was delivered. It appears in no B2 session title, and read_csv on a missing path in P2 is the first place its absence will show.

Pace note

B2 sessions average 79 minutes against B3's 88. If the 12 sessions need compressing, merge N2 into N1 rather than shortening P5 or P7 — those two carry the most transferable judgement.

Batch two

June B3 — the next twelve sessions

B3 finished Pandas on 27 August, so it has roughly twelve sessions of slack while B2 catches up. Spending that on merged-syllabus topics would only re-open the gap. Spend it on consolidation instead — the practice B3 has not yet had.

01

Pandas beyond the basics

5 sessions · the operations a working analyst reaches for that the first pass did not cover.

A1Pivot tables and cross-tabs pivot_table with values, index, columns and aggfunc. crosstab for frequency. Reading a two-dimensional grouping as a grid rather than a list.
A2Index mechanics set_index, reset_index, multi-index basics, rename, astype. Why the index changes after groupby and filtering, and how to get a plain table back.
A3Text columns at scale The .str accessor — strip, lower, contains, replace, split, extract. Cleaning the messiest column type in every real dataset.
A4Dates and times to_datetime, the .dt accessor, date parts, sorting by date, and resample as groupby for time. Sets up the time-series charts in V8.
A5Outliers and binning The IQR rule in code, capping versus dropping, pd.cut and pd.qcut for banding. The judgement conversation, not just the syntax.
02

Applied EDA

7 sessions · three datasets from different domains, then a mini-project. Retrieval practice on everything already taught — no new syllabus consumed.

A6Case study — retail sales Dirty CSV, business questions supplied. Load, inspect, clean, aggregate, answer. Trainer works the first one on the board.
A7Case study — HR attrition Categorical-heavy data. Grouped comparisons, rates rather than counts, and the difference between the two.
A8Case study — transactions Larger file, date-indexed. Duplicates that matter, joins across two frames, monthly rollups.
A9Writing the finding Turning an output into a sentence a manager can act on. A number, a comparison, and a caveat. Practised aloud.
A10–11Mini-project build Unseen dataset, three questions, cleaned frame and written answers. Individual work with the trainer circulating.
A12Review and merge briefing Present findings, close gaps, then set expectations for the merged cohort so the first joint session starts cleanly.

Why not start statistics now

Statistics is on the merged list. If B3 takes it solo, B2 either repeats it or misses it — and the batches never truly merge. The bridge block keeps them level.

If you prefer the alternative

B3 can take Statistics S1–S8 solo and B2 joins at Probability, with B2 covering statistics in a compressed catch-up. It saves about two weeks overall but leaves B2 thinner on the foundation everything else rests on.

Starting next class · June B3

Statistics & Probability

Fifteen sessions from “what type is this column” to a defended A/B test recommendation. Probability sits inside the arc rather than beside it, because a p-value cannot be explained without the normal curve. Every statistic is computed in Pandas on a real file the same day it is defined.

15sessions
5phases
~23hours
3weeks at 5/week

Before session one

Install

scipy and statsmodels

Needed from S9 onward for distributions and every test. Run pip install scipy statsmodels and verify it imports before S9, not during it.

Dataset

One file, all module

Use a single employees or sales file with a skewed numeric column, a roughly normal one, and two categoricals. Familiar data means they think about the statistic, not the columns. Hold an A/B file back for S15.

Framing

Open on describe()

They have run df.describe() since D32 without knowing it was statistics. Starting there makes the module feel like a continuation rather than a new subject.

Checkpoints

AfterAssessmentWhat it proves
S6Descriptive report on an unseen columnCan summarise centre, spread and shape, and defend the choice of measure
S10Ten probability problems, mixed typesPicks the right distribution and computes tail probabilities
S13Written p-value interpretation, marked strictlyStates what a p-value is and is not — the most-failed interview question
S15A/B capstone presentationRuns the full arc and defends a business decision

Where this lands for July B2

Sequencing

B3 starts now, B2 joins at S1

Running this with B3 immediately means the batches do not merge here. B2 still needs its twelve NumPy and Pandas sessions, then repeats S1–S15 on its own timeline — or joins a second run.

The alternative

Hold three weeks and merge

If B3 runs the bridge block instead, both batches reach S1 together and you teach this once rather than twice. It costs B3 three weeks and saves you fifteen sessions of repetition.

The merge point

Both batches meet at statistics, in the third week of September.

July B2 finishes Pandas. June B3 finishes its bridge block. Neither has touched the merged syllabus, so the first joint session starts everyone from the same line — and from there it is one cohort, one plan, fifty-four sessions.

Merged from

Statistics S1

Modules

7

Sessions

54

Duration

~11 weeks

The merged syllabus

Seven modules in dependency order. Statistics and probability come first because visualisation, Power BI and Tableau all assume them — a box plot means nothing to a student who has not met a quartile.

01

Statistics

8 sessions · the vocabulary every later module borrows. Taught with Pandas in hand, so every measure is computed on a real column the same day it is defined.

S1Why statistics, and types of data Population versus sample. Nominal, ordinal, interval and ratio — and why the type decides which chart and which test are legal later.
S2Central tendency Mean, median, mode. When each lies. Ties back to the fillna decision they already made in Pandas.
S3Dispersion Range, variance, standard deviation, IQR. Two datasets with the same mean and different spread — the demo that makes the module land.
S4Shape of a distribution Skewness and kurtosis, the normal curve, the empirical rule. Reading shape from describe() before any chart exists.
S5Correlation and covariance Pearson and Spearman, the interpretation bands, and the discipline of not upgrading correlation into causation.
S6Sampling and the central limit theorem Random, stratified and systematic sampling. Sampling distribution, standard error, and why the CLT is what makes inference possible.
S7Confidence intervals Point estimate against interval estimate, confidence level, margin of error. Reporting a range rather than a false precision.
S8Hypothesis testing Null and alternative, significance, p-value, t-test and chi-square. Framed as A/B testing, which is the version they will be interviewed on.
02

Probability

6 sessions · kept tight and applied. Enough to support inference and interviews, without turning into a mathematics course.

Pr1Foundations Experiment, sample space, event. Classical, empirical and subjective probability. The 0-to-1 scale.
Pr2The rules Addition and multiplication rules, mutually exclusive versus independent — the distinction students reliably collapse.
Pr3Conditional probability and Bayes Updating a belief on evidence. The medical-test example, worked slowly, because the intuition is genuinely counter-intuitive.
Pr4Random variables and expected value Discrete against continuous, probability distributions, expectation as a long-run average.
Pr5Binomial and Poisson The two discrete distributions an analyst actually meets, with the conditions that make each applicable.
Pr6The normal distribution and z-scores Standardisation, reading the table, and the link forward to confidence intervals and outlier rules.
03

Data visualisation

10 sessions · matplotlib first for control, seaborn second for speed. Every chart plots a groupby result both batches already know how to produce.

V1Why charts exist The chart-choice rule: comparison to bar, trend to line, distribution to histogram, relationship to scatter. First plot straight off a groupby.
V2matplotlib fundamentals Figure against axes, figsize, titles, labels, legend, grid, savefig. Labelling made non-negotiable from here on.
V3Bar, line and pie Sorted bars, horizontal bars for long labels, grouped and stacked, multi-line trends, and the honest case for and against pie.
V4Distributions Histograms and the bin-count choice, box plots and the five-number summary, IQR outliers. Pays off S2 and S3 as a picture.
V5Relationships Scatter plots, colour and size encoding, corr() and the matrix. Reading direction by eye before computing the number.
V6seaborn statistical plots The one pattern — data, x, y, hue. countplot, barplot, boxplot, violinplot, histplot. Note that barplot shows the mean, not the total.
V7Heatmaps and multi-panel figures Correlation heatmaps with annot and centre, pivot to heatmap, subplot grids with ax=, tight_layout, pairplot.
V8Time series charts to_datetime first, datetime index, resample, rolling averages, readable date axes. The dtype trap demonstrated before it is explained.
V9Charts that do not lie Truncated axes, chart junk, colour with meaning, colourblind-safe palettes, and titles that state the finding rather than name the columns.
V10Dashboard workshop Four-panel figure on one dataset, written findings under each chart, exported as a single image.
04

Excel

6 sessions · deliberately placed after Python, not before. Students who already know groupby learn pivot tables in one session instead of three — and every analyst job description still asks for Excel.

E1Interface and cell references Workbook structure, entry and formatting, and relative against absolute references. The dollar sign is the concept, not the keystroke.
E2Formulas and logic SUM, AVERAGE, COUNT, COUNTA, ROUND. IF, nested IF, IFS, AND, OR. COUNTIF and SUMIF as the first taste of conditional aggregation.
E3Lookup functions VLOOKUP and its limits, INDEX with MATCH, XLOOKUP where available. Framed directly as the Excel version of a Pandas merge.
E4Cleaning tools Sort, filter, remove duplicates, text-to-columns, TRIM and the text functions, data validation, conditional formatting.
E5Pivot tables Rows, columns, values, filters. Slicers, grouping, calculated fields, pivot charts. Taught as groupby with a mouse.
E6Charts, dashboards and Power Query Native charts, a simple dashboard sheet, what-if and goal seek, then a first look at Power Query — which is the on-ramp to Power BI.
05

Power BI

8 sessions · the heaviest tool module, and the one that most often decides an interview. Power Query lands easily straight after E6.

B1The ecosystem Desktop, Service and Mobile. Install, tour the panes, and the report–dataset–dashboard distinction that confuses everyone at first.
B2Get data and transform Connectors, the Power Query editor, applied steps, type changes, split and merge columns, unpivot. The steps list as an audit trail.
B3Data modelling Relationships, cardinality, filter direction, fact and dimension tables, the star schema. Why one flat sheet stops working.
B4DAX foundations Calculated columns against measures — the single most important distinction in the module. SUM, AVERAGE, COUNTROWS, DISTINCTCOUNT.
B5DAX in context CALCULATE and FILTER, row against filter context, a date table, and time intelligence — year-to-date, prior year, running totals.
B6Visuals Bar, line, card, KPI, matrix, map, gauge. Conditional formatting, and applying the V9 honesty rules inside a BI tool.
B7Interactivity Slicers, cross-filtering, drill-down and drill-through, bookmarks, custom tooltips, buttons and navigation.
B8Publish and share Workspaces, publishing, dashboards from report tiles, scheduled refresh, row-level security, and export options.
06

Tableau

6 sessions · shorter than Power BI because the concepts transfer. Teach the differences, not the basics a second time.

T1Interface and data connection Desktop and Public, live against extract, the data pane, and dimensions against measures — Tableau's central idea.
T2Building views Rows and columns shelves, the Marks card, Show Me, sorting, filtering, and the continuous-versus-discrete blue and green distinction.
T3Calculations Calculated fields, aggregate against row-level, quick table calculations, and a first controlled look at level-of-detail expressions.
T4Parameters, sets and groups User-driven controls, hierarchies and drill paths, bins, and top-N sets.
T5Dashboards Layout containers, dashboard actions — filter, highlight, URL — device layouts, and formatting for a real screen.
T6Stories and publishing Story points for narrative, publishing to Tableau Public as a portfolio piece, and an honest Power BI comparison for interviews.
07

Projects

10 sessions · four builds across the whole stack, ending in presentations and a portfolio each student can send to a recruiter.

PR1Framing a project Turning a vague ask into an answerable question. Dataset selection, success criteria, scope control, and how to present work to a non-technical room.
PR2–3Project one — sales analysis in Python End-to-end EDA and visualisation. Build, then a review session where every student defends one chart.
PR4–5Project two — HR analytics with statistics Attrition drivers using grouped comparisons, correlation and a hypothesis test. The module where statistics stops being theory.
PR6–7Project three — Power BI dashboard Raw source through Power Query, a modelled star schema, DAX measures and an interactive report. Published and reviewed.
PR8–9Capstone — Tableau story Free choice of domain, unseen data, full pipeline. Build plus a rehearsal session with feedback before the final.
PR10Final presentations Two minutes each, chart and finding only, no code on screen. Then portfolio packaging — GitHub, Tableau Public, and the resume lines each project earns.

June B3 · complete notes

Every session, written up

All 37 sessions from the June batch — concepts explained, code for every topic, the rules worth memorising, and the mistakes that cost marks. Open a card for one session, or switch to Read all and go through the whole course in one continuous pass.

Function reference

Every function, in one place

Python built-ins and methods, the full NumPy toolkit, and the Pandas API grouped by what you are actually trying to do. Search by name or by task — typing missing, join or outlier finds the right function without you knowing what it is called.

The full plan, in order

Sixty-six sessions from 31 August. Weeks assume five sessions each and no holiday breaks — treat them as sequence rather than as dates, and let the module boundaries move.

Weeks 1–3

12 sessions

Parallel tracks

July B2 finishes NumPy (N1–N5) then Pandas (P1–P7). June B3 runs the bridge block — advanced Pandas (A1–A5) and applied EDA (A6–A12). Two rooms, two plans, same end date.

Weeks 4–5

8 sessions

Statistics · merged

First joint sessions. Descriptive measures through hypothesis testing, computed in Pandas throughout.

Weeks 6–7

6 sessions

Probability

Rules, Bayes, distributions and z-scores. Kept applied and interview-shaped.

Weeks 7–9

10 sessions

Data visualisation

matplotlib, then seaborn, then the honesty rules. Ends in a dashboard workshop.

Weeks 9–10

6 sessions

Excel

Formulas, lookups, cleaning, pivots, dashboards, and Power Query as the bridge onward.

Weeks 11–12

8 sessions

Power BI

Power Query, modelling, DAX, visuals, interactivity, publishing and row-level security.

Week 13

6 sessions

Tableau

Views, calculations, parameters, dashboards and a published Tableau Public piece.

Weeks 14–15

10 sessions

Projects

Four builds across the stack, a rehearsed capstone, and portfolio packaging.

Total

66

sessions

Parallel

12

before the merge

Merged

54

as one cohort

Span

15

weeks at 5 a week

Running two batches as one room

Before the first joint session

Level the vocabulary

The two batches learned the same Pandas from different mouths and different examples. Open the merged block with one recap session on a shared dataset so the terms, the column names and the shortcuts match.

Mixed experience

Pair, do not stream

Freshers and experienced candidates in one room works if you pair them deliberately in labs. Streaming by ability in a merged batch re-creates the gap you just closed.

Assessment

Checkpoint at each module end

A short applied task after Statistics, Visualisation and Power BI. It catches drift early, and the outputs become portfolio material rather than disposable exam answers.

Datasets

Reuse one, hold one back

Keep a single sales or HR file running across statistics, visualisation and Power BI so students think about the method, not the columns. Reserve genuinely unseen data for the capstone.

Tooling

Check licences early

Power BI Desktop is Windows-only, and Tableau needs either a student licence or Public. Sort access during the Excel module, not on the morning of B1.

If time runs short

Protect projects

Compress Tableau to four sessions and Excel to five before touching the project block. Placement conversations are built on what students can show, not on what was covered.

Built from both playlists as read on 28 August 2026 — June B3 at 37 sessions, July B2 at 26. Session counts and module boundaries are a plan, not a contract.