Summary and Schedule
Byte-sized RSE
Byte-sized RSE is a series of standalone mini training materials providing key research software skills in around 1-1.5 hour. It has been originally been developed and run by the UNIVERSE-HPC project. There have been 3 Byte-sized RSE series so far, each with a number of episodes - some of which are documented in this course:
- Integrated Development Environments
- Code Style & Linting
- Intermediate Git
- Code Review
- Unit Testing Code
Each episode is standalone - you can jump staight into the episode you are interested in and do not have to read preceeding episodes.
Target Audience
Research Software Engineers (RSEs), reseachers and postgraduates involved in computational research who already posses foundational computational skills and who are now:
- looking for quick refreshers, tips, or wanting to improve the sustainability or quality of their research code and are keen on continuous learning without heavy time investment.
- interested in advancing their skills and learning best practices for software in research.
- seeking digestible content to bridge the gap between research and software and benefiting from short-form RSE tips/tools to improve their research workflows.
Prerequisite
Episodes may require some prerequisite knowledge clearly described at the start or each episode, along with its own, individual, setup instructions.
Setup Instructions | Download files required for the lesson | |
Duration: 00h 00m | 1. Lesson 1: Code Development & Debugging with IDEs |
What is an Integrated Development Environment (IDE) and what role does
it play in software development? What are the common features of IDEs? Why is debugging important, and what are the main techniques developers use to debug their code? How can you use a debugger in an IDE like Visual Studio Code to find and fix errors in your code? |
Duration: 00h 15m | 2. 1.1 Setup & Prerequisites |
What prerequiste knowledge is required to follow this topic? How to setup your machine to follow this topic? |
Duration: 00h 15m | 3. 1.2 Getting Started with VSCode |
How do I access the key features of Microsoft Visual Studio (VS)
Code? How do I open a software project in VSCode? What are VSCode extensions, and how do I use them? |
Duration: 00h 25m | 4. 1.3 Using the Code Editor |
How do I open a source code file in VSCode? What editing features will help me when writing code? |
Duration: 00h 35m | 5. 1.4 Running and Debugging Code |
How do I run code in VSCode? How do I use a debugger to locate the source of a problem in my code? How does debugging fit within the broader process of development? |
Duration: 00h 45m | 6. Lesson 2: Code Style, Quality & Linting |
Why does consistent code style matter in software development? What are some common code styling practices and conventions? How can poor coding style lead to bugs and maintenance issues? What is a linter, and how does it help improve code quality? |
Duration: 01h 00m | 7. 2.1 Setup & Prerequisites |
What prerequiste knowledge is required to follow this topic? How to setup your machine to follow this topic? |
Duration: 01h 00m | 8. 2.2 Some Example Code |
Why should I write readable code? What is a “Code Smell”? |
Duration: 01h 10m | 9. 2.3 Analysing Code using a Linter |
What tools can help with maintaining a consistent code style? How can I keep dependencies between different code projects separate? How can we automate code style checking? |
Duration: 01h 20m | 10. 2.4 Advanced Linting Features |
What can I do to increase the detail of Pylint reports? How can I reduce unwanted messages from Pylint? How can I use static code analysis tools with VSCode? |
Duration: 01h 30m | 11. Lesson 3: Intermediate Git |
What is a Git branch and why is it useful in collaborative
development? When should I create a new branch in my project? What are the differences between fast-forward merge, 3-way merge, rebase, and squash and merge? How does Git handle merging when branches have diverged? |
Duration: 01h 45m | 12. 3.1 Setup & Prerequisites |
What prerequiste knowledge is required to follow this topic? How to setup your machine to follow this topic? |
Duration: 01h 45m | 13. 3.2 Some Example Code |
What are Git “branches”? Why should I separate different strands of code work into “feature branches”? How should I capture problems with my code that I want to fix? |
Duration: 01h 55m | 14. 3.3 Feature Branch Workflow |
How do I use Git to create and work on a feature branch? How do I push my branch changes to GitHub? |
Duration: 02h 05m | 15. 3.4 Creating a Pull Request | How can I organise a set of changes together so they can be merged later? |
Duration: 02h 15m | 16. 3.5 Merging a Pull Request |
How do I merge changes proposed within a pull request? What should I do with a branch that has been merged and is no longer required? |
Duration: 02h 25m | 17. 3.6 Merge Conflicts | FIXME |
Duration: 02h 35m | 18. Lesson 4: Code Review |
What are the benefits of collaborative code development? How can collaborating improve the quality and effectiveness of your code? What practices and tools support effective collaboration? Why should collaborative tools and workflows be adopted early in a project? |
Duration: 02h 50m | 19. 4.1 Setup & Prerequisites |
What prerequiste knowledge is required to follow this topic? How to setup your machine to follow this topic? |
Duration: 03h 00m | 20. 4.2 Some Example Code | FIXME |
Duration: 03h 10m | 21. 4.3 Fixing a Repository Issue | FIXME |
Duration: 03h 20m | 22. 4.4 Submiting a Pull Request | FIXME |
Duration: 03h 30m | 23. 4.5 Reviewing a Pull Request | FIXME |
Duration: 03h 40m | 24. 4.6 Merge the Pull Request | FIXME |
Duration: 03h 50m | 25. Lesson 5: Unit Testing Code | FIXME |
Duration: 04h 05m | 26. 5.1 Setup & Prerequisites |
What prerequiste knowledge is required to follow this topic? How to setup your machine to follow this topic? |
Duration: 04h 05m | 27. 5.2 Some Example Code | FIXME |
Duration: 04h 15m | 28. 5.3 Creating a New Test | FIXME |
Duration: 04h 25m | 29. 5.4 Handling Errors | FIXME |
Duration: 04h 35m | 30. Lesson 6: Continuous Integration |
What is automation in the context of software development, and why is it
beneficial? How does Continuous Integration (CI) enhance the software development process? What tasks can be automated using CI? Why is integrating small code changes regularly preferable to integrating large changes infrequently? How can CI be extended to Continuous Delivery (CD) for automating deployment processes? |
Duration: 04h 50m | 31. 6.1 Setup & Prerequisites |
What prerequiste knowledge is required to follow this topic? How to setup your machine to follow this topic? |
Duration: 05h 00m | 32. 6.2 Some Example Code | FIXME |
Duration: 05h 10m | 33. 6.3 Defining a Workflow | FIXME |
Duration: 05h 20m | Finish |
The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.
Setup
Each episode is standlaone and has its own individual setup - there is no setup for the whole course.