Skip to content

OxfordRSE/rsd-engineeringcourse

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rsd-engineeringcourse

Course materials for Research Software Engineering course.

Current plan for structure:

Research Software Engineering

Content: In this course, you will move beyond programming, to learn how to construct reliable, readable, efficient research software in a collaborative environment. The emphasis is on practical techniques, tips, and technologies to effectively build and maintain complex code. This is a short (4.5 days), intensive, practical course. The content of each of the units is as follows:

  • Pre-work: installing Python, conda, Jupyter Notebooks, and git. It is greatly beneficial if you do this before attending the course, so that you are set up to get started with the labs.
  1. Python. A whirlwind tour of the basic language features. "Pythonic" code: iterators, generators, comprehensions, context managers.
  2. Code management. Collaborating around code. Distributed version control. Git. Github. Issue tracking. Code review and pull requests. Branches and merging. Continuous Integration. Citing software. Software sustainability.
  3. Lab: Collaborative code development with Python, Git, and Github.
  4. Handling failure. Sensible error messages. Exceptions and error handling. Print-debugging. Debuggers.
  5. Lab: Handling failure.
  6. Testing research software. Test pyramid: unit testing, regression testing. Expectations and assertions. Negative testing. Test driven design. Mock objects and test doubles.
  7. Lab: Testing research software.
  8. Best practice in construction. Comments. Coding conventions. Documentation.
  9. Lab: Adopting best practice.
  10. Refactoring. IDEs.
  11. Lab: Refactoring and libraries.
  12. Requirements engineering. Engineering methodologies: Agile and Waterfall.
  13. Design and development. Software as engineering. Functional and architectural design.
  14. Object oriented design. Pragmatic use of diagram languages. Design Patterns.
  15. Lab: Design and Development, OOD.
  16. Building and deployment. Python librarie. Packaging for pip and conda. Deploying.
  17. Lab: Building and deployment.
  18. Open Source community and interaction. Next steps.

Prerequisites:

Lesson Zero covers installation of the tools that you will need, and we recommend you go through this material before starting the course.

Examples and exercises for this course will be provided in Python. You will therefore find it easiest to follow along if you have experience in that language. Appropriate Python experience could be obtained from the Software Carpentry Bootcamp. Previous experience with version control (such as from Software Carpentry) would be helpful.

You are required to bring your own laptop to the course as the classrooms we are using do not have desktop computers.

About

Course materials for Research Software Engineering course.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Jupyter Notebook 81.6%
  • HTML 18.3%
  • Other 0.1%