Skip to main content
Back to top
Ctrl
+
K
Some Background
Content and Learning Objectives
A Brief History of Operating Systems
Graphs
File Systems
Miscellaneous Tools
Content and Learning Objectives
History of computer interfaces
Why use shells today?
Navigation in the unix shell
Navigation in the windows shell
Git and Github
Content and Learning Objectives
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
Content and Learning Objectives
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
Content and Learning Objectives
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
Content and Learning Objectives
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
Functional data management: Example
Scientific Computing
Content and Learning Objectives
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
Content and Learning Objectives
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
Content and Learning Objectives
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
Content and Learning Objectives
Markup languages
Markdown syntax
Markdown applications
Plotting
Content and Learning Objectives
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
Content and Learning Objectives
Introduction to debugging
Strategies for debugging
Avoiding debugging
(Armchair) Psychology of debugging
Gathering data efficiently
Using the Pdb+ debugger
Index