molecule = "ethanol"
print(f"{molecule} has {len(molecule)} letters")ethanol has 7 letters
10 min of teaching5 min of exercisesbeginner
By the end of this course you will build a model that predicts whether a molecule dissolves in water, another that classifies tumours from measurements, and later ones that work on protein sequences and molecular graphs. Before any of that, this short page shows how the pages themselves work, so that nothing about the format gets between you and the ideas.
The course has four Parts. Part I (Foundations) teaches scientific Python and the core of machine learning on small, well-understood datasets. Part II (Cheminformatics) turns molecules into numbers and models them. Part III (Bioinformatics) does the same for sequences and expression data. Part IV (Generative) covers models that propose new molecules. Together they contain sixteen chapters, numbered 0 to 15, each a handful of episodes plus a lab.
Episodes are numbered chapter.episode: 2.3 is the third episode of Chapter 2, and that is how the text refers to them. Chapters 0, 1 and 2 are built now. The later chapters appear in the sidebar and on the roadmap marked soon, dimmed, with a page describing what is planned.
The repository mirrors the site: one directory per chapter, one file per episode (NN-slug.qmd), and a labs/ folder with the notebooks. Every page’s footer has Edit this page, which opens that file on GitHub, and Report a problem, which opens an issue with the page already named.
Under the title of every episode are three chips: Teaching (minutes to read and run the code), Exercises (minutes for the exercises at the end) and a level (beginner, intermediate or advanced). Below them is the Overview card. Questions are what you should be able to answer afterwards, phrased the way you would ask them; Objectives are the concrete things you will be able to do. Read both first; if you can already answer every question, skim the episode and go straight to its exercises.
The body alternates short prose with code cells, which show exactly what you would type, with the output directly beneath:
Run these yourself, in order, in a Jupyter notebookJupyter notebookA document mixing code cells, their outputs and text; the format of the labs. of your own (the next episode sets that up). Each cell introduces one idea; checking its output against your expectation is the actual lesson.
At the bottom of every episode is the Key points card: what you should remember a month later. If a key point surprises you, go back; you missed something.
A reading rhythm that works
Overview card, then the body with the code running beside you, then the exercises, then the Key points card. The teaching time assumes you type the code, not just read it.
Boxes interrupt the text for a reason, and each kind asks something different of you. Here is one of each.
Note
A note is an aside or a definition: context that helps but does not change what you do next. Skipping a note never breaks the thread.
Common mistake
A pitfall names a mistake that real learners make at this exact point, usually one that produces no error message. Read these even when you skim everything else.
Deep dives are collapsed by default and hold the mathematics: derivations, the formal statement of what the body said in words. They are never required to follow the episode. Mathematicians will want them open; everyone else can come back later.
A bridge box is written for one background. This one is a Chemist’s corner; there are also a Biologist’s corner, a Maths corner and a box For programmers. Read yours first, and the others when you are curious how the same idea looks from the next bench over.
A discussion prompt has no single answer. Write two or three sentences before moving on; in a taught course the instructor uses these to start a conversation.
The maths refresher adds three more, in the style of a mathematics text: numbered Definition, Theorem and Proposition boxes, each followed by a collapsed Show proof where a short argument helps.
Exercises come at the end of each episode with a star rating: ★☆☆ checks understanding, ★★☆ applies the idea to something new, ★★★ is a stretch. Every exercise has a collapsed Show solution button, and the solution explains why, not just what. Do all of the ★ exercises and at least one ★★; the ★★★ ones are optional. The Expand all solutions button under the title opens every solution on the page at once, handy when revising or teaching, and dangerous when learning.
Two kinds of box ask you to commit to an answer before you look. A Predict before you run box sits immediately above a code cell and asks what the output will be. A Checkpoint is a multiple-choice question; each option opens to show whether it was right and why. Both work only if you honestly decide first; guessing and then reading the answer feels like learning and is not.
Before you click anything in the checkpoint below: what do you think happens when you choose a wrong option? Does it tell you, or stay silent? And what does the page remember afterwards?
What does 2.3 refer to?
In this course, “episode 2.3” means:
Not quite. The chapter comes first. 2.3 is the third episode of Chapter 2.
Correct. The first number is the chapter, the second is the episode within it. Episode 2.3, Evaluating models honestly, is the course’s model for every other episode.
Not quite. Labs are named by chapter (Lab 2 belongs to Chapter 2), not numbered like episodes, and Parts are numbered with Roman numerals (Part II), never with a decimal.
Every option tells you something, including the wrong ones, and a small running score appears once you have answered. Nothing is sent anywhere; reloading clears the score.
The sidebar. Every episode and lab is listed under its chapter with its number and the time it takes. Chapters that are not written yet are dimmed and marked soon. There is no account and nothing to tick off: the course does not keep track of what you have read, so come and go as you like and use the sidebar to find your place.
Dark / Light / Auto. The theme switch in the top bar; Auto follows your operating system. Figures are rendered in both themes and swap with the page.
Glossary tooltips. Technical terms are linked to the glossary the first time they appear in each episode, like kernelkernelThe Python process that runs notebook cells and remembers your variables between them. here. They look like ordinary text; hover over one, or reach it with the Tab key, to see a one-sentence definition, and click it for the full entry in the glossary.
Search. Press / anywhere on the site (or click the magnifier) to search every page. Results show the chapter and section they come from.
Graduates in informatics, chemistry, biology and mathematics will each find different chapters easy. The chapter page has a short table of suggested paths by background: what to speed through, where to slow down, and which parts of the maths refresher to skim first. Read your row before Chapter 1.
Find your way around
Without using search:
What the browser knows
Switch the theme to Light, then open the same page in a private or incognito window of the same browser. Which theme does it open in? Explain what that tells you about where the choice is stored, and why the site cannot know which pages you have read.
The private window opens in the default dark theme. Your choice lives in the browser’s local storage for this site, which a private window does not share with your normal session and which no server ever sees. That is the only thing the site stores: it has no account, sets no cookies and sends nothing anywhere, so it has no way to know which pages you have read, and it does not try to. Two machines mean two independent theme settings, which is the price of keeping no accounts.
Every later page uses exactly the furniture you have just seen, so this is the last time it will be explained. The next episode gets Python running, in the browser or on your machine, and the self-check after it tells you whether to begin Chapter 1 straight away. From there the predict boxes stop being about the website and start being about data: one in episode 2.3 asks you to guess how much worse a model does on molecules it has never seen.