Open martinjrobins opened 1 year ago
Theme | Course | Description |
---|---|---|
Software Architecture and Design | Procedural Programming | Procedural Programming is based around the idea that code should be structured into a sequence of procedures that operate on data. This course will introduce you to the basics of procedural programming in either Python or C++. |
Object-Orientated Programming | The Object Oriented Paradigm builds upon the Procedural Paradigm, but builds code around data. This course will introduce you to the basics of Object Oriented Programming in either Python or C++. | |
Functional Programming | Functional Programming is based around the idea that programs are constructed by applying and composing/chaining functions. This course will introduce you to the basics of functional programming in either Python or C++. | |
Technology and Tooling | The Bash shell | The Bash shell is a command-line interface used in Unix-based operating systems such as Linux and macOS. This course will introduce you to the basics of using the Bash shell. |
Version Control | This course introduces the basics of version control using the Git version control system. We will learn how to setup Git, and use it to track changes in our code. | |
Packaging and Dependency Management | This course introduces the basics of packaging and dependency management in Python and C++. For Python, we introduce venv for virtual envronments, and pip for package management and how to structure a modern Python package and publish it to PyPI. For C++, we introduce the CMake build system and how use it to manage dependencies and the build process. |
|
Best Practices | ||
IDEs | Integrated Development Environments (IDEs)provide programmers with a complete development environment to write, edit, debug, and deploy their code. This course introduces the popular VSCode IDE, both for Python and C++ development. | |
Visualisation and GUIs | ||
Testing | This course introduces the basics of automated testing and debugging in Python, using the Pytest framework. | |
Containerisation with Docker | This course aims to introduce the use of Docker containers with the goal of using them to effect reproducible computational environments. | |
Snakemake Tutorial | This tutorial introduces the text-based workflow system Snakemake. | |
Software Project Management | Collaboration on GitHub | This course will show you how to use Git for effective collaboration with others using the GitHub platform. After completion of the course, you will be able to contribute to projects on GitHub, including opening issues and pull requests. |
Continuous Integration | This course introduces the concept of continuous integration and how to set it up for a Python project using GitHub Actions. | |
High Performance Computing | Introduction to High Performance Computing | An introduction to high-performance computing (HPC), covering connecting to HPC resources and the slurm job scheduler. |
HPC Scalability Profiling | This session introduces the concept of scalability and how to profile the scalability of your code. | |
Introductory Courses | Intro to Python | This course introduces the basics of programming in Python. We will learn how to run Python code, and how to use variables, functions, and control flow. We will also learn how to use Python for data analysis and visualization. |
Theme | Course | Description |
---|---|---|
Software Architecture and Design | Procedural Programming | Procedural Programming is based around the idea that code should be structured into a sequence of procedures that operate on data. This course will introduce you to the basics of procedural programming in either Python or C++. |
Object-Orientated Programming | The Object Oriented Paradigm builds upon the Procedural Paradigm, but builds code around data. This course will introduce you to the basics of Object Oriented Programming in either Python or C++. | |
Functional Programming | Functional Programming is based around the idea that programs are constructed by applying and composing/chaining functions. This course will introduce you to the basics of functional programming in either Python or C++. | |
Technology and Tooling | The Bash shell | The Bash shell is a command-line interface used in Unix-based operating systems such as Linux and macOS. This course will introduce you to the basics of using the Bash shell. |
Version Control | This course introduces the basics of version control using the Git version control system. We will learn how to setup Git, and use it to track changes in our code. | |
Packaging and Dependency Management | This course introduces the basics of packaging and dependency management in Python and C++. For Python, we introduce venv for virtual envronments, and pip for package management and how to structure a modern Python package and publish it to PyPI. For C++, we introduce the CMake build system and how use it to manage dependencies and the build process. |
|
Best Practices | This course covers how to style your Python code, and use linters to enforce a consistant style and highlight any code that can lead to commonly encountered bugs or problems. | |
IDEs | Integrated Development Environments (IDEs)provide programmers with a complete development environment to write, edit, debug, and deploy their code. This course introduces the popular VSCode IDE, both for Python and C++ development. | |
Testing | This course introduces the basics of automated testing and debugging in Python, using the Pytest framework. | |
Containerisation with Docker | This course aims to introduce the use of Docker containers with the goal of using them to effect reproducible computational environments. | |
Snakemake Tutorial | This tutorial introduces the text-based workflow system Snakemake. | |
Software Project Management | Collaboration on GitHub | This course will show you how to use Git for effective collaboration with others using the GitHub platform. After completion of the course, you will be able to contribute to projects on GitHub, including opening issues and pull requests. |
Continuous Integration | This course introduces the concept of continuous integration and how to set it up for a Python project using GitHub Actions. | |
High Performance Computing | Introduction to High Performance Computing | An introduction to high-performance computing (HPC), covering connecting to HPC resources and the slurm job scheduler. |
HPC Scalability Profiling | This session introduces the concept of scalability and how to profile the scalability of your code with an increasing number of cores. | |
Introductory Courses | Intro to Python | This course introduces the basics of programming in Python. We will learn how to run Python code, and how to use variables, functions, and control flow. We will also learn how to use Python for data analysis and visualization. |
Libraries | Intro to PyBaMM | This course introduces the basics of PyBaMM (Python Battery Mathematical Modelling), an open-source battery simulation package written in Python. We will learn how to run PyBaMM models for various parameters and operating conditions. We will also learn how to process and visualise the outputs of the models. |
@martinjrobins the summaries look really good from my side. A few minor things:
https://github.com/UNIVERSE-HPC/course-material/issues/20