From 34e3a153a7eda7eef89da520b174546a5536c27c Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Fri, 2 Dec 2022 20:40:52 -0700 Subject: [PATCH] Add to the resources for programmers mentioned in step-1. --- doc/doxygen/references.bib | 22 ++++++++++++++++++++++ examples/step-1/doc/intro.dox | 19 ++++++++++++++++--- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/doc/doxygen/references.bib b/doc/doxygen/references.bib index 550aafab7c..4e381b41c5 100644 --- a/doc/doxygen/references.bib +++ b/doc/doxygen/references.bib @@ -1717,6 +1717,28 @@ numpages = {15} edition = {second} } +@book{Refactoring, + author = {Martin Fowler}, + title = {Refactoring: Improving the Design of Existing Code}, + publisher = {Addison-Wesley}, + year = {2018}, + edition = {second} +} + +@article{Comellas_2023, + doi = {10.1016/j.euromechsol.2022.104845}, + url = {https://doi.org/10.1016/j.euromechsol.2022.104845}, + year = 2023, + month = {jan}, + publisher = {Elsevier {BV}}, + volume = {97}, + pages = {104845}, + author = {E. Comellas and J.-P. Pelteret and W. Bangerth}, + title = {I'm stuck! How to efficiently debug computational solid mechanics models so you can enjoy the beauty of simulations}, + journal = {European Journal of Mechanics - A/Solids} +} + + @article{gottlieb2001strong, author = {S. Gottlieb and C.-W. Shu and E. Tadmor}, title = {Strong stability-preserving high-order time discretization methods}, diff --git a/examples/step-1/doc/intro.dox b/examples/step-1/doc/intro.dox index 42a52dff36..ead99932b8 100644 --- a/examples/step-1/doc/intro.dox +++ b/examples/step-1/doc/intro.dox @@ -172,7 +172,7 @@ with code written by others, that you may have to think about documenting your own code because you may not remember what exactly it is doing a year down the road (or because others will be using it as well), or coming up with ways to test that your program is doing the right thing. None of this is something -that we typically train mathematicians, engineers, or scientists in but that +that we typically train mathematicians, engineers, or scientists to do but that is important when you start writing software of more than a few hundred lines. Remember: Producing software is not the same as just writing code. @@ -187,12 +187,17 @@ are worthwhile browsing through before you start any large-scale programming: - You will benefit from becoming a better programmer. An excellent resource to this end is the book - [Code Complete](https://en.wikipedia.org/wiki/Code_Complete) + [Code Complete](https://www.oreilly.com/library/view/code-complete-2nd/0735619670/) by Steve McConnell @cite CodeComplete . It's already a few years old, with the last edition published in 2004, but it has lost none of its appeal as a guide to good programming practices, and some of the principal developers use it as a group reading - project with every generation of their research group members. + project with every generation of their research group members. Another + good programming book is + [Refactoring: Improving the Design of Existing Code](https://martinfowler.com/books/refactoring.html) + by Martin Fowler that is a great introduction and resource for how + to continuously transform existing code to make it fit for future + extension @cite Refactoring . - The Software Carpentry project that provides introductions to many topics that are important to dealing @@ -210,6 +215,14 @@ are worthwhile browsing through before you start any large-scale programming: that site are recorded tutorials and webinars that cover many interesting topics. +- An article a few of us wrote, called I'm stuck! + How to efficiently debug computational solid mechanics models so you + can enjoy the beauty of simulations @cite Comellas_2023 . + This article discusses in + great detail what you do if a code doesn't work. It is also + available on arXiv. + - An article on Best Practices for Scientific Computing that gives an introduction to many of the ways by which you can make sure you are an efficient -- 2.39.5