Spaced-repetition decks distilling the exam-critical facts from across the course into recall-tested Question::Answer cards.
Part of the [[Readme|Python for Security Professionals]] course.
Each deck uses the Obsidian spaced-repetition plugin's inline format — Question::Answer on a single line. Install the plugin, open a deck, and it schedules the cards for review.
The decks target durable, testable facts — definitions, defaults, syntax, and the security reasoning behind them — rather than long walkthroughs. Study the linked modules for depth, then drill these to lock it in.
By the end of this module you will be able to:
- Recall Python syntax and semantics without reaching for the documentation.
- State the security rationale behind the course's recurring recommendations.
- Distinguish commonly confused pairs —
isversus==, threads versus processes, hashing versus encryption. - Identify the correct standard-library module for a given security task.
- The modules each deck covers — flashcards reinforce understanding, they do not create it.
- The Obsidian spaced-repetition plugin, or any tool that reads
Question::Answerlines.
- [[Python-Fundamentals-Flashcards]] — types, operators, control flow, functions, and OOP (Modules 1–6).
- [[Data-and-Modules-Flashcards]] — files, exceptions, modules, packages, built-ins, and the standard library (Modules 7–11).
- [[Security-Automation-Flashcards]] — concurrency, subprocess, log analysis, and reconnaissance (Modules 12–13).
- [[Security-Tooling-Flashcards]] — sockets, TLS, hashing, credentials, and tool architecture (Module 14 and the libraries).
- Review one deck per day and record which cards you consistently fail.
- For every failed card, re-read the linked note and write your own version of the card.
- Add cards for anything that surprised you while doing the [[Practical-Labs/Readme|Practical Labs]].
- Cover a deck's answers and write the code the card describes from memory.
The decks deliberately over-weight the facts that have security consequences when forgotten:
| Fact | Consequence if forgotten |
|---|---|
secrets, not random |
Predictable tokens and passwords |
Never shell=True with input |
Command injection |
| Always set a socket timeout | Hung scans, unbounded waits |
hmac.compare_digest, not == |
Timing side channel |
| Slow KDFs for passwords | Trivially cracked credential store |
| Never unpickle untrusted data | Remote code execution |
| Verify TLS certificates | Interceptable traffic and stolen credentials |
- Drilling cards for material you have not yet read — recall without understanding does not transfer.
- Writing cards that ask for a whole paragraph — a card should have one short, checkable answer.
- Using a colon inside a question without realising
::is the delimiter. - Never revising the deck — a card you always get right is wasting review time; a card you always fail needs rewriting, not repetition.
- One fact per card; split anything that needs a list.
- Phrase questions so the answer is unambiguous.
- Write cards in your own words after reading the note.
- Review little and often rather than in long sessions.
- Delete or rewrite cards you keep failing — the card is usually the problem.
- Which deck covers the difference between threads and processes?
- Why do the decks emphasise
secretsoverrandom? - What makes a good flashcard answer, and how long should it be?
- Which security facts would you add for the tooling you personally build?
# Count the cards in a deck
grep -c '::' Flashcards/Python-Fundamentals-Flashcards.md
# Count cards across every deck
grep -rc '::' Flashcards/*-Flashcards.md- [[Readme|Python for Security Professionals]] — course home
- [[Practical-Labs/Readme|Practical Labs]] — hands-on practice that complements recall drilling
- [[Mini-Projects/Readme|Mini Projects]] — applying what the decks reinforce
- Home: [[Readme|Course Home]]
- See also: [[Mini-Projects/Readme|Mini Projects]]