- Background
- Operating systems (Don't change, record)
- Graphs (Don't change much, record)
- Filesystem (Very short, Linux/MacOS vs. Windows)
- Floating point numbers (Find good resource)
- Tools
- Shell: Basics / background (Short, mostly old material)
- Shell: Navigation (New(ish))
- Shell: Installation of Mamba and course environment (Video, text)
- Installation: Git, VS Code (only text / links)
- Editors, comparison IDEs (short)
- VS Code
- Stata / Matlab / RStudio
- In the end, VS Code encompasses most features of IDE + same for all languages
- Using LLMs effectively [long run]
- Using copilot effectively [long run]
- Communicating effectively (emails vs zoom vs in-person vs zulip) (Video)
- Licenses (Look up stuff)
- Git and GitHub
- Motivation and terminology (record anew)
- Committing and Diffing (Look up stuff)
- Pushing and Pulling (Look up stuff)
- Merging (Look up stuff)
- Troubleshooting (Look up stuff)
- Collaboration and Teamwork (Look up stuff)
- Python basics
- Assigning variables, built-in scalar types (record anew)
- Built-in container types (record anew)
- Reading tracebacks (record anew)
- Importing, Modules, Namespaces
- Filesystem in Python: The
pathlib
library (record anew) - Executing Python code: .py files (record anew)
- Executing Python code: Notebooks (record anew)
- Executing Python code: Debuggers, pytest, pytask (record anew)
- Decorators (record anew, further material: Harrison)
- Custom data containers
- Reading object-oriented code [long run]
- More on f-strings (could also do as an exercise)
- Best practices (any language)
- Avoid code duplication (iteration, functions) (record anew)
- Objective: Understand Concept. Do stuff, see patterns that come out
- Pure and testable functions (record anew)
- Comments should be function names (record anew)
- Avoid nested if conditions (record anew)
- Naming conventions / formatting / pre-commits (record anew)
- Choosing container types (list / dict / custom class) (record anew)
- dags [long run] - pytrees [long run] - Don't be too smart (link) (set up examples, make scorecards / notebooks out of those, record short video)
- When to code up something yourself and when to use a library [long run], (record screencast with recipes)
- Avoid code duplication (iteration, functions) (record anew)
- Ensure Correctness - Testing
- Debugging
- Error handling
- Workflow management
- Definition of "reproducible" - Pytask overview
- Tiny Pytask example
- Generating many tasks at once
- Templates
- Scientific computing
- Numpy/scipy
- Optimisation
- Estimagic
- Speedup
- Data Science
- Data Management
- Plotting
- Machine learning with Scikit-learn
- (Econometrics with ...)
- Text data and texts
- Encodings
- Regexes [long run]
- Simple Markdown
- MystMD
- Slidev
- LaTeX
- Detour: How to read a paper
- Detour: How to structure a paper
- Tables
- Figures