Lessons, Labs, and Projects for COMP 215 Intro. to Computational Science at Capilano University
Starter notebooks for lab assignments
In-class lessons, exercises, and reference material.
Weekly notebooks are used during class to structure discussion, answer questions,
and to demonstrate or test ideas that arose during class in a given week.
Students should have a copy open and follow along during class.
foundations : reference notebooks that review and demonstrate fundamental python programming concepts, algorithms, and data structures covered in the weekly lessons
concepts : notebooks that explore the scientific concepts and models covered in the weekly lessons
algorithms : reference notebooks that develop & present re-usable algorithms and/or data structures that are re-used in the lessons, labs, or projects.
Sample solutions completed in class and lab.
This folder is for the instructor to post solutions.
Modifying or saving files to this folder can cause "merge conflicts" - please don't.
These instructions are for Course Instructors, not students. Student Instructions are detailed in Lab 1
Problem : retain term history in repo, ideally a branch for each semester.
- keep it as simple as possible for students: reduce chance of mistakes; avoid merge conflicts
- simplest for all if everyone just works in
defaultbranch
Ideal Solution
: use "release branch" strategy for term archive; with "feature branch" named main for student work.
- Collab always shows
mainas default branch (or alphabetical), regardless of actual default set in GH - Students less likely to lose changes during fork sync if working in a different branch
- develop courseware, fix bugs in
templatebranch (master branch for repo) - each term, create
semesterbranch (named for semester; set to default branch on GitHub) - when students fork repo, they create a
mainbranch and make this their default branch on GitHub. - students work in their
main/default"feature branch". - students can sync fork any time without conflicts; use a pull-request to merge changes into
main
Process
- start of term:
- create a
semesterbranch fromtemplate(git checkout -b 202x.01 template;git push origin 202x.01) - make the
202x.01branch thedefaulton GH (project settings) - consider removing any
solutionsfrom previous term's branch to a private local branch
- create a
- student fork; create
mainbranch; set it todefault; work inmainbranch for production (current term):- students open lab assignments, exercises, and examples from
main
- students open lab assignments, exercises, and examples from
- updating courseware during term:
- fix bugs, enhancements, new lessons, etc. in
templatebranch - advanced students can also make PR's to
templatebranch - merge bug fixes back to
semesterbranch only for notebooks not yet modified by students - instructor posts completed workbooks and sample solutions to
solutionsfolder insemesterbranch - students should always be able to sync / update
semesterbranch without conflict - students can use a pull-request to merge changes from
semesterbranch tomainin controlled way
- fix bugs, enhancements, new lessons, etc. in
- end of term:
- merge any changes you want to keep from
semesterbranch back intotemplatebranch
- merge any changes you want to keep from
Simple Solution : use "release branch" strategy; work in "semester" release branch each term.
- develop courseware, fix bugs in
mainbranch - students work in
semesterbranch, which isdefaultbranch and copy ofmainmade at start of term. - post solutions and completed workbooks in
instructorfolder ofsemesterbranch
Process
- start of term:
- create a
semesterbranch from main (git checkout -b 2024-Spr main;git push origin 2024-Spr) - make the semester branch the
defaulton GH - consider removing any solutions from previous term's branch to a private local branch
- create a
- work in
semesterbranch for production (current term):- students open lab assignments, exercises, and examples from
semester - instructor posts completed workbooks and sample solutions to
instructorfolder onsemesterbranch - careful not to update any notebooks in
semeseterbranch that might create merge conflicts for students
- students open lab assignments, exercises, and examples from
- updating courseware during term:
- fix bugs, enhancements, new lessons, etc. in
mainbranch - advanced students can also make PR's to
mainbranch - merge bug fixes back to
semesterbranch only for notebooks not yet modified by students - students should always be able to update
semesterbranch without conflict
- fix bugs, enhancements, new lessons, etc. in
- end of term:
- merge any changes you want to keep from
semesterbranch back intomainbranch
- merge any changes you want to keep from