|
| https://shrra.github.io/python-intermediate-development/index.html |
| Home | https://shrra.github.io/python-intermediate-development/index.html |
| Code of Conduct | https://shrra.github.io/python-intermediate-development/CODE_OF_CONDUCT.html |
| Setup | https://shrra.github.io/python-intermediate-development/setup.html |
| Episodes | https://shrra.github.io/python-intermediate-development/ |
| Setting the Scene | https://shrra.github.io/python-intermediate-development/00-setting-the-scene/index.html |
| Section 1: Setting Up Environment For Collaborative Code Development | https://shrra.github.io/python-intermediate-development/10-section1-intro/index.html |
| Introduction to Our Software Project | https://shrra.github.io/python-intermediate-development/11-software-project/index.html |
| Virtual Environments For Software Development | https://shrra.github.io/python-intermediate-development/12-virtual-environments/index.html |
| Integrated Software Development Environments | https://shrra.github.io/python-intermediate-development/13-ides/index.html |
| Best practices for Jupyter | https://shrra.github.io/python-intermediate-development/14-jup-best-practices/index.html |
| Collaborative Software Development Using Git and GitHub | https://shrra.github.io/python-intermediate-development/15-collaboration-using-git/index.html |
| Python Code Style Conventions | https://shrra.github.io/python-intermediate-development/16-coding-conventions/index.html |
| Verifying Code Style Using Linters | https://shrra.github.io/python-intermediate-development/17-verifying-code-style-linters/index.html |
| Section 2: Ensuring Correctness of Software at Scale | https://shrra.github.io/python-intermediate-development/20-section2-intro/index.html |
| Automatically Testing Software | https://shrra.github.io/python-intermediate-development/21-automatically-testing-software/index.html |
| Scaling Up Unit Testing | https://shrra.github.io/python-intermediate-development/22-scaling-up-unit-testing/index.html |
| Github Issues and Collaborative Development | https://shrra.github.io/python-intermediate-development/23-github-issues/index.html |
| Continuous Integration for Automated Testing | https://shrra.github.io/python-intermediate-development/24-continuous-integration-automated-testing/index.html |
| Issue Diagnostics with a Debugger and Other Tools | https://shrra.github.io/python-intermediate-development/25-diagnosing-issues-improving-robustness/index.html |
| Section 3: Software Development as a Process | https://shrra.github.io/python-intermediate-development/30-section3-intro/index.html |
| Programming Paradigms | https://shrra.github.io/python-intermediate-development/31-programming-paradigms/index.html |
| Functional Programming | https://shrra.github.io/python-intermediate-development/32-functional-programming/index.html |
| Object Oriented Programming | https://shrra.github.io/python-intermediate-development/33-object-oriented-programming/index.html |
| Software Requirements | https://shrra.github.io/python-intermediate-development/34-software-requirements/index.html |
| Software Architecture and Design | https://shrra.github.io/python-intermediate-development/35-software-design/index.html |
| Architecture Revisited: Adding a .py Controller | https://shrra.github.io/python-intermediate-development/36-architecture-revisited/index.html |
| Section 4: Collaborative Software Development for Reuse | https://shrra.github.io/python-intermediate-development/40-section4-intro/index.html |
| Developing Software In a Team: Code Review | https://shrra.github.io/python-intermediate-development/41-code-review/index.html |
| Preparing Software for Reuse and Release | https://shrra.github.io/python-intermediate-development/42-software-reuse/index.html |
| Packaging Code for Release and Distribution | https://shrra.github.io/python-intermediate-development/43-software-release/index.html |
| Wrap-up | https://shrra.github.io/python-intermediate-development/50-wrap-up/index.html |
| All in one page (Beta) | https://shrra.github.io/python-intermediate-development/aio/index.html |
| Extras | https://shrra.github.io/python-intermediate-development/ |
| Reference | https://shrra.github.io/python-intermediate-development/reference.html |
| About | https://shrra.github.io/python-intermediate-development/about/index.html |
| Additional Material: Git Intro | https://shrra.github.io/python-intermediate-development/git-intro/index.html |
| Figures | https://shrra.github.io/python-intermediate-development/figures/index.html |
| Instructor Notes | https://shrra.github.io/python-intermediate-development/guide/index.html |
| Common Issues, Fixes & Tips | https://shrra.github.io/python-intermediate-development/common-issues/index.html |
| https://shrra.github.io/python-intermediate-development |
| Additional Material: Protecting the Main Branch on a Shared GitHub Repository | https://shrra.github.io/python-intermediate-development/protect-main-branch/index.html |
| https://shrra.github.io/python-intermediate-development |
| Software Documentation using Sphinx | https://shrra.github.io/python-intermediate-development/44-software-documentation/index.html |
| Using LINCC Framework project template | https://shrra.github.io/python-intermediate-development/45-lincc-project-template/index.html |
| Quiz | https://shrra.github.io/python-intermediate-development/quiz/index.html |
| License | https://shrra.github.io/python-intermediate-development/LICENSE.html |
| Improve this page | https://github.com/ShrRa/python-intermediate-development/edit/gh-pages/aio.md |
|
The Carpentries Incubator | https://github.com/carpentries-incubator/proposals/#the-carpentries-incubator |
| Intermediate Python for Astronomical Software Development | https://shrra.github.io/python-intermediate-development/index.html |
| novice Software Carpentry course | https://software-carpentry.org/lessons/ |
| Section 1: Setting up Software Environment | https://shrra.github.io/python-intermediate-development/10-section1-intro/index.html |
| Section 2: Verifying Software Correctness at Scale | https://shrra.github.io/python-intermediate-development/20-section2-intro/index.html |
| Section 3: Software Development as a Process | https://shrra.github.io/python-intermediate-development/30-section3-intro/index.html |
| Section 4: Collaborative Software Development for Reuse | https://shrra.github.io/python-intermediate-development/40-section4-intro/index.html |
| Section 5: Managing and Improving Software Over Its Lifetime | https://shrra.github.io/python-intermediate-development/50-section5-intro/index.html |
| beginning of the lesson | https://shrra.github.io/python-intermediate-development/index.html#prerequisites |
| quiz | https://shrra.github.io/python-intermediate-development/quiz/index.html |
| setup and installed | https://shrra.github.io/python-intermediate-development/setup.html |
| common issues, fixes & tips | https://shrra.github.io/python-intermediate-development/common-issues/index.html |
| open an issue | https://github.com/ShrRa/python-intermediate-development/issues/new |
| setup and installed | https://shrra.github.io/python-intermediate-development/setup.html |
| common issues, fixes & tips | https://shrra.github.io/python-intermediate-development/common-issues/index.html |
| command line | https://en.wikipedia.org/wiki/Shell_(computing) |
| venv | https://docs.python.org/3/library/venv.html |
| pip | https://pip.pypa.io/en/stable/ |
| see the solution to this issue | https://shrra.github.io/python-intermediate-development/common-issues/index.html#python-hangs-in-git-bash |
| PEP8 | https://www.python.org/dev/peps/pep-0008/ |
| Jupyter Lab | https://jupyter.org/install |
| here | https://carpentries-incubator.github.io/python-intermediate-development/ |
| Git | https://git-scm.com/ |
| GitHub | https://github.com/ |
| light curve analysis project | https://github.com/ShrRa/InterPython_Workshop_Example |
| Setup | https://shrra.github.io/python-intermediate-development/setup.html#secure-access-to-github-using-git-from-command-line |
| software project repository | https://github.com/ShrRa/InterPython_Workshop_Example |
| Model–View–Controller (MVC) architecture | https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller |
| Service-oriented architecture (SOA) | https://en.wikipedia.org/wiki/Service-oriented_architecture |
| Client-server architecture | https://en.wikipedia.org/wiki/Client%E2%80%93server_model |
| Multilayer architecture | https://en.wikipedia.org/wiki/Multitier_architecture |
| DNA Guide Graphical User Interface application | https://www.software.ac.uk/developing-scientific-applications-using-model-view-controller-approach |
| article on MVC from CodeAcademy | https://www.codecademy.com/articles/mvc |
| software’s requirements | https://shrra.github.io/python-intermediate-development/31-software-requirements/index.html |
| software design | https://shrra.github.io/python-intermediate-development/32-software-design/index.html |
| IDE Jupyter Lab | https://jupyter.org/ |
| Python Package Index (PyPI) | https://pypi.org/ |
| more in-depth analysis | https://jakevdp.github.io/blog/2016/08/25/conda-myths-and-misconceptions/ |
| XKCD | https://xkcd.com/1987/ |
| The Hitchhiker’s Guide to Python | https://docs.python-guide.org/dev/virtualenvs/ |
| The Python Documentation | https://docs.python.org/3/library/venv.html |
| “venv” vs “.venv” discussion | https://discuss.python.org/t/trying-to-come-up-with-a-default-directory-name-for-virtual-environments/3750 |
| official Pip documentation | https://pip.pypa.io/en/stable/user_guide/#running-pip |
| more detailed explanation | https://snarky.ca/why-you-should-use-python-m-pip/ |
| official venv documentation | https://docs.python.org/3/library/venv.html |
| Installing Python Modules with pip guide | https://docs.python.org/3/installing/index.html#installing-index |
| “Installing packages using pip and virtual environments” | https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/#installing-packages-using-pip-and-virtual-environments |
| Python Project Wiki | https://wiki.python.org/moin/IntegratedDevelopmentEnvironments |
| Jupyter Lab | https://jupyter.org/install |
| Jupyter Lab interface | https://jupyterlab.readthedocs.io/en/stable/user/interface.html |
| jupyterlab-search-replace | https://github.com/jupyterlab-contrib/search-replace |
| cheat sheet | https://www.kaggle.com/code/cuecacuela/the-ultimate-markdown-cheat-sheet |
| nbdime | https://nbdime.readthedocs.io/en/latest/ |
| jupyterlab-git | https://github.com/jupyterlab/jupyterlab-git |
| strengthened authentication requirements for Git operations | https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ |
| set up and use a personal access token | https://catalyst.zoho.com/help/tutorials/githubbot/generate-access-token.html |
| W3Docs | https://www.w3docs.com/learn-git/git-repository.html |
| Git Tutorial by sillevl | https://sillevl.gitbooks.io/git/content/collaboration/workflows/gitflow/ |
| lightweight, movable pointers to commits | https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell |
| visual simulator | https://learngitbranching.js.org/ |
| Martin Fowler | https://en.wikiquote.org/wiki/Martin_Fowler |
| PEP 8 | https://www.python.org/dev/peps/pep-0008/ |
| key insights from Guido van Rossum | https://www.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds |
| episode on Jupyter Lab IDE | https://shrra.github.io/python-intermediate-development/13-ides/index.html |
| PEP 8 website | https://www.python.org/dev/peps/pep-0008/ |
| PEP 8 guideline on indentation | https://www.python.org/dev/peps/pep-0008/#indentation |
| this discussion | https://stackoverflow.com/q/15438326 |
| PEP8 | https://www.python.org/dev/peps/pep-0008/ |
| naming functions, modules, classes and variables | https://www.python.org/dev/peps/pep-0008/#package-and-module-names |
| ‘Putting comments in code: the good, the bad, and the ugly’ blogpost | https://www.freecodecamp.org/news/code-comments-the-good-the-bad-and-the-ugly-be9cc65fbf83/ |
| Sphynx/ReadTheDocs docstring style | https://sphinx-rtd-tutorial.readthedocs.io/en/latest/docstrings.html |
| PEP 257 | https://peps.python.org/pep-0257/ |
| Python documentation | https://docs.python.org/3.8/library/index.html |
| code linters | https://en.wikipedia.org/wiki/Lint_%28software%29 |
| nbQA | https://github.com/nbQA-dev/nbQA |
| Fowler, Martin (1999). Refactoring. Improving the Design of Existing Code. Addison-Wesley. ISBN 0-201-48567-2 | https://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672/ |
| black | https://black.readthedocs.io/en/stable/ |
| Code Formatter extension | https://github.com/ryantam626/jupyterlab_code_formatter |
| “Diagnosing Issues and Improving Robustness” | https://shrra.github.io/python-intermediate-development/24-diagnosing-issues-improving-robustness/index.html |
| lightcurve analysis software project | https://shrra.github.io/python-intermediate-development/11-software-project/index.html#light-curve-analysis-project |
| the corresponding section | https://shrra.github.io/python-intermediate-development/14-jup-best-practices/index.html |
| unittest | https://docs.python.org/3/library/unittest.html |
| pytest has many distinct advantages | https://realpython.com/pytest-python-testing/#what-makes-pytest-so-useful |
| various methods | https://stackoverflow.com/questions/71297697/modulenotfounderror-when-running-a-simple-pytest |
| Python decorator | https://www.programiz.com/python-programming/decorator |
| previous episode | https://shrra.github.io/python-intermediate-development/21-automatically-testing-software/index.html#what-is-software-testing |
| default labels available in GitHub | https://docs.github.com/en/issues/using-labels-and-milestones-to-track-work/managing-labels |
| write your own | https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository |
| notifications system | https://docs.github.com/en/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications |
| GitHub Actions | https://github.com/features/actions |
| YAML | https://www.commonwl.org/user_guide/yaml/ |
| GitHub Marketplace | https://docs.github.com/en/developers/github-marketplace/github-marketplace-overview |
| pdb | https://docs.python.org/3/library/pdb.html |
| ValueError | https://docs.python.org/3/library/exceptions.html#ValueError |
| isinstance | https://docs.python.org/3/library/functions.html#isinstance |
| TypeError | https://docs.python.org/3/library/exceptions.html#TypeError |
| this article | https://pythonspeed.com/articles/pylint/ |
| empirical software engineering studies | https://web.archive.org/web/20160731150816/http://superwebdeveloper.com/2009/11/25/the-incredible-rate-of-diminishing-returns-of-fixing-software-bugs/ |
| extension of the Imperative family of languages | https://www.digitalocean.com/community/tutorials/functional-imperative-object-oriented-programming-comparison |
| others disagree | https://stackoverflow.com/questions/38527078/what-is-the-difference-between-imperative-and-object-oriented-programming |
| Pandas | https://pandas.pydata.org/ |
| programming paradigms | https://en.wikipedia.org/wiki/Programming_paradigm |
| mathematical definition of a function | https://en.wikipedia.org/wiki/Function_(mathematics) |
| Pandas library | https://pandas.pydata.org/ |
| Spark | https://en.wikipedia.org/wiki/Apache_Spark |
| Hadoop | https://hadoop.apache.org/ |
| iterable objects | https://www.w3schools.com/python/python_iterators.asp |
| episode on parametrising our unit tests | https://shrra.github.io/python-intermediate-development/22-scaling-up-unit-testing/index.html#parameterising-our-unit-tests |
| time.process_time_ns() | https://docs.python.org/3/library/time.html#time.process_time_ns |
| classmethod | https://docs.python.org/3/library/functions.html#classmethod |
| staticmethod | https://docs.python.org/3/library/functions.html#staticmethod |
| Special Method Names | https://docs.python.org/3/reference/datamodel.html#special-method-names |
| chirp | https://www.ligo.org/science/GW-Inspiral.php |
| Python Design Patterns guide | https://python-patterns.guide/gang-of-four/composition-over-inheritance/ |
| ‘A Pattern Language’ by Christopher Alexander et al. | https://en.wikipedia.org/wiki/A_Pattern_Language |
| Refactoring Guru | https://refactoring.guru/design-patterns |
| Data Product Definition Document | https://docushare.lsst.org/docushare/dsweb/Get/LSE-163 |
| UML | https://en.wikipedia.org/wiki/Unified_Modeling_Language |
| this link | https://drive.google.com/file/d/1Q_VySs4baVcmtWCHnCfa9ILvuuBindpE/view?usp=sharing |
| IEEE recommendations | https://ieeexplore.ieee.org/document/278253 |
| Intent HG blog | https://intenthq.com/blog/it-audience/what-is-good-code-a-scientific-definition/ |
| XKCD comic | https://xkcd.com/844/ |
| ‘bottom-up design’ | https://en.wikipedia.org/wiki/Bottom%E2%80%93up_and_top%E2%80%93down_design#Software_development |
| Model-View-Presenter | https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter |
| Model-View-Viewmodel | https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel |
| argparse | https://docs.python.org/3/library/argparse.html |
| Python module documentation | https://docs.python.org/3/library/argparse.html?highlight=argparse#module-argparse |
| Click’s documentation | https://click.palletsprojects.com/ |
| protecting the main branch | https://shrra.github.io/python-intermediate-development/protect-main-branch |
| code inspection technique | https://en.wikipedia.org/wiki/Fagan_inspection |
| Fagan, 1976 | https://doi.org/10.1147%2Fsj.153.0182 |
| Over-the-shoulder code review | https://about.gitlab.com/topics/version-control/what-is-code-review/#Over-the-shoulder%20reviews |
| Pair programming | https://about.gitlab.com/topics/version-control/what-is-code-review/#Pair%20programming |
| Formal code inspection | https://en.wikipedia.org/wiki/Fagan_inspection |
| Tool assisted code review | https://about.gitlab.com/topics/version-control/what-is-code-review/#Tool-assisted%20reviews |
| “Five Types of Review” section | https://www.khoury.northeastern.edu/home/lieber/courses/cs4500/f07/lectures/code-review-types.pdf |
| “Best Kept Secrets of Peer Code Review” eBook | https://www.yumpu.com/en/document/view/19324443/best-kept-secrets-of-peer-code-review-pdf-smartbear |
| solution requirements from the last exercise in the OOP episode | https://shrra.github.io/python-intermediate-development/35-object-oriented-programming/index.html#exercise-a-survey-class |
| Git Tutorial by sillevl | https://sillevl.gitbooks.io/git/content/collaboration/workflows/gitflow/ |
| collaborator permissions for personal repositories | https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/permission-levels-for-a-user-account-repository |
| more granular access control | https://docs.github.com/en/get-started/learning-about-github/access-permissions-on-github |
| black box | https://en.wikipedia.org/wiki/Black-box_testing |
|
Swarmia | https://www.swarmia.com/blog/a-complete-guide-to-code-reviews/?utm_term=code%20review&utm_campaign=Code+review+best+practices&utm_source=adwords&utm_medium=ppc&hsa_acc=6644081770&hsa_cam=14940336179&hsa_grp=131344939434&hsa_ad=552679672005&hsa_src=g&hsa_tgt=kwd-17740433&hsa_kw=code%20review&hsa_mt=b&hsa_net=adwords&hsa_ver=3&gclid=Cj0KCQiAw9qOBhC-ARIsAG-rdn7_nhMMyE7aeSzosRRqZ52vafBOyMrpL4Ypru0PHWK4Rl8QLIhkeA0aAsxqEALw_wcB |
| Smartbear | https://smartbear.com/learn/code-review/best-practices-for-peer-code-review/ |
| “Best Kept Secrets of Peer Code Review” (Cohen, 2006) | https://www.amazon.co.uk/Best-Kept-Secrets-Peer-Review/dp/1599160676 |
| Studies into code review | https://smartbear.com/resources/ebooks/the-state-of-code-review-2020-report/ |
| studies | https://jserd.springeropen.com/articles/10.1186/s40411-018-0058-0 |
| Google recommendations | https://google.github.io/eng-practices/review/developer/small-cls.html |
| Benureau and Rougler in 2017 | https://dx.doi.org/10.3389/fninf.2017.00069 |
| guide to writing Markdown | https://guides.github.com/features/mastering-markdown/ |
| guide on naming projects | https://software.ac.uk/resources/guides/choosing-project-and-product-names |
| CITATION text file | https://github.com/citation-file-format/citation-file-format |
| Matias Singer’s curated list of awesome READMEs | https://github.com/matiassingers/awesome-readme |
| blog post on best practices for research software documentation | https://www.software.ac.uk/blog/2019-06-21-what-are-best-practices-research-software-documentation |
| website Choose A License | https://choosealicense.com/ |
| Choose An Open-Source Licence | https://choosealicense.com/ |
| tl;dr Legal | https://tldrlegal.com/ |
| Semantic Versioning | https://semver.org/ |
| GDPR | https://ec.europa.eu/info/law/law-topic/data-protection/eu-data-protection-rules_en |
| Poetry installation instructions | https://python-poetry.org/docs/#installation |
| PEP 518 (Specifying Minimum Build System Requirements for Python Projects) | https://www.python.org/dev/peps/pep-0518/ |
| the Poetry docs on packages | https://python-poetry.org/docs/pyproject/#packages |
| SemVer | https://semver.org/ |
| SemVer | https://semver.org/ |
| Poetry CLI documentation | https://python-poetry.org/docs/cli/ |
| Python docs on packaging | https://packaging.python.org/en/latest/ |
| packaging process, or ‘flow’ | https://packaging.python.org/en/latest/flow/ |
| Twine | https://pypi.org/project/twine/ |
| Python Packaging User Guide | https://packaging.python.org/ |
| how to package a project | https://packaging.python.org/en/latest/tutorials/packaging-projects/ |
| section on metadata | https://packaging.python.org/en/latest/tutorials/packaging-projects/#configuring-metadata |
| further reading | https://shrra.github.io/python-intermediate-development/aio/#further-resources |
| template table | https://docs.google.com/document/d/1NdE6PjqxjSsf1K4ofkCoWc2GA3sY2RIsjRg8BghTXas/edit?usp=sharing |
| concept map | https://en.wikipedia.org/wiki/Concept_map |
| Additional episode on persisting data | https://shrra.github.io/python-intermediate-development/persistence |
| Additional episode on databases | https://shrra.github.io/python-intermediate-development/databases |
| CodeRefinery courses on FAIR
(Findable, Accessible, Interoperable, and Reusable)
software practices | https://coderefinery.org/lessons/ |
| Python documentation | https://docs.python.org/3/ |
| GitHub Actions documentation | https://docs.github.com/en/actions |
| CC-BY 4.0 | https://creativecommons.org/licenses/by/4.0/ |
| the authors | https://shrra.github.io/python-intermediate-development/CITATION |
| Edit on GitHub | https://github.com/ShrRa/python-intermediate-development/edit/gh-pages/aio.md |
| Contributing | https://github.com/ShrRa/python-intermediate-development/blob/gh-pages/CONTRIBUTING.md |
| Source | https://github.com/ShrRa/python-intermediate-development/ |
| Cite | https://github.com/ShrRa/python-intermediate-development/blob/gh-pages/CITATION |
| The Carpentries theme | https://github.com/carpentries/carpentries-theme/ |