casimir_programming_course issueshttps://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues2022-10-31T22:08:58Zhttps://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/48task in day4 structuring_python_code2022-10-31T22:08:58ZJuan Torrestask in day4 structuring_python_code[Here](https://gitlab.kwant-project.org/pc/casimir_programming_course/-/blob/master/day4/structuring_python_code.ipynb) there is a task that says:
> ## Task: what distinguishes good software project from a bad one?
> 1. ???
> 2. ???
> Bo...[Here](https://gitlab.kwant-project.org/pc/casimir_programming_course/-/blob/master/day4/structuring_python_code.ipynb) there is a task that says:
> ## Task: what distinguishes good software project from a bad one?
> 1. ???
> 2. ???
> Bonus question: how to learn about structuring your code?
This makes sense in a live course, but doesn't apply when I read it on my own.
Also, no exercises about the notebook content.https://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/47Day 1 afternoon: include explanation about `cat`2022-10-31T09:08:07ZJuan TorresDay 1 afternoon: include explanation about `cat`In the [notebook](https://gitlab.kwant-project.org/pc/casimir_programming_course/-/blob/master/day1_afternoon/unix-shell.ipynb) about unix shell there is no explanation of how to use `cat` to view the content of a file.
This command is u...In the [notebook](https://gitlab.kwant-project.org/pc/casimir_programming_course/-/blob/master/day1_afternoon/unix-shell.ipynb) about unix shell there is no explanation of how to use `cat` to view the content of a file.
This command is used only once in the advanced topics sections, however it is a simple command that can be helpful to use.
I propose to add a sentence mentioning it such as: If one wants to check the content of a file within the CLI, one can do `cat draft.txt`.https://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/46Debrief notes 20192019-11-19T13:54:46ZAnton AkhmerovDebrief notes 2019We should open issues based on some of these.
- Check that accessing student servers as admins work
- Check that autocomplete is not janky :|
- Jupytext was awesome, let's focus more on it.
- Use cell collapse for hiding solutions every...We should open issues based on some of these.
- Check that accessing student servers as admins work
- Check that autocomplete is not janky :|
- Jupytext was awesome, let's focus more on it.
- Use cell collapse for hiding solutions everywhere
- WTF is with servers dying and 503ing on people?
- Labeling food (the quality was pretty good otherwise)
- Enforce teams for projects
- Move shell to Tuesday afternoon (splitting scientific Python into 2 parts)
- OOP: not sure what to do about it
- Remove the mention of `global` statement, but explain modifying mutable globals/defaults
- nbgitpuller is pretty good, but would be nice to integrate with the lab
- post-its vs online stuff (menti/queue)—what's the optimal combination?
- Ensure that course announcement is updated with no gardwarehttps://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/45Make it clear if people should try to follow along, or should just listen and...2019-11-06T11:06:00ZJoseph WestonMake it clear if people should try to follow along, or should just listen and do it on their own afterwardsMy feeling is that people will try to follow along anyway, so we should explicitly say that this is the expectation. Give people the time to do this and have instructors moving around the room helping people.My feeling is that people will try to follow along anyway, so we should explicitly say that this is the expectation. Give people the time to do this and have instructors moving around the room helping people.https://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/44Do not go into depth about SSH2019-11-06T10:56:50ZJoseph WestonDo not go into depth about SSHWe can literally just say:
> Uploading the contents of this file to GitHub allows GitHub to identify this machine with your user accountWe can literally just say:
> Uploading the contents of this file to GitHub allows GitHub to identify this machine with your user accounthttps://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/43do not start explaining the intricacies of github before we even explain the ...2019-11-06T10:54:23ZJoseph Westondo not start explaining the intricacies of github before we even explain the relevant git conceptshttps://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/42Do not say that git is centralized2019-11-06T10:48:23ZJoseph WestonDo not say that git is centralizedthis is formally not truethis is formally not truehttps://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/41Do not say "git saves only the changes"2019-11-06T10:44:58ZJoseph WestonDo not say "git saves only the changes"this is formally incorrect. When a change is made to a file, *git stores a whole new copy of the file*. It does *not* just "store the diffs".
I think this can be improved by just not saying anything about git only saving the changes.
I...this is formally incorrect. When a change is made to a file, *git stores a whole new copy of the file*. It does *not* just "store the diffs".
I think this can be improved by just not saying anything about git only saving the changes.
It *is* however correct that git will not save new copies of files that have not changed.https://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/40Feedback 20182019-11-06T09:10:14ZBas NijholtFeedback 2018# Feedback day 1
## Suggestions
- Breaks
- coffee
- Split the course
- solutions
- More optional exercises
- announce the program
- group by skill
- preparation material
- references for more
## bad
- lunch
- too slow/basic (8x)
- too mu...# Feedback day 1
## Suggestions
- Breaks
- coffee
- Split the course
- solutions
- More optional exercises
- announce the program
- group by skill
- preparation material
- references for more
## bad
- lunch
- too slow/basic (8x)
- too much time for short exercises
- too much stuff in 1 day (3x)
## good
- post-its
- everything good (≥10x)
- organization
- a lot of instructors/enthusiastic
- materials
- github app or whatever
# Feedback day 2
## Suggestions
- where can I find the permanent course material repository
- a rough course schedule would be nice to have
- it would be great to know in advance when you have how much time to explore problens to thing about what might be useful to program
- do lectures together
- can you also recommend if homebrew is a good package installer instead of pip/anaconda
- you might have gotton different search results @ the problem solving because you use a different pc... google searcg history&co (big brother is taking care of you)
- live programming can be a bit distractive
- encourage people to compare their solutions
- tell more about the pythonic way of programming and about code efficiency
- lunch still has room for improvement
- maybe include some easier smaller tasks for people struggling with the more compelx tasks some cleare exercises with plotting
- upload the course materials 1 day before
- cut the numpy lecture into parts with exercises for each part (rather than all exercises at once)
## Bad
- 5 people said pace is too fast
- 3 people said the sessions are too overloadad
- exercise session was too long and exhausting
- examples were hard to understand
- 2 people said lectures too long; more time for exercises
## Good
- 4 people liked exercises
- 8 (1 of which also liked the execises) people are happy in general
- 1 person was explicitely happy with the fact we are taking action on their comments
- 6 people are happy with the instructors
- 2 people happy with the problem solving lecture
- lunch
- thanks for providing solutions
- good tempo
- clear explanation of how to avoid writing inefficient code
# Feedback day 3
## Good
- Nice selection of projects
- good
- git (x8)
- instructors (x2)
- own time to try things out (x2)
## Bad
- No systematic explanation
- Disconnected from shell
## Suggestions
- More systematic git (x3)
- More time for small exercises
- Make slower demonstrations
- Only now usefulness of shell is clear
- Installation instructions
# Feedback day 4
## Good
- Amazing!
- Quick and good advice (2x)
- The project helps to motivate people (2x)
## Bad
- No exercises for the structure part makes it hard
- Doing the projects requires knowledge that is not in the course
## Suggestions
- More exercises
- More concrete tips to make the code more readable and structured (2x)
- Moning was a bit too abstract
- Would like to learn debugginghttps://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/39switch "solutions" in notebooks to use jupyter notebook native "cell collapse...2019-11-06T09:06:10ZJoseph Westonswitch "solutions" in notebooks to use jupyter notebook native "cell collapse" rather than "collapsible headings"collapsible headings is rather slow, and just "hiding all the solutions" can be accomplished using the built-in cell collapsecollapsible headings is rather slow, and just "hiding all the solutions" can be accomplished using the built-in cell collapsehttps://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/38ensure that all materials use cell collapse rather than HTML/JS collapse2019-11-06T09:03:07ZJoseph Westonensure that all materials use cell collapse rather than HTML/JS collapse`data-toggle=collapse` is a bootstrap thing, and bootstrap is no longer included`data-toggle=collapse` is a bootstrap thing, and bootstrap is no longer includedhttps://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/37Mention you can ask questions on StackOverflow2019-11-06T09:13:54ZAndré MeloMention you can ask questions on StackOverflowIn the "Problem solving with Python" lecture I think it would be a good idea to mention that you can ask your question on StackOverflow as a last resort. No need to go into the details, just say it's a possibility.In the "Problem solving with Python" lecture I think it would be a good idea to mention that you can ask your question on StackOverflow as a last resort. No need to go into the details, just say it's a possibility.https://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/35Feedback 20192019-11-08T16:20:46ZBas NijholtFeedback 2019# Day 1 - Feedback
Good:
- Right pace (8x)
- Clear explanation (6x)
- Good structure (5x)
- Fun exercises (3x)
- Really liked it (2x)
- Good engagement
- Jupyter environment
- Right amount of theory / exercises
- Valuable insights how t...# Day 1 - Feedback
Good:
- Right pace (8x)
- Clear explanation (6x)
- Good structure (5x)
- Fun exercises (3x)
- Really liked it (2x)
- Good engagement
- Jupyter environment
- Right amount of theory / exercises
- Valuable insights how to use shell
- Nice instructors
- All good
- Nice to work ahead, exercises were self explanatory
Suggestions:
- The end was too fast (5x)
- More time on difficult topics (2x)
- More advanced concepts
- More breaks
- Shell part about files and directories can be clearer
Bad:
- The end was too fast (4x)
- High temperature / low oxygen (3x)
- The link to the "camarasaurus" is broken on the Naturalis website
- Some solutions were too quick
- Too much time on exercises
https://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/34switch to using [menti](https://www.menti.com/) instead of green postits2019-11-04T18:35:20ZJoseph Westonswitch to using [menti](https://www.menti.com/) instead of green postitspeople forget to take the postits off and put them up when they're finishedpeople forget to take the postits off and put them up when they're finishedhttps://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/32Tidy up directory structure2019-11-01T18:36:03ZJoseph WestonTidy up directory structuree.g.:
+ cython_example/
+ Data_Peakfinder
+ Performance_and_Profiling.ipynb
+ exercises/
+ hdf5/
+ projects.ipynb
+ VirtualMultimeter_code_onserver.txt
It's really not clear what these files/directories are all about; they're not assoc...e.g.:
+ cython_example/
+ Data_Peakfinder
+ Performance_and_Profiling.ipynb
+ exercises/
+ hdf5/
+ projects.ipynb
+ VirtualMultimeter_code_onserver.txt
It's really not clear what these files/directories are all about; they're not associated with the easy-to-follow "day1" "day2" structure of the rest of the materials2019https://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/24Improve materials on testing and test driven development2018-09-17T15:30:29ZAdriaanImprove materials on testing and test driven developmentThis is a summary of the discussion we (@anton\-akhmerov @jbweston and me) had over lunch.
The goal is to teach the students the benefit of tests and how to use tests in their daily work. The ideas described below are heavily inspired ...This is a summary of the discussion we (@anton\-akhmerov @jbweston and me) had over lunch.
The goal is to teach the students the benefit of tests and how to use tests in their daily work. The ideas described below are heavily inspired by the improvements we did to the Git materials last year.
The idea is to create the following scripted events to let the students experience first the problem that is solved by tests and then how to use these properly.
- The student works in a damped harmonic oscillator lab and has access to a Git repository containing basic analysis code (data extraction, fitting, plotting).
- The student get's an angry email from Prof. Smith that they should not send him data containing fits that are obviously wrong. The email contains an attached image of a some data (amplitude vs time) of a damped oscillation with a fit in red that is obviously not matching together with a pointer to the analysis notebook.
- The problem is constructed to correspond to a hardcoded bug in the analysis code. This can be either in the guess function corresponding to the fit (hardcoded zero phase for the damped cosine) or in the model that is used, this is a detail that needs to be worked out. The most obvious solution to this problem is to fix this hardcoded feature and replace it with the value that is needed. We need to think a bit in how we can ensure that the student will indeed implement a solution that breaks the old code.
- At this point an angry email by senior PhD student Mike is send to the students (possibly projected on the beamer), in which the senior student complains about this "fix" breaking all his advanced analysis. It is now the job of the student to fix this. Senior PhD student Mike attaches a notebook containing his (dirty) code that is now borken.
- The student should first go back to the old version of the code to verify that the notebook of Mike is working (refer Git)
- The student will now need to investigate what is b0rk3n and how to fix it. At this point the student is introduced to the idea of writing a (passing) test for his own functionality and another (failing) test for the code of Mike. How to run tests using py.test (pytest) should also be explained at this point.
- After writing the tests the problem can be addressed and changes can be made in the knowledge that the old functionality is not broken.
- After completion it is possible to show (but not set up for this exercise as this is out of scope?) the possibility of running tests online and getting automated notifications when someone breaks tests.
This is a good point to have a general discussion on how to use tests in your lab/group and how to include this in collaborative work. Using tests in the advanced projects that follow should be encouraged.
@anton\-akhmerov @jbweston
Let me know if this corresponds to what we discussed during lunch and if you have any more ideas, comments questions and/or suggestions .AdriaanAdriaanhttps://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/232017 debrief2017-11-22T11:45:29ZAnton Akhmerov2017 debriefIdeas:
* To get more systematic feedback, solicit it during the course.
* Plan for a better wrap-up, select the most successful participants to present. Maybe also engage the participants by asking them to present at the end of each day...Ideas:
* To get more systematic feedback, solicit it during the course.
* Plan for a better wrap-up, select the most successful participants to present. Maybe also engage the participants by asking them to present at the end of each day.
* Review timing and contents of shell
- Piping has questionable usefulness within the course. Potentially make these an advanced exercise
- Maybe move tab and history earlier
* Consider making the advanced projects a single shared theme of the last days.
* Add exercises to follow during the lectures (with 15 minutes lectures followed by a short exercise)
* Consider adding advanced git topics:
- branches are a popular request
- we don't touch checkout, but we probably should (what about detached head?)
- .gitignore
- CI
* Code structure: add an exercise for refactoring; where to find such "dirty code"?
* Move OOP to the driver, make driver a refactoring exercise as well, guide people better through interaction with hardware.
* Invite people to come up in advance with a project topic from their own research (explain the context)
* Give more information to the course description and the signup formhttps://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/22Add license information2019-11-01T19:33:36ZAnton AkhmerovAdd license information20192019-11-04https://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/20Reorganization of the code formatting2019-11-01T18:23:04ZAnton AkhmerovReorganization of the code formattingAs a basis we could use a poorly formatted bit of code, that we would incrementally refactor to follow best practices.As a basis we could use a poorly formatted bit of code, that we would incrementally refactor to follow best practices.20192019-11-07https://gitlab.kwant-project.org/pc/casimir_programming_course/-/issues/19clarify why importing scipy is not enough to have scipy.linalg2017-11-08T12:50:01ZRafal Skolasinskiclarify why importing scipy is not enough to have scipy.linalgA lot of students where asking why importing ``scipy`` doesn't automatically imports ``scipy.linalg``.
We could include that information in the lecture notebook.A lot of students where asking why importing ``scipy`` doesn't automatically imports ``scipy.linalg``.
We could include that information in the lecture notebook.