Giter Site home page Giter Site logo

software_engineering_best_practices's Introduction

The course notes for the Best practices in software engineering course at the University of Sheffield.

To contribute changes, please follow these steps:

  1. Fork this repository
  2. Clone your forked repository locally
  3. Activate the environment: :: conda env create -f environment.yml conda activate sebp
  4. Launch Jupyter Lab or Jupyter notebook to modify the notebook files
  5. Commit changes and push
  6. Submit merge request from your fork

software_engineering_best_practices's People

Contributors

bobturneruk avatar davidwilby avatar dennisreddyhoff avatar frb-yousefi avatar m-bluteau avatar milliams avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

davidwilby

software_engineering_best_practices's Issues

Development Environment

Currently Jupyterlab is suggested. Do we want to advocate something else? Colab? VScode? Pycharm? How big a part of this should be setting up a development environment?

Delivery plan

Assign

  • Introduction
  • Introduction
  • Licensing
  • Testing
  • Summary

More signposting for version control/git/github training

This training concerns best practices in software engineering but (perhaps rightly) it's only mention of version control with git is at the very end.

I think that this could do with signposting at the beginning and end of the material since it's such a core concept in best practice for software engineering, but is of course too big a concept to squeeze into the half day course.

Motivation for testing

Some slides to introduce and explain motivation for testing to be delivered before the learners start on the testing bit.

Repository structures

We could introduce basic repo structures, e.g. where to keep code, data, tests etc so that they can be easily packaged at a later date

Test case - code repetition

I find that a lot of cases have the same code to setup as the code that appears in other cases, what's the best practice for this?

Self-led? Timings? Structure?

Is the self-led approach here OK? Should we move it to live-coding? Should we have little check-ins after each "module"? I think, yes.

Motivation for documentation

Could just be covered verbally, but I think there is good, research-relevant motivation for testing and licensing but there is perhaps some missing motivation for "why should I, as a researcher, write docstrings?"

Think about environment setup

The setup suggests using anaconda navigator to implement JupyterLab, which gets everyone who uses it into a visually similar environment, it presents a problem I've come across:

  • when running !python ... from the jupyter/ipython console, it uses one python installation
  • when opening a terminal, inside jupyterlab, it opens (at the home directory) using whatever the system default is.

We had a participant today who found that it opened in the conda base env, which was using python 2.7. This meant that a LOT of things ran in an unexpected way. We might consider spending some more time establishing this at the start.

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.