Programming for Data Science: How Much Code Do You Really Need?
Programming for data science: how much SQL and Python you need, what reproducible code looks like, the notebook traps, and where AI assistants help or hurt.
Python · Topic hub
Hands-on Python tutorials — the language, its standard library and the data stack that every analytics and ML job assumes you already know.
Programming for data science: how much SQL and Python you need, what reproducible code looks like, the notebook traps, and where AI assistants help or hurt.
The future of programming languages, using TIOBE, Stack Overflow and GitHub data: why Python and TypeScript lead, types are winning, and what to learn.
NumPy tutorial for beginners: what an array is, why it ran about 20 times faster than a list here, how one stray string turns numbers into text, and more.
NumPy indexing and slicing explained: why editing a slice changes your original array, when masks and fancy indexing copy instead, and how to avoid both bugs.
NumPy broadcasting explained: the two shape rules, why a (3,1) and a (4,) array give (3,4), and the silent bug that turns a vector sum into a matrix.
NumPy aggregation along axes, NaN-safe statistics, argmax, sorting and linalg.solve, plus why NumPy and pandas return different standard deviations.
Plotly tutorial for Python: interactive charts in one Plotly Express call, when to use Graph Objects, styling, faceting, and HTML exports 100x smaller.
Advanced Plotly charts in Python: subplots, dual axes, animation, 3D and heatmaps, plus the axis-range mistake that silently drops points from animations.
Matplotlib styling for report-ready charts: rcParams, style sheets, colormaps, annotation and clean export, and why plt.style.use('seaborn') now fails.
Python classes and objects explained with tested code: __init__, self, dunder methods, properties and dataclasses, plus the shared-list bug to learn first.
Inheritance and composition in Python with tested code: when to use each, how super() really works, duck typing, and why deep class hierarchies backfire.
How to use Python tuples well: creating them, unpacking, using them as dict keys, named tuples, and the one-element and += gotchas that catch everybody.
Lists vs tuples in Python beyond 'one is mutable': the real differences in hashability, memory, safety and intent, plus a decision rule that works in practice.
Python strings in practice: f-strings, slicing, the methods worth memorising, why += loops slow down, and the encoding default that breaks scripts on Windows.
Regular expressions in Python from the ground up: raw strings, core syntax, match vs search vs fullmatch, flags, and five mistakes that silently break patterns.
Advanced Python regex with tested output: named groups, lookarounds, re.sub with a function, and why a 24-character input made (a+)+$ run for 10 seconds.
Exception handling in Python done properly: try, except, else and finally, custom exceptions, chaining and logging, and why a bare except can break Ctrl-C.
Iterators and generators in Python explained: yield, pipelines that stream big files in flat memory, itertools, and why a generator silently runs only once.
A Python lambda function is a one-expression anonymous function. Learn where it helps (sort keys, callbacks), when def wins, and the loop bug it causes.
Python operators explained with outputs for every example, plus why is works for 256 but fails for 257 and why and/or rarely return booleans.
Python numeric data types explained: int, float, Decimal, Fraction and complex, why 0.1 + 0.2 is not 0.3, and how to handle money without rounding errors.
How to write Python functions: arguments, defaults, *args and **kwargs, scope, type hints and docstrings, plus the mutable default bug everyone hits once.
Python basics with runnable examples: names and objects, lists, dicts and sets, control flow and comprehensions, plus the traps behind most beginner bugs.
How to install Anaconda on Windows step by step: which PATH checkbox to leave unticked, licence terms, a Jupyter kernel, and fixes for common conda errors.