Git Product home page Git Product logo

scientificcomputingfortherestofus's Introduction

Scientific Computing (for the rest of us)

One specific challenge, when writing code as a scientist, is that we care a lot about getting the right answer; but of course, the right answer is not always obvious. So we should be very careful with the code we write. A piece of code that crashes is annoying; but a piece of code that runs, and give you the wrong answer can compromise your science and your career. This guide will help you adopt practices that make it less likely to introduce mistakes in your code, and more likely to catch them. Hopefully, this will let all of us write code we can trust more.

GitHub top language GitHub code size in bytes

GitHub GitHub Repo stars GitHub commit activity GitHub contributors

GitHub Release Date GitHub Workflow Status (branch)

GitHub issues GitHub pull requests GitHub closed issues GitHub closed pull requests

Good principles in scientific computing can help you write code that is easier to maintain, easier to reproduce, and easier to debug. But it can be difficult to find an introduction to get you started. The goal of this project is to get you started on the most important points. You can use these lessons on your own, or as a group.

This material is aimed at people who have already interacted with a computer using a programming language (we use Julia, but the code is meant to be fairly general), but want to adopt best practices that make their code more robust. It can also be used to facilitate the onboarding of new people in your lab or your project.

scientificcomputingfortherestofus's People

Contributors

francisbanville avatar gabrieldansereau avatar gitter-badger avatar graciellehigino avatar khinsen avatar notzaki avatar tpoisot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

scientificcomputingfortherestofus's Issues

binder link/badge

I didn't see a binder badge in the README, we should fix that.

Not really a Julia expert but from what I can tell you have a REQUIRE file so this should just build on binder now right?

Update the doi url

Currently using DX.doi, using DOI alone should work - the place to do this is bibrender.jl at the root of the project.

Order of execution

Order of execution can change the result -- should be more explicit in the document.

Link Checker Report

Summary

Status Count
๐Ÿ” Total 480
โœ… Successful 474
โณ Timeouts 0
๐Ÿ”€ Redirected 0
๐Ÿ‘ป Excluded 0
โ“ Unknown 0
๐Ÿšซ Errors 6

Errors per input

Errors in applications/naive-bayes-classifier/index.html

Errors in readinglist/index.html

Errors in introduction/preparing-a-project/index.html

Full Github Actions output

ML modules

Pinging @FrancisBanville @gabrieldansereau and @graciellehigino (also @aammd)

I've added a content/machinelearning folder to store the material for the DataTrek modules - let's brainstorm in the comments, and I'll add a list to this issue

module write review packages data source
NBC @tpoisot Distributions seeds
Probabilistic programming @aammd Turing
Data ecosystem DataFrames
My first neural network Flux ? seeds

Script for the demo

Max 10 minutes

  • intro to the project

...

  • how to get notebooks linked on juliabox

...

  • how to give feedback

...

  • content overview

...

Link Checker Report

Summary

Status Count
๐Ÿ” Total 544
โœ… Successful 539
โณ Timeouts 0
๐Ÿ”€ Redirected 0
๐Ÿ‘ป Excluded 1
โ“ Unknown 0
๐Ÿšซ Errors 4

Errors per input

Errors in introduction/pseudo-code/index.html

Errors in readinglist/index.html

Errors in applications/naive-bayes-classifier/index.html

Errors in introduction/preparing-a-project/index.html

Full Github Actions output

Logo?

I would like to have a cool logo for the project, if possible one that would fit on an hex sticker.
I am willing to pay for the design.

Readme 404 link

The link on readme.md is 404:
[ways to improve user confidence in your software](https://queens.scholarsportal.info/ojs-archive/index.php/IEE/article/download/5644/5463)

How to use this material?

Hi,
coming from this post
Thanks for generating introductory material!
I did not get from the Readme or perusing the material how to use it, where to start.

Thx!

ROADMAP

September

  • README update
  • Draft the roadmap and tag @philippbayer
  • Community guidelines (#3)
  • Figure out the mechanisms for contribution (CONTRIBUTING)

October

  • Script for the demo Wed. 12 (#5)
  • Lesson 1 (Introduction to notebooks)
  • Ease of use of JuliaBox (#2)
  • Keep notebooks tidy on github (#4)
  • Ask feedback from targeted people

November

December

  • Lesson 2 - flow
  • Lesson 3 - modular code

January

  • Use the lessons in the classroom (BIO6032)

February

  • Open issues with needed edits
  • Reality-check the estimated times
  • Re-word objectives using Bloom's taxonomy (#14)

May

  • Use the revised lessons during the summer school (BIO6035)

June

  • Lesson 4 - testing
  • Lesson 5 - debugging

July

  • Capstone - break, next, continue
  • Capstone - map, filter, reduce
  • Capstone - parallel computing

Reorganize the second dispatch module

This should be about dealing with values of fields, since the logic of dispatch based on types combinations was in the rock paper scissors example - a good example for this is to create a niche model of food web?

Link Checker Report

Summary

Status Count
๐Ÿ” Total 555
โœ… Successful 544
โณ Timeouts 0
๐Ÿ”€ Redirected 0
๐Ÿ‘ป Excluded 0
โ“ Unknown 0
๐Ÿšซ Errors 11

Errors per input

Errors in readinglist/index.html

Errors in index.html

Errors in files/working-with-delimited-files/index.html

Errors in introduction/environment-and-projects/index.html

Errors in about/index.html

Errors in introduction/pseudo-code/index.html

Errors in applications/naive-bayes-classifier/index.html

Errors in introduction/installing-julia/index.html

Errors in files/downloading-files/index.html

Errors in introduction/preparing-a-project/index.html

Errors in introduction/flowcharts/index.html

Full Github Actions output

What's the intended audience?

The introduction (README.md) decribes the goals of this lecture material, but without stating who the intended audience is. The overall impression it leaves is "this is a good starting point for anyone doing scientific computing, except for those who need high-performance computing". However, it is probably unrealistic for any concrete down-to-earth material to address the needs of such a wide audience. Notebooks, for example, are great for some scientific applications but a bad match for others. More generally, any tool might be inappropriate simply because many people are constrained in their software choice by the habits of their field. Readers should know from the start that the material might not be right for them, and that it's not their fault (or stupidity) if things don't work out for them.

Mozfest!

During the Mozfest session, we brainstormed two questions. The setting was:

Scientific research is increasingly reliant on software -- the results we publish are as good as the code we write to generate them. But very few researchers are trained as software engineers. What do we teach these people so that they can write code that we all can trust?

  1. How do we know if code can be trusted?
  2. What should we tell new members of a group, lab, team, or teach beginners?

Below are transcripts of the discussions. We used a world-cafรฉ method, with three groups.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.