sje30 / catam-julia Goto Github PK
View Code? Open in Web Editor NEWCATAM material in Julia
Home Page: http://sje30.github.io/catam-julia
License: MIT License
CATAM material in Julia
Home Page: http://sje30.github.io/catam-julia
License: MIT License
@jmb280cam in the section "Learning Julia and its advantages"
with the bullet points to references, could you add the following two points somewhere
The Computational Thinking course at MIT provides an excellent set of videos to introduce julia to those new to programming. https://computationalthinking.mit.edu/
the Julia Express https://github.com/bkamins/The-Julia-Express/ is a useful reference guide to the core features of Julia.
hi @jmb280cam
here is a list of ideas for improvements from Gokul @srgk26
1 how automatic differentiation works (not just how it's implemented, as in the video by Alan Edelman)
2 types and type stability; also highlight difference between type annotation and type stability (the former does not improve
performance)
3 refer to blog for type stability in julia: https://www.juliabloggers.com/writing-type-stable-julia-code/
4 using @code_warntype on function calls to check for type stability
5 custom typing with struct
6 multiple dispatch
7 highlight performance tips page in docs: https://docs.julialang.org/en/v1/manual/performance-tips/
8 using maths macros @simd, @fastmath, @inbounds to further improve performance (not always, can reduce performance -
case-by-case basis)
9 good idea to introduce docker as well
10 tutorial for common tools and packages in julia ecosystem (dataframes, plotting, flux, differentialequations, etc.)
11 note that julia is column-major, so iterate through rows before columns in matrices, for example:
m = rand(2,3)
@inbounds @views for j in 1:size(m,2)
for i in 1:size(m,1)
m[i,j] = m[i,j]*(i+j)
end
end
some of these could be in the intro, some (like types) would be better off in a case study.
CC: @Nick-Gale for info
I've changed the format of the readme.md for the Permutations case study, see here. I thought it would be better to have all of the links relating to the project in one place so that students could get all of the files without having to go through GitHub.
Any thoughts on this or other changes that should be made @sje30 @valentin-imbach? I'll look to change the rest of them later to match after your feedback.
How about using the preferred method for documenting functions?
https://docs.julialang.org/en/v1/manual/documentation/
e.g. "..." or """....multieline""" before the function?
hi @jmb280cam I think there is a typo in the intro doc; seperate should be separate
hi @jmb280cam
the section https://sje30.github.io/catam-julia/casestudies/voronoi/voronoidiagrams.html#5619eeaa-d0ae-4752-987a-abc6b9236725 would be easier to understand I think with a figure to help demonstrate how your algortihm works? Could you sketch one? (either just in a png or using Plots() to draw it.)
fonsp/Pluto.jl#1309 (comment) is a temporary fix
(adding the html block) to work around the scrollbars on the right of paragraphs that have mathml on the last line of the paragraph.
Please can one of you check to see if that works? @valentin-imbach @jmb280cam
I've started working on a Voronoi diagram case study, but I'm not sure how I could turn it from a computationally heavy task into one with a mathematical purpose. Does anyone know of an application / problem that can be solved which I could incorporate?
Some of these may be fun to convert to Julia,
fonsp/Pluto.jl#1314 shows that we can edit the .jl file.
compiling it on the go using: Pluto
there is already a python package to do what we discussed @valentin-imbach @jmb280cam
https://github.com/LeviBorodenko/primify
this prime drawing looks nice, but perhaps we can use Julia to do it a bit smarter /more efficient than what can be done in Python?
https://github.com/LeviBorodenko/primify
https://esoteric.codes/blog/primify
or, synthesising an image from some text (like a CRSid) and then finding the prime? as I said, it might be fun for outreach days, when young kids can come along and get their name converted into a prime number!
hi @jmb280cam the SIR model looks great. just one minor suggestion right now, red/green/blue is not a good combination -- 7% of males are r/g colorblind. can you try another triplet of colors? If short of ideas, colorbrewer.org is good, e.g. https://colorbrewer2.org/#type=qualitative&scheme=Dark2&n=3
Hamza has suggested prioritising the following three folders:
"interp", "ode" and "lu_fac"
from
https://www.damtp.cam.ac.uk/user/naweb/ib/
access to matlab might be needed to check what the GUI in these folders is doing, and how we might best circumvent a GUI.
Here are some options for formats that case studies can be written in;
Whether we choose between them on a case (study) by case (study) basis or pick one or two to use for everything I don't know. We should probably also create quick templates/style guides for those that we will use for consistency
Having pluto code run in mybinder is great, but how is support for pluto in cocalc?
this thread seems relevant:
We can get a licence for cocalc if that is helpful to explore.
perhaps we need to have a section on 'introspection' to show how to examiner objects and methods?
e.g. for starters, @edit(sin(1.0))
to show the code for how the sin of a double precision number is stored
and something like this for understanding different types of Integers
x = 64
typeof(x)
bitstring(x)
y = Int8(x)
bitstring(y)
with floats we could do it after describing the representation https://en.wikipedia.org/wiki/Single-precision_floating-point_format but that's also feasible.
random walks looks great @jmb280cam
I tried to run it via mybinder though and got error
ArgumentError: Package Plots not found in current path:
it has presumably not loaded any of the packages in mybinder to run? is it because the files are split?
hi @jmb280cam
please can you upload the introduction.jl (and perhaps the html output from pluto) into the intro/ folder here on github?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.