FYSS5120 Efficient Numerical Programming

Hi, I'm Vesa Apaja, and I'll be lecturing this course starting 3. September 2024. My office is in JYU Nanoscience Center YN223, and my email is vesa.apaja at jyu.fi
I'm a Linux guy with very limited experience on Microsoft or Apple products (historical reason, I didn't have any money when I got to this business). I've taken a couple of courses on C++ (ancient C++, before there was any standard), none on Python or Julia. Given the circumstances, I had to self-learn programming. Some think I did learn something, so the first programming language I was teaching was C, following the legendary The C programming language by Dennis Ritchie and Brian Kernighan. Despite of little or no tutoring, during the past 30+ years I've written way too many lines of code.

These lectures and demos are intended to give you enough confidence to use Python, Julia or C++ in the challenges you face during your studies and ever after. Learning programming is not much different to learning a spoken language: start programming and make mistakes. Fortunately, it's very hard to upset a computer.

This course covers only programming numerics. The attribute "efficient" was added for sales purposes by someone else. People used to call numerics "number crunching", but we've come to value also the human time spent in coding - mainly because coders are well paid. So I've been told. Fast coding is were Python excels. Sometimes you need to spend hours to push your code to the speed that will quarantee some output in a reasonable time. C++ stands in that corner. Julia is somewhere in between.

If I could learn programming, so can you.
Welcome!

Structure

Requirements

Material

Extra material