--- tags: Workshop-2023-Mar --- # CodeRefinery workshop 2023-03 planning [toc] ## Links - [Workshop page](https://coderefinery.github.io/2023-03-21-workshop/) - This document: https://hackmd.io/@coderefinery/2023-mar-ws-planning - [Archive HackMD]() :link: - [HedgeDoc Q&A](https://notes.coderefinery.org/workshop-2023-march) - [Twitch channel](https://www.twitch.tv/coderefinery/about) - [Emails and communication](https://github.com/coderefinery/2023-03-21-workshop/tree/main/content/communication) - [Zoom for onboarding and install help](https://uit.zoom.us/j/63658383518) :::danger Add missing links! :link: :arrow_up: ::: ## Workshop roles ([overview](https://coderefinery.github.io/manuals/roles-overview/)) :::success **If you want to take part, add your name here, sign up in Indico and select "I am interestest in being a helper, co-instructor, or observer", and you will be contacted.** ### Instructors ([description](https://coderefinery.github.io/manuals/instructors/#instructors), [lesson links](https://coderefinery.org/lessons/core/)) Two names per lesson, first is primary - [x] [day 1 - git-intro](https://coderefinery.github.io/git-intro/): Bjørn, Diana - [x] [day 2 - git-intro](https://coderefinery.github.io/git-intro/): Bjørn, Diana - [X] [day 3 - git-collab](https://coderefinery.github.io/git-collaborative/): Radovan, Dhanya - [x] [day 4 - reproducible research](https://coderefinery.github.io/reproducible-research/): Radovan, Matias - [x] [day 4 - social coding](https://coderefinery.github.io/social-coding/): Radovan, Matias - [x] [day 5 - jupyter](https://coderefinery.github.io/jupyter/): Johan, Teemu - [x] [day 5 - documentation](https://coderefinery.github.io/documentation/): Bjørn, Johan - [x] [day 6 - testing](https://coderefinery.github.io/testing/): Thomas, Teemu - [x] [day 6 - modular code development](https://coderefinery.github.io/modular-type-along/): Thomas, Radovan Extra: - DI: Possibly teach something during week 2 instead of week 1 if external teachers (that should receive prio) are interested in teaching Git Things to add to instructions - After planning/editing the lesson - Do a dry run (prefereably with someone "new" to the topic) ### Learner Zoom team leaders ([description](https://coderefinery.github.io/manuals/team-leaders/)) Not needed since we (description above now does not match anymore: this time no Zoom organized by us) assume teams bring their own. ### Expert helpers ([description](https://coderefinery.github.io/manuals/expert-helpers/)) Help answering questions in hedgedoc. - [ ] day 1 - git-intro: Stephan, ???, ... - [ ] day 2 - git-intro: Stephan, ???, ... - [ ] day 3 - git-collab: Stephan, ???, ... - [ ] day 4 - reproducible research: Stephan, Dhanya, ... - [ ] day 4 - social coding: Stephan, Dhanya, ... - [ ] day 5 - jupyter: Stephan, Dhanya, ... - [ ] day 5 - documentation: Stephan, Dhanya, ... - [ ] day 6 - testing: Stephan, Dhanya, ... - [ ] day 6 - modular code development: Stephan, Dhanya, ... ### HackMD manager ([description](https://coderefinery.github.io/manuals/hackmd-helper/#hackmd-manager)) Keep HackMD organized, check for unanswered questions, and archive notes each day - [x] preparation before workshop: - [x] day 1 - git-intro: ???, Radovan, ... - [x] day 2 - git-intro: Matias, Radovan, ... - [x] day 3 - git-collab: ???, Matias, ... - [x] day 4 - reproducible research: Johan, Diana, ... - [x] day 4 - social coding: Johan, Diana, ... - [x] day 5 - jupyter: Diana, Radovan, ... - [x] day 5 - documentation: Diana, Radovan, ... - [x] day 6 - testing: Johan, Matias, ... - [x] day 6 - modular code development: Johan, Matias, ... ::: ## Workshop organization; roles "behind the scenes" Roles and their responsibilities. This does not mean that a person will do everything that is part of their responsibility, but they will make sure that their responsibilities are followed-up and not forgotten. ### Event director ([description](https://coderefinery.github.io/manuals/director/)) - lead: Radovan - backup: Stephan :::spoiler Checklist - Before workshop - [x] Create planning HackMD by copying this page to a new HackMD in [CodeRefinery HackMD](https://hackmd.io/team/coderefinery) - [x] Distribute roles using the planning HackMD - [x] Ask collaborators/stakeholders to pick roles - [x] Add all sessions to [CodeRefinery calendar](https://github.com/coderefinery/calendar) separately - [x] Send calendar invite to all organizers, instructors, expert helpers, with all relevant links - [x] Decide if certificates will be possible and what is needed for getting a certificate/credits (ask from partner universities) - [x] Remind co-organizers to register - After the workshop: - [x] Summarize lessons learned and make it a blog post in [coderefinery.org repo](https://github.com/coderefinery/coderefinery.org) - [ ] Coordinate post-workshop survey eg. in Indico - [ ] :bulb: Merge new edits from here (no names ofc) to the [Playbook](https://github.com/coderefinery/manuals/blob/master/workshop-playbook.md) - [ ] Port changes from workshop page to [template page](https://github.com/coderefinery/template-workshop-webpage) - [ ] On CR website move from ["upcoming"](https://github.com/coderefinery/coderefinery.org/blob/main/content/workshops/upcoming.md) to ["past"](https://github.com/coderefinery/coderefinery.org/blob/main/content/workshops/past.md) ::: ### Registration coordinator ([description](https://coderefinery.github.io/manuals/registration-coordinator)) - lead: @MatiasJJ - backup: Radovan :::spoiler Checklist without CR ZOOM - **ca. 2 months before = When workshop details are set:** - [x] Create [Indico registration page](https://indico.neic.no/category/5/) for the event - [x] Include event information - [x] Customise the registration form - [x] Customise the confirmation email (with [outreach and marketing coordinator](#Outreach-and-marketing-coordinator)) - [ ] Incl. Zoom link if any - [ ] Point to workshop page - [ ] Incl. HackMD link if any - [x] Set up a workshop page from [template page](https://github.com/coderefinery/template-workshop-webpage) - [x] Add workshop to ["upcoming courses"](https://github.com/coderefinery/coderefinery.org/blob/main/content/workshops/upcoming.md) - [ ] Draft email templates - [x] Registration confirmation email - [ ] Info to instructors (with [instructor coordinator](#Instructor-coordinator)) - [ ] Info to observers (with [instructor coordinator](#Instructor-coordinator)) - [x] Info to team leads (with [exercise coordinator](#Exercise-and-team-leader-coordinator)) - [x] Info to participants (with [outreach and marketing coordinator](#Outreach-and-marketing-coordinator)) - Remember to add all the emails to workshop page - [ ] Open the registration - **Every day: ** - Check [support email (Freshdesk)](https://coderefinery.zulipchat.com/#narrow/stream/215460-coderefinery/topic/freshdesk.20procedures) for requests/questions - **Every week: ** - Check registrations - Update [stats](https://github.com/coderefinery/workshop-stats) - Update workshop-webpage if new local organisations - **ca. 1 month before:** - [x] Reach out to participants ([examples from Mar 2023](https://github.com/coderefinery/2023-03-21-workshop/tree/main/content/communication)) - [x] [Team leaders](https://github.com/coderefinery/2023-03-21-workshop/blob/main/content/communication/email-to-team-leads.md) - [x] [Those who indicated interest in co-organizing and co-teaching](https://github.com/coderefinery/2023-03-21-workshop/blob/main/content/communication/email-to-co-org-helpers.md) - [x] [Communicate about self organising teams](https://github.com/coderefinery/2023-03-21-workshop/blob/main/content/communication/exercise-teams-2023-03-09.md) - **Two weeks before** - [ ] [Send general information to all](https://github.com/coderefinery/2023-03-21-workshop/blob/main/content/communication/practical-info-2023-03-09.md) - Next steps, onboarding, installation - Those who have a team, please organize your own zoom/video - [ ] [Inform those who want in-person about known LOs](https://github.com/coderefinery/2023-03-21-workshop/blob/main/content/communication/local-groups-2023-03-09.md) - [ ] Try to match up learners and helpers who want to be part of a team - **ca. 1 week before** - [ ] Update indico auto-reply for last minute registrations - [ ] Send [email with all links](https://github.com/coderefinery/2023-03-21-workshop/blob/main/content/communication/links-2023-03-15.md) - **1 day before!** - [ ] Send a [reminder with links](https://github.com/coderefinery/2023-03-21-workshop/blob/main/content/communication/links-2023-03-20.md) - **During the workshop** - [ ] Send [daily summaries](https://github.com/coderefinery/2023-03-21-workshop/blob/main/content/communication/summary-day1.md) (with [outreach and marketing coordinator](#Outreach-and-marketing-coordinator)) - [Some of them have also preparation instructions!](https://github.com/coderefinery/2023-03-21-workshop/blob/main/content/communication/summary-day2%2Bprep-day3.md) - **After the workshop:** - [ ] Add viewing statistics to [CodeRefinery webpage](https://github.com/coderefinery/coderefinery.org/tree/main/content/about/statistics) - [ ] Use [statistics repo](https://github.com/coderefinery/workshop-stats) (feel free to edit) - [x] Close registration ::: :::spoiler Zoom-related things ::: @MatiasJJ Clean this up!!! - @MatiasJJ ### Broadcaster ([description](https://coderefinery.github.io/manuals/broadcaster/)) - lead: Richard - backup: @MatiasJJ :::spoiler Checklist - [ ] Prepare Ice-breakers for each day (in learner HackMD) - [ ] Create instructor Zoom and communicates it (with [exercise coordinator](#Exercise-and-team-leader-coordinator) and [outreach and marketing coordinator](#Outreach-and-marketing-coordinator)) - [ ] Publish recordings (does not do all the work but coordinates it) - [ ] Prepare for upload (use [ffmpeg-editlist](https://github.com/coderefinery/ffmpeg-editlist) and collaborate) - [ ] Upload videos and communicate (with [outreach and marketing coordinator](#Outreach-and-marketing-coordinator)) ::: ### Instructor coordinator ([description](https://coderefinery.github.io/manuals/instructors/)) - lead: Radovan - backup: Samantha, Matias (interested to test-listen and give feedback) :::spoiler Checklist - [x] Schedule calls with each instructor pair to distill most important questions and tasks to them - [x] show where the detailed schedule is and recommend to move it to instructor guide - [x] discuss that the detailed schedule can and should be improved - [x] show where Q&A and feedback from past workshop can be found - [x] discuss plans for exercises: try 3 exercises each half-day, each not shorter than 20 mins - [ ] ask them to check their lesson's exercise list - [x] ask for any software requirements changes - [x] inform about audience (at the time of writing half of registrants prefer to follow on their own) - adapt exercise expectations to audience - [x] recommend high-quality screen share - [ ] Confirm that each lesson and session has co-instructors - [x] Inform instructors that they need to register - [ ] Send email to Observers and save to website - [ ] Instructor briefing: make sure learners get a good experience (lesson material, issues, style, screen share) - [x] Remind instructors to send software install requirements in time - [x] Make sure software install instructions work - [ ] List instructors on the website (with [exercise coordinator](#Exercise-and-team-leader-coordinator)) - [ ] Organize team leader On-boarding sessions (with [exercise coordinator](#Exercise-and-team-leader-coordinator)) ::: ### Exercise and team leader coordinator ([description](https://coderefinery.github.io/manuals/exercise-coordinator/)) - lead: Radovan - backup: ? :::spoiler Checklist - [ ] Create and host exercise Zoom (with [instructor coordinator](#Instructor-coordinator)) - [ ] Create exercise groups - [ ] Inform those who we can't accommodate into groups that they can follow stream and need to somehow self-organize - [ ] Communicate exercise Zoom to paricipants (with [outreach and marketing coordinator](#Outreach-and-marketing-coordinator)) - [ ] Provide [practical instructions](https://github.com/coderefinery/template-workshop-webpage/issues/73) in the exercise zoom - [ ] Makes sure exercise list is communicated (with [outreach and marketing coordinator](#Outreach-and-marketing-coordinator)) - [ ] List all team leads (who consent to being listed) on the website (with [instructor coordinator](#Instructor-coordinator)) - [ ] List expert helpers on the website (with [instructor coordinator](#Instructor-coordinator)) - [ ] Create learner HackMD (create nice URL) with all relevant links - [ ] Use [CodeRefinery HedgeDoc](https://notes.coderefinery.org) or [HackMD](https://hackmd.io/team/coderefinery) - [ ] Makes sure that each workshop day has a learner HackMD editor who edits and archives at the end of the day - [ ] Organize Staff & Helpers On-boarding sessions (with [instructor coordinator](#Instructor-coordinator)) - [ ] Communicate to staff + helpers (with [outreach and marketing coordinator](#Outreach-and-marketing-coordinator)) - [ ] Send team leader onboarding summary email + save it to the website (with [outreach and marketing coordinator](#Outreach-aor and exercise & team leader coordinator with their outreach - [ ] Draft email templates - [x] Registration confirmation email - [ ] Info to instructors (with [instructor coordinator](#Instructor-coordinator)) - [ ] Info to observers (with [instructor coordinator](#Instructor-coordinator)) - [ ] Info to team leads (with [exercise coordinator](#Exercise-and-team-leader-coordinator)) - [ ] Info to participants (with [registration coordinator](#Registration-coordinator)) - [ ] Create/update [advertising texts](https://github.com/coderefinery/template-workshop-webpage/tree/main/content/communication) and relevant news on the workshop page - [ ] After each workshop day, send summary and preparation for next day email to all (can be based on the website news and link there so that it can be updated) - [ ] [EXAMPLE: day 1 summary](https://github.com/coderefinery/2022-03-22-workshop/issues/33) - [ ] [EXAMPLE: day 2 summary](https://github.com/coderefinery/2022-03-22-workshop/issues/41) - [ ] [EXAMPLE: day 3 summary](https://github.com/coderefinery/2022-03-22-workshop/issues/43) - [ ] [EXAMPLE: day 4 summary](https://github.com/coderefinery/2022-03-22-workshop/issues/49) - [ ] [EXAMPLE: day 5 summary](https://github.com/coderefinery/2022-03-22-workshop/issues/51) - [ ] [EXAMPLE: summary and thank you](https://github.com/coderefinery/2022-03-22-workshop/issues/56) - [ ] [EXAMPLE: invitation to debriefing (feedback)](https://github.com/coderefinery/2022-03-22-workshop/issues/52) - After the workshop - [ ] Help other roles in putting everybody who contributed and consents on the [website as credit](https://github.com/coderefinery/coderefinery.org/blob/main/content/about/contributors.md) - [ ] Help event director with Post-Workshop survey ::: ### Certificate coordinator https://coderefinery.github.io/2023-03-21-workshop/certificates/ - lead: - backup: ASC team (the process can be run by anyone and we are now using a ticketing system to track requests) :::spoiler Checklist - [ ] Make sure that instructions on certificates are disseminated multiple times - [ ] Workshop page, emails ``` - Learner sends materials to scip _at_ aalto.fi. This opens a ticket in Aalto "esupport" system - The person who generates the certificate verifies quickly that the tasks were completed. - We then work with https://github.com/coderefinery/generate-certificates to generate PDF certificates - Certificate is sent to the person and ticket is closed - Aalto specific: - The local version of that repository is at /scratch/rse/generate-certificates/. The commands were slighty modified so that the default working directory is not the home folder - Aalto students can also obtain directly the 1 ECTS credit. See internal process at ASC pages. ``` ::: ## Advertisement channels (outreach lead finds people to do take care of the different channels) - [x] Newsletter - https://tinyletter.com/coderefinery/archive - draft: https://hackmd.io/@coderefinery/CRnewsletter_1_2023 - [x] Advertising texts on the workshop page - https://coderefinery.github.io/2023-03-21-workshop/communication/ - https://github.com/coderefinery/2023-03-21-workshop/tree/main/content/communication - [x] CodeRefinery Twitter - https://coderefinery.zulipchat.com/#narrow/stream/119815-general/topic/tweet-toot-suggestions - [x] CodeRefinery Mastodon - https://coderefinery.zulipchat.com/#narrow/stream/119815-general/topic/tweet-toot-suggestions - [x] CodeRefinery LinkedIn - https://www.linkedin.com/events/coderefineryworkshopmarch21-23a7031623728480272384/comments/ - [x] CHCAA LinkedIn (Aarhus University) - [ ] Partner Twitter, retweet and own tweets - [ ] Aalto Scientific Computing - [ ] Partner newsletters - [x] Sigma2 - [x] SNIC/NAISS - [x] ENCCS - [ ] CSC - [x] Partner websites training calendars - [x] [CSC](https://ssl.eventilla.com/event/Y7LvO) - [x] ENCCS - [x] UiB - [x] AU (Aarhus University) - [ ] Partner and other email lists - [ ] Aalto STEM students - [ ] Aalto triton users - [ ] Delta doctoral network - [x] UiB researcher - [X] UiB HPC - [ ] NERSC Bergen - [ ] Bjerknes Bergen - [ ] University of Oslo computational biology - [ ] University of Oslo Phd and Postdocs - [ ] University of Oslo Dcince contact (?) - [ ] Research institutes in all countries - [ ] Partner posters - [ ] Aalto (CS,U,NBE,PHYS,VAARE) ## Planning area :::spoiler aalto email It's time for the next CodeRefinery workshop. In case you didn't know: Our extremely popular CodeRefinery course doesn't teach programming, but all of the other tools that go around programming that are needed to be an efficient coputational scientist (version control, testing, reproducibility, collaboration, etc.). You could look it it as one of central computational scientist training courses, along with our HPC Kickstart course each June: https://coderefinery.github.io/2023-03-21-workshop/ Group leaders in computational sciences, make sure that all of your group members attend this at least once - it will imprve long-term productivity and collaboration. Junior researchers, invest in your career by attending, these skills will improve your work both now and in the future. If you register and are in Finland, you will be invited to an in-person session where we can work together on exercises. Online attendance via livestream is also possible. We have worked very hard to make this as accessible as possible: - all material is public and usable independently - videos also available immediately in case you miss a session - registration isn't actually required, and you don't have to come each day if you register, thanks to our livestream format. So there's no reason not to sign up. - you can attend with your friends, n We don't just teach in isolation, we support everything we teach long term, just drop by the garage and ask: https://scicomp.aalto.fi/help/garage/ ::: ### Teams registration part [Conceptboard with options, pros and cons](https://app.conceptboard.com/board/bsdm-3fio-oaq9-ic0o-uayf) ### Summary day 6 +++ title = "2023-03-31 Thank you and Summary Day 6" [extra] subject = "[CodeRefinery workshop] Thank you and Day 6 summary + links!" +++ Dear CodeRefinery workshop partipant, Thank you for participating the workshop! All feedback is very welcome, for example on how we could improve the workshop format and content. There is a super short post-workshop survey coming up in a month. Please register to CodeRefinery newsletter to get news about next events: https://coderefinery.org/#newsletter Feel free to join our chat if you have questions about coding or want to further participate CodeRefinery project: https://coderefinery.github.io/manuals/chat/ We covered the following episodes on the last day of the workshop: - Software testing: https://coderefinery.github.io/testing/ - Modular coding: https://coderefinery.github.io/modular-type-along/ Recordings can be found at: https://www.youtube.com/watch?v=c-Y5cUgl3H4&list=PLpLblYHCzJACsZllghoLA4JBMjkTk0eq4 If you are interested in certificates please check our [instructions](https://coderefinery.github.io/2023-03-21-workshop/certificates/) Pro tip: you can continue to use the CodeRefinery Conda environment on you machines. Consider it as a ready-made coding environment. For example use it as a starting point when creating environments for your own projects. https://coderefinery.github.io/installation/ We want to send special thanks to team leads and local organizers this time – and welcome everyone to run a local team next time! Please let us know how it went for you in your groups/rooms. All emails that we sent out: https://coderefinery.github.io/2023-03-21-workshop/communication/ Looking forward to see you next time: https://coderefinery.org/workshops/upcoming/ Have a happy summer! CodeRefinery team --- > Note to self.. those cool markdown links don't work in the email... 🙄 > For archiving: - [please register to get it – check your spam folder for confirmation email] - [All emails that we send out](https://coderefinery.github.io/2023-03-21-workshop/communication/) ## Teacher's planning ## Schedule Day 1 - 08:50 - 09:00 (10 min) Soft start and icebreaker question - 09:00 - 09:15 (15 min) Welcome and practical information (Richard?) - Introduction to version control (part 1/2) - 09:15 - 09:30 (15 min) [Diana: Motivation - teaching & demo](https://coderefinery.github.io/git-intro/motivation/#motivation) - 09:30 - 09:45 (15 min) [Diana: Basics - teaching & type along](https://coderefinery.github.io/git-intro/basics/#basics) - 09:45 - 10:05 (20 min) [Diana: Basics - exercises](https://coderefinery.github.io/git-intro/basics/#exercise-record-changes) 1. [Record changes](https://coderefinery.github.io/git-intro/basics/#exercise-record-changes) 2. [Optional: Comparing, renaming, and removing](https://coderefinery.github.io/git-intro/basics/#optional-exercises-comparing-renaming-and-removing) - if time allows - 10:05 - 10:15 (10 min) :coffee: :walking: :tea: Break - 10:15 - 10:35 (20 min) [Bjørn: Basics - History, commit log, ignoring - teaching](https://coderefinery.github.io/git-intro/basics/#git-history-and-log) - 10:35 - 10:50 (15 min) [Bjørn: Branching and merging - teaching](https://coderefinery.github.io/git-intro/branches/#branching-and-merging) - 10:50 - 11:10 (20 min) [Bjørn: Branching and merging - exercises](https://coderefinery.github.io/git-intro/branches/#exercise-create-and-commit-to-branches) 1. [Create and commit to branches](https://coderefinery.github.io/git-intro/branches/#exercise-create-and-commit-to-branches) Teaching resumed before merging branches. 2. [Optional exercises with branches: Fast-forward merge and Rebasing](https://coderefinery.github.io/git-intro/branches/#optional-exercises-with-branches) - if time allows - 11:10 - 11:20 (10 min) :coffee: :walking: :tea: Break - 11:20 - 11:35 (15 min) Bjørn: Summarize branching and merging - 11:35 - 11:45 (10 min) [Diana: Conflict resolution (teaching)](https://coderefinery.github.io/git-intro/conflicts/) - 11:45 - 12:05 (20 min) [Diana: Exercise conflict resolution](https://coderefinery.github.io/git-intro/conflicts/#exercise-create-and-resolve-a-conflict) - 12:05 - 12:10 (5 min) :coffee: :walking: :tea: Break - 12:10 - 12:25 (15 min) Bjørn Buffer, Q&A session - 12:25 - 12:30 ( 5 min) Bjørn Feedback & What will we be doing tomorrow? ## Schedule Day 2 * 08:50 - 09:00 (10 min) Soft start and icebreaker question * 09:00 - 09:10 (10 min) Recap and Q&A from day 1 * 09:10 - 12:30 [Introduction to version control (part 2/2)](https://coderefinery.github.io/git-intro/) - 09:10 - 09:20 (10 min) [Diana Sharing repositories online - teaching/type-along](https://coderefinery.github.io/git-intro/remotes/#sharing-repositories-online) - 09:20 - 09:40 (20 min) Diana Exercise: [Pushing our guacamole recipe repository to GitHub](https://coderefinery.github.io/git-intro/remotes/#pushing-our-guacamole-recipe-repository-to-github) - 09:40 - 09:55 (15 min) [Bjørn Inspecting history - teaching/type-along](https://coderefinery.github.io/git-intro/archaeology/#inspecting-history) - 09:55 - 10:10 :coffee: :walking: :tea: Break - 10:10 - 10:40 (30 min) [Bjørn Inspecting history - breakout room exercises](https://coderefinery.github.io/git-intro/archaeology/#exercise-basic-archaeology-commands) 1. [Basic archeology commands](https://coderefinery.github.io/git-intro/archaeology/#exercise-basic-archaeology-commands) 2. [Optional: Git bisect](https://coderefinery.github.io/git-intro/archaeology/#optional-exercise-git-bisect) - to be done if time allows - 10:40 - 10:50 (10 min) Bjørn Summarize inspecting history - 10:50 - 11:05 (15 min) [Bjørn Undoing and recovering - teaching/type-along](https://coderefinery.github.io/git-intro/recovering/#undoing-and-recovering) - 11:05 - 11:15 :coffee: :walking: :tea: Break - 11:15 - 11:35 (20 min) [Bjørn Undoing and recovering - exercises](https://coderefinery.github.io/git-intro/recovering/#exercise-revert-a-commit) 1. [Revert a commit](https://coderefinery.github.io/git-intro/recovering/#exercise-revert-a-commit) 2. [Modify a previous commit](https://coderefinery.github.io/git-intro/recovering/#exercise-modify-a-previous-commit) 3. [Git reset](https://coderefinery.github.io/git-intro/recovering/#exercise-git-reset) - 11:35 - 11:50 (15 min) Bjørn Summarize undoing and recovering and discussion and mention that staging area exists - 11:50 - 12:00 :coffee: :walking: :tea: Break - 12:00 - 12:25 (25 min) [Diana How much Git is necessary?](https://coderefinery.github.io/git-intro/level/#practical-advice-how-much-git-is-necessary) - 12:25 - 12:30 (05 min) Diana Feedback & What will we be doing tomorrow? ## Schedule Day 3 * 08:50 - 09:00 Soft start and icebreaker question * 09:00 - 09:15 Recap Git, any Hackmd questions to highlight - 09:15 - 09:30 Concepts around collaboration (Radovan leads) 1. Explain terms. Pull, push, clone, fork. Focus on pull and not fetch. 2. Focus more on Clone and less on Generating from templates and importing - 09:30 - 11:10 Centralized workflow + a break (Dhanya leads) - 9:30 - 9:45 : Explain concepts. - 9:45 - 9:55 break - 9:55 - 10:00 Inform clearly what is expected outcome. - 10:00 - 10:30 Excercise - 10:30 - 10:50 Instructors go through the exercise - 10:50 - 11:00 - break - 11:00 - 12:10 Distributed version control and forking workflow + one breake (Radovan leads) - 11:00 - 11:15 - Concepts and what are exercise outcomes - 11:15 - 11:45 - Exercise - 11:45 - 12:00 - Instructors go through excercises - 12:00 - 12:10 - break - 12:10 - 12:30 - How to contribute changes to somebody else’s project and Q&A (Radovan leads) ## Schedule Day 4 * 08:50 - 09:00 Soft start and icebreaker question * 09:00 - 09:10 Interview with an expert * 09:10 - 11:15 [Reproducible research](https://coderefinery.github.io/reproducible-research/) - 09:10 - 09:20 [Motivation](https://coderefinery.github.io/reproducible-research/motivation/) - 09:20 - 09:30 [Organizing your projects](https://coderefinery.github.io/reproducible-research/organizing-projects/) - 09:30 - 10:00 [Recording dependencies](https://coderefinery.github.io/reproducible-research/dependencies/) - discussion (5 min) - [exercise (20 min)](https://coderefinery.github.io/documentation/writing-readme-files/#exercises) - discussion (5 min) - 10:00 - 10:10 Break - 10:10 - 10:40 [Recording computational steps](https://coderefinery.github.io/reproducible-research/workflow-management/) - discussion (5 min) - [exercise (20 min)](https://coderefinery.github.io/reproducible-research/workflow-management/#exercise-using-snakemake) - discussion (5 min) - 10:40 - 10:50 [Recording environments](https://coderefinery.github.io/reproducible-research/environments/) - 10:50 - 11:05 [Sharing code and data](https://coderefinery.github.io/reproducible-research/sharing/) - [demo (15 min)](https://coderefinery.github.io/reproducible-research/sharing/#connecting-repositories-to-zenodo) - 11:05 - 11:15 Break * 11:15 - 12:30 [Social coding](https://coderefinery.github.io/social-coding/) - 11:15 - 11:30 [Social coding (15 min)](https://coderefinery.github.io/social-coding/social-coding/) - 11:30 - 12:00 [Licensing (30 min)](https://coderefinery.github.io/social-coding/licensing/) - 12:00 - 12:15 [Software citation (15 min)](https://coderefinery.github.io/social-coding/software-citation/) - 12:15 - 12:25 (10 min) Buffer, Q&A session - 12:25 - 12:30 (5 min) Feedback & What will we be doing tomorrow? ## Schedule Day 5 * 09:00 - 10:45 [Jupyter](https://coderefinery.github.io/jupyter/) - 09:00 - 09:10 [Jupyter notebooks](https://coderefinery.github.io/jupyter/motivation/) - 09:10 - 09:25 [JupyterLab and notebook interface](https://coderefinery.github.io/jupyter/interface/) - 09:25 - 09:50 [A first computational notebook](https://coderefinery.github.io/jupyter/first-notebook/) - intro to the exercise (5 min) - [breakout room exercise (20 min)](https://coderefinery.github.io/jupyter/sharing/) - 09:50 - 10:00 [Notebooks and version control demo, 10-15 min](https://coderefinery.github.io/jupyter/version-control/) - 10:00 - 10:10 Break - 10:10 - 10:35 [Sharing notebooks](https://coderefinery.github.io/jupyter/sharing/) - [Binder Breakout room exercise (20 min)](https://coderefinery.github.io/jupyter/sharing/#sharing-dynamic-notebooks-on-binder) - 10:35 - 10:40 Wrap-up - 10:40 - 10:45 buffer * 10:45 - 12:30 [Documentation](https://coderefinery.github.io/documentation/) - 10:45 - 10:55 [Motivation and tools](https://coderefinery.github.io/documentation/wishlist/) - create a wishlist in HackMD - 10:55 - 11:05 Break - 11:00 - 11:20 [Writing good README files](https://coderefinery.github.io/documentation/writing-readme-files/#writing-good-readme-files) - brief discussion - [15 minutes for exercises](https://coderefinery.github.io/documentation/writing-readme-files/#exercises), choosing either 1, 2 or 3 (or do multiple of time allows) - brief discussion - 11:20 - 12:00 [Sphinx and markdown](https://coderefinery.github.io/documentation/sphinx/) - discussion (5 min) - [Exercise 1 as type along (10 min)](https://coderefinery.github.io/documentation/sphinx/#exercise-sphinx-basics) - [Exercise 2, exercise 3 if time allows (20 min)](https://coderefinery.github.io/documentation/sphinx/#exercise-sphinx-content) - Discussion, going over exercise (5 min) - 12:00 - 12:10 Break - 12:10 - 12:25 [Deploying Sphinx documentation to GitHub Pages](https://coderefinery.github.io/documentation/gh_workflow/#deploying-sphinx-documentation-to-github-pages) - [Exercise 1 as demo](https://coderefinery.github.io/documentation/gh_workflow/#exercise-deploy-sphinx-documentation-to-github-pages) - 12:25 - 12:30 [Summary](https://coderefinery.github.io/documentation/summary/) ## Schedule Day 6 **Day 6** * 8:50 - 9:00 Getting started * 9:00 - 10:45 [Software testing](https://coderefinery.github.io/testing/) - 9:00-9:05 Short info about today's exercise sessions and possible questions from yesterday - 9:05-9:10 [Motivation](https://coderefinery.github.io/testing/motivation/) - 9:10-9:20 [Concepts](https://coderefinery.github.io/testing/concepts/) - 9:20-9:45 [Testing locally](https://coderefinery.github.io/testing/pytest/) - 5 minutes talking - 15 minute exercises - 5 going over exercises and discussion - 9:45-9:55 Break - 9:55-10:20 [Automated testing](https://coderefinery.github.io/testing/continuous-integration/) - type-along session - 10:20-10:45 [Test design](https://coderefinery.github.io/testing/test-design/) - discussion: 5 minutes - Exercises: 10 minutes. Any of exercises Design-1 to Design-8 that learners want to do. - discussion and type-along of advanced exercises: 10 minutes - 10:45-11:00 Break * 11:00 - 12:15 [Modular coding](https://coderefinery.github.io/modular-type-along/) * 12:15 - 12:30 [Concluding remarks and where to go from here](https://github.com/coderefinery/workshop-outro/blob/master/README.md) - and more: https://coderefinery.github.io/2023-03-21-workshop/join/#accessibility ## Lessons learned / new ideas - More modular lessons -> easier to plan / collate a lesson for live workshop - Lesson Index for self-learning lesson + index for workshop - Or more explicitly separate the extra stuff on each lesson material - We could shorten streamed lectures by moving exercises to the end. I.e. longer exercises would benefit in onsite rooms. - We could have a demo exercise (or some) that people can test before the workshop - "If you feel comfortable with this you'r gonna be fine during the workshop" - Possible formats - weekly, bi-weekly, ... - academic course - https://hands-on.coderefinery.org - "weekly" sessions and when a student has enough attendances they get credits - videos + flipped learning - 1 day / lesson