Conducting computer exploration
A great reference: François Bergeron's talk Mathématiques Expérimentales
Two key recommendations:
Seek Beauty and Surprise
Interact with the computer in your own language
Correctness, Reproducibility, Reusability
A great reference: Mike Croucher's talk: Is Your Research Software Correct
Croucher's Law: I am an idiot, and I will make mistakes
We all do.
How hard does it affect us?
What can we do about it?
Document our experiments
What was the goal?
The hypothesis to be tested?
What was the process?
What artefacts were used?
(software stack, … )
What was our interpretation?
Maintain a laboratory notebook!
To enable:
retrieving what was tried, when, what was the outcome
checking the process: is it really doing what we meant?
reproducing the process: is it still the same outcome?
reusing the artefacts for related experiments
sharing it with others!
How to write great lab notebooks?
Automate
Ideal description of the process:
Results = MyAnalysis (Data )
where MyAnalysis
:
reveals the business logic
hides the technical details
Use literate computing
Write the notebook as a narrative text mixing prose and computation.
Jupyter notebooks
Rich text files (Markdown, org-mode, RST)
Code file with documentation strings
Code snippets in your LaTeX file
…
Desirable features :
easy to read
easy to reexecute
easy to version control
easy to test
easy to share
standard
Interact with the computer in your own language
The logic should be easy to read by the casual scientist in your field, with no special preparation
Express what you compute rather than how
E.g. comprehensions rather than loops
Model the business objects
E.g. with Object Oriented Programming
Model the business processes
E.g. with functions
Write code in a high level language
Separate lab notebook and code
In the lab notebook: the bare necessary to document the process
Every other bit of code: as reusable functions/class, in separate files
Rationale:
Easier to reuse
Easier to document
Easier to test
Easier to version control
Get some training!
Learn basic computer science skills:
Publish your code and logbooks!
Provide or document all artefacts:
Personal code
Software stack
Data
Use open source software / open data
Instant bonus : reproducibility with Binder!
References about computational logbooks in Sciences
Computational maths tends to be a bit different, with less reliance on data
Nevertheless much of the analysis and tips in the following pages remains relevant up to adaption:
Watch for your health!
Watch your back!
Watch your wrists!
Watch your eyes!
Watch your ears!
Get some sleep!
Resume presentation
Some best practices for computer exploration July 9th of 2019 Free and Practical Software for Algebraic Combinatorics 2019 this document as slides
{"metaMigratedAt":"2023-06-14T20:09:31.679Z","metaMigratedFrom":"YAML","title":"Some best practices for computer exploration","breaks":false,"slideOptions":"{\"theme\":\"white\",\"width\":\"95%\",\"height\":\"100%\",\"margin\":0,\"minScale\":1,\"maxScale\":1,\"centered\":false,\"slideNumber\":true}","contributors":"[{\"id\":\"08b05c93-6479-4fa6-bfe4-8ecd5db39db4\",\"add\":11401,\"del\":7026}]"}