Coder Social home page Coder Social logo

suseokpark / rsd-engineeringcourse Goto Github PK

View Code? Open in Web Editor NEW

This project forked from oxfordrse/rsd-engineeringcourse

0.0 1.0 0.0 437.41 MB

Course materials for Research Software Engineering course.

Home Page: http://github-pages.ucl.ac.uk/rsd-engineeringcourse/

License: Other

Jupyter Notebook 90.51% HTML 9.39% Python 0.07% Makefile 0.01% Smarty 0.01% CSS 0.02%

rsd-engineeringcourse's Introduction

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.

rsd-engineeringcourse's People

Contributors

jamespjh avatar ageorgou avatar dpshelio avatar iamleeg avatar sgrieve avatar tcouch avatar jenshnielsen avatar mattclarkson avatar sinanshi avatar fepegar avatar rc-softdev-admin avatar simonesala avatar raquelalegre avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.