Skip to content

Commit 1219c1a

Browse files
authored
Merge pull request #204 from dpshelio/contributing
Contributing and building info
2 parents 9d28677 + 2b381bc commit 1219c1a

File tree

1 file changed

+67
-15
lines changed

1 file changed

+67
-15
lines changed

β€ŽREADME.md

Lines changed: 67 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,79 @@
22

33
Course materials for Research Software Engineering course.
44

5-
Current plan for structure (as advertised):
65

7-
Research Software Engineering
6+
## Content:
87

9-
21st, 28th Feb and 7th, 14th, 21st March 2014 2:00pm - 5:00pm
8+
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 semester module (30 hours over 10 half-days), intensive, practical course. The content of each of the 10 half-day units is as follows:
109

11-
Content:
12-
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 (15 hours over 5 half-days), intensive, practical course. The content of each of the 5 half-day units is as follows:
13-
14-
1. Code management. Collaborating around code. Distributed version control. Git. Github. Issue tracking. Code review and pull requests. Branches and merging. Software licenses. Citing software. Software sustainability.
15-
1. Testing scientific software. Unit testing, regression testing. Test driven design. Expectations and assertions. Mocking. Build-and-test servers. Negative testing. Sensible error messages. Managed logging. Debugging and debuggers. Coverage measurement.
16-
1. Best practice in construction. Comments. Coding conventions. Documentation. Refactoring. IDEs. Configuration files. Using libraries.
17-
1. Design and development. Object oriented design. Software as engineering. Pragmatic use of diagram languages. Requirements engineering. Agile and Waterfall. Functional and architectural design.
18-
1. Building and deployment. Build tools. CMake and Scons.
19-
Engineering for portability. Packaging. Deploying.
10+
1. Code management. Distributed version control. Git. Github
11+
1. Collaborating around code. Issue tracking. Code review and pull requests. Branches and merging
12+
1. Introduction to Python and Scientific programming
13+
1. Analysing and plotting Research data
14+
1. Testing scientific software. Unit testing, regression testing. Test-driven design. Expectations and assertions. Mocking. Build-and-test servers. Negative testing. Sensible error messages. Setting up Continuous Integration.
15+
1. Documenting software projects. Managed logging. Debugging and debuggers. Coverage measurement. Finding errors in the past.
16+
1. Writing libraries and creating packages. Software licenses. Citing software. Software sustainability. Comments. Coding conventions.
17+
1. Software as engineering. Pragmatic use of diagram languages. Requirements engineering. Agile and Waterfall. Functional and architectural design.
18+
1. Best practice in construction. Design and development. Object-oriented design.
19+
1. Analysing performance. Profiling code. Developing faster code.
2020

2121
## Prerequisites:
2222

23-
You must have reasonable experience in at least one compiled language, such as C++, C, or Fortran, and at least one dynamic language, such as Python, Ruby, Matlab or R.
24-
You must also have experience of the Unix shell.
23+
- You must have reasonable experience in at least one compiled language, such as C++, C, or Fortran, and at least one dynamic language, such as Python, Ruby, Matlab or R.
24+
- You must also have experience of the Unix shell.
2525

26-
Examples and exercises for this course will be provided in C++ and Python. You will therefore find it easiest to follow along if you have experience in at least one of these languages. Appropriate Python experience could be obtained from the Software Carpentry Bootcamp, while C++ experience can be obtained from the RITS C++ course. Previous experience with version control (such as from Software Carpentry) would be helpful.
26+
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 it. Appropriate Python experience could be obtained from the Software Carpentry workshops. Previous experience with version control (such as from Software Carpentry) would be helpful.
2727

2828
You are required to bring your own laptop to the course as the classrooms we are using do not have desktop computers.
29+
30+
# Contributing to this repository
31+
32+
This repository contains the course notes as jupyter notebooks. This makes it a bit difficult to contribute and to review contributions. Please, only include changes in the cells modified and not other metadata that changes when running them.
33+
34+
⚠ Do not run `make` locally on your computer! ⚠
35+
36+
It will produce side effects on your global git configuration!
37+
Instead, follow the instructions below.
38+
39+
## Testing it locally
40+
41+
The site is built using gh-actions. If you'd like to test the actions locally,
42+
you can run the actions using [`act`](https://github.com/nektos/act) command
43+
tool. By default this will run the action in a copy of the repository and you
44+
won't be able to inspect the steps that happened. If you'd like to keep the
45+
output in the current directory, use the `-b` (bind) flag.
46+
47+
```bash
48+
$ act -b
49+
[Build website/Build-website] πŸš€ Start image=catthehacker/ubuntu:act-latest
50+
[Build website/Build-website] 🐳 docker run image=catthehacker/ubuntu:act-latest platform= entrypoint=["/usr/bin/tail" "-f" "/dev/null"] cmd=[]
51+
[Build website/Build-website] ⭐ Run actions/checkout@v2
52+
[Build website/Build-website] βœ… Success - actions/checkout@v2
53+
[Build website/Build-website] ⭐ Run actions/cache@v2
54+
INFO[0000] ☁ git clone 'https://github.com/actions/cache' # ref=v2
55+
[Build website/Build-website] βœ… Success - actions/cache@v2
56+
[Build website/Build-website] ⭐ Run Install TeXLive
57+
INFO[0000] ☁ git clone 'https://github.com/DanySK/setup-texlive-action' # ref=0.1.1
58+
[Build website/Build-website] βœ… Success - Install TeXLive
59+
[Build website/Build-website] ⭐ Run Setup Python
60+
INFO[0001] ☁ git clone 'https://github.com/actions/setup-python' # ref=v2
61+
[Build website/Build-website] βœ… Success - Setup Python
62+
[Build website/Build-website] ⭐ Run Install dependencies
63+
INFO[0001] ☁ git clone 'https://github.com/py-actions/py-dependency-install' # ref=v2
64+
[Build website/Build-website] βœ… Success - Install dependencies
65+
[Build website/Build-website] ⭐ Run Building notes
66+
[Build website/Build-website] βœ… Success - Building notes
67+
[Build website/Build-website] ⭐ Run Builds website
68+
INFO[0001] ☁ git clone 'https://github.com/helaili/jekyll-action' # ref=v2
69+
[Build website/Build-website] 🐳 docker run image=act-helaili-jekyll-action-v2:latest platform= entrypoint=[] cmd=[]
70+
[Build website/Build-website] βœ… Success - Builds website
71+
```
72+
73+
Alternatively, if you want to only run the jekyll build step once you've run the whole action, you can use the official jekyll containers with:
74+
75+
```bash
76+
$ docker run --rm --volume="$PWD:/srv/jekyll" --volume="$PWD/vendor/bundle:/usr/local/bundle" -p 4000:4000 -it jekyll/jekyll:3.1.6 jekyll serve
77+
```
78+
79+
and open http://localhost:4000/rsd-engineeringcourse (or the link provided).
80+
Note that this is mounting the `bundle` directory where `act` will create them.

0 commit comments

Comments
Β (0)