Skip to main content
Back to top
Ctrl
+
K
Some Background
A Brief History of Operating Systems
Graphs
File Systems
Miscellaneous Tools
History of computer interfaces
Why use shells today?
Navigation in the unix shell
Navigation in the windows shell
Git and Github
Introduction and Overview
Why git?
Installing git and some useful shell commands
How git works
Creating repositiories
Cloning GitHub repos + Personal Access Tokens
Staging files
Making commits
Undoing things
Branches
Merging and resolving merge conflicts
Introduction to GitHub
Collaboration
Pre-commit hooks
Python: Installation and Execution
Installing Python on Linux
Installing Python on Mac
Installing Python on Windows
Installing Python with Windows Subsystem for Linux (WSL2)
Executing notebooks in a browser
Executing jupyter notebooks in VS Code
Executing
.py
files from the shell
Executing
.py
files in VS Code
Running Python code via pytask
Running Python code via pytest
Environment files and environments
Python Basics
Assignment and Built-in Scalar Types
Strings
Lists, Tuples and Sets
Dictionaries
For loops
If conditions
Comprehensions
Defining Functions
Principles for Good Functions
Tracebacks and Asking for Help
Importing, Namespaces, Modules
File paths with pathlib
Data management with pandas
What is (modern) pandas?
DataFrames and Series
Data types
Loading and saving data
Setting and renaming columns and indices
Selecting rows and columns
Inspecting and summarizing data
Creating variables
Rules for data management
Merging datasets
Functional data management: Fundamental rules
Functional data management
Functional data management: Example
Scientific Computing
What is numpy?
Creating arrays
Array indexing
Calculations on arrays
Calculations between arrays
Randomness
Broadcasting
Introduction to numerical optimization
Estimagic overview
Using estimagic’s minimize and maximize
Visualizing optimizer histories
Choosing optimization algorithms
Introduction to making code fast
Measuring runtime
Profiling code with snakeviz
Line profiling
Writing fast code with numpy
Writing fast code with numba
Reproducible Research
What does reproducibility mean?
What does pytask do?
Writing simple (py)tasks
Writing (py)tasks with multiple outputs
Re-using pytask functions
The pytask documentation
What are the project templates?
Setting up a project
Directory structure in the templates
Handling paths in projects
Software Engineering
Style guides
Naming things
Pure functions
The idea of unit testing
What does pytest do?
Writing simple (py)tests
Testing code that should raise errors
What to test? How to test it?
Reusing test code
Introduction to error handling
Which errors to handle?
How to raise errors?
Worked error handling example
Defining custom containers
When to use custom containers?
Partialling arguments to functions
Texts, Typesetting, and Text Data
Markup languages
Markdown syntax
Markdown applications
Writing Readme Files
Plotting
Goals and Workflow
Practical Approach
Why plotly? And some prerequisites.
Quick plots with plotly express
Quick plots with plotly express: Example Notebook
Customise plots created with plotly express
Customise plots created with plotly express: Example Notebook
Customised plots with plotly graph objects
Customised plots with plotly graph objects: Example Notebook
Debugging
Introduction to debugging
Strategies for debugging
Avoiding debugging
(Armchair) Psychology of debugging
Gathering data efficiently
Using the Pdb+ debugger
Index