Assignments and Working Environment
A note on learning assignments with GitHub
You will work alone or in teams of two and submit your assignment solutions to your (team’s) GitHub-hosted classroom repository. Don’t get confused about “your” repository. Once you have a GitHub account, you can create as many repositories at GitHub as you like but for assignments within our courses, always use your respective classroom repository.
The classroom repository will be created automatically once you followed the link provided by the instructors. Your classroom repository will be hosted as part of GeoMOER, our learning space at GitHub for Marburg Open Educational Ressources.
If not stated otherwise, the deadline for an assignment is the date and time of the next course session. The submissions generally require R or R markdown with compiled html files or papers and presentations in PDF format.
To start with, get yourself a GitHub account if you have not one already and create your personal or team classroom repository using the link provided. Be aware that once the classroom repository is created, you (or your team) will stick to this until the end of the course.
Aside from submitting assignments, you should use your Git repository for everything related to this course which is a potential subject to version control, team collaboration and issue tracking.
A note on team assignments in education
If you work in a team it is very important that each team member knows what and how to do it. Hence, our very strong suggestion is the following: First, try to understand the problem individually. Second, meet as a team and share your individual solutions. Help each other, discuss problems, pros and cons and build the final solution which will be the one which is submitted and/or forms the basis for the next task in your problem solving workflow. In doing so you will get the maximum from this course because learning and training your skills is most effective in problem-based and peer-to-peer scenarios.
Another important aspect is reliably and punctually. Both team mates depend on each other. Keep your team work smooth by
- a team management concept which defines project management and meetings but also disciplinary measures (e.g. paying the pizza service bill),
- a time management concept with fixed group appointments (something like a jour fixe would be a perfect option) and an eye on the overall time line and deadlines of the project,
- a record management concept which ensures that each workflow step is documented and reproducible which becomes very important when the time for creating reports or presentations has come,
- a cross-check management that double checks the final products, scripts, solutions prior to submission.
It is a good idea to assign the respective management roles to specific persons (i.e. each of you covers to roles).
Please do not take any shortcuts here, just do it right and take as much from this course as you can.
Mandatory working environment
We value freedom of choice as an important good but giving our long-term experience freedom of choice comes to an end when we talk about the mandatory working environment for this course. The reason for this is simple: you work with team-based assignments and a piece of code written on the laptop of person A should run basically without any changes on the computer of person B. The situation gets nastier if you should test some code of a peer which is not part of your team or if the instructors would like to run your script on their own system. Hence, let’s save everybody’s time and focus on the things which are really important. Once the course is finished, feel free to use any working environment structure you like.
Coping with different absolute paths across different computers
The biggest problem when it comes to cross-computer project path environments is not the project environment itself, i.e. the subfolders of your project relative to your project folder but the absolute path to your project folder. Imagine you agreed on a project folder called mpg-envinsys-plygrnd. On the laptop of person A, the absolute path to the root folder might be C:\Users\UserA\University\mpg-envinsys-plygrnd while on the external hard disk of person B it might be X:\university_courses\mpg-envinsys-plygrnd. If you want to read from your data subfolder you have to change the absolute directory path depending on which computer the script is running. Not good.
One solution to this problem is to agree on a common structure relative to your individual R home directory using symbolic links (Linux flavor systems) or junctions (Windows flavor systems).
Example: Agree with your team mates on a top-level folder name which hosts all of your student projects. For example, this folder is called edu. Within edu, the project folder of this course is called mpg-envinsys-plygrnd. Create the edu anywhere you want, e.g. at D:\stuff\important\edu. Then create a symbolic link to this folder within your R home directory i.e. the directory where path.expand("~")
points to.
To create this link on Windows flavor systems, start a command prompt window (e.g. press [Windows], type “CMD”, press [Return]) and change the directory of the command prompt window to your R home directory which is C:\Users\your-user-name\Documents by default. Then use the mklink \J
command to create the symbolic link. In summary and given the paths above:
cd C:\Users\your-user-name\Documents
mklink /J edu D:\stuff\important\edu
On Linux flavor systems, the R home directory is your home directory by default, i.e. /home/your-user-name/. If you create your edu folder on /media/memory/interesting/edu, the symbolic link can be created using your bash environment:
cd /home/<your-user-name>/
ln -s /media/memory/interesting/edu edu
Now one can access the edu folder on both the windows and the Linux example via the home directory, i.e. ~/edu/. All problems solved.
While this will work on all of your private computers, it will not work on the ones in the University’s computer lab. To handle that as smooth as possible, you can use the functionality of the envimaR package which allows to set defaults for all computers but one special type which is handled differently. See the example on setting up a working environment.
Mandatory working environment
Given the explanations above, your initial working environment relative to your edu folder should look like the following. It will grow over time based on additional information supplied within the individual assignments.
~edu/mpg-envinsys-plygrnd/
|-- data
|-- aerial
|-- lidar
|-- grass
|-- tmp
|-- log
|-- run
|-- your-github-team-learning-log-repository
The folder your-github-team-learning-log-repository is the one you have checked out from your GitHub-hosted team learning log.
This is no guideline, this is a rule. Read it, learn it, live it and have a nice ride.
Have a look at the example on setting up a working environment.