Scientific Computing


Source files

The source files are available at github:

Target audience

  • Advanced undergraduate and graduate students

Course material & assessment

  • Lecture material is distributed via this web site and the course discussion board is at Discord.

  • Assignments are distributed via the Discord channel.

  • The course material is divided into modules each focusing on a specific topic.

Special notes about lecture material

  • This site is updated continuously. New material is being added as we progress and typos (sigh!) will be corrected.

  • When reading the files, please notice that there tabs and dropdowns that have more information and/or, code snippets or/and operating system specific installation instructions.

  • These pages also support hypothes.is annotations (the little arrow at the top right hand corner). Using hypothes.is allows you annotate the text, make notes etc. The annotations and notes can be private, public or visible to a group (the course in this case; let me know if you want to join the group). This is entirely optional so try it out and see if you like it. The service requires registration but it is free.

  • Please also notice that

    • you can save all the material as PDF (or even .md) using the icons at the top of each page.

    • At the top right hand corner there are top special icons: one for highlighting and the other for annotating. Use them, they are very helpful.

  • Not all the lecture material and video are of equal length in time, this concerns videos in particular. In most of them, you need to perform actions on your computer as indicated and while the video may seem quick, it takes time to perform all the actions and you should do them.

Learning outcomes

After successful completion of this course, the student should have the skills and knowledge to

  • Understand the practical and theoretical challenges related to scientific computing.

  • Understand the basic aspects of high-performance computing.

  • Understand the foundations of the main methods and approaches in scientific computing.

  • Possess hands-on practical skills of data analysis, visualization and error tracing.

  • Be able to assess, interpret and understand the correctness of code.

  • Perform hands-on data analysis and use different visualization methods.

  • Be able to assess reliability and errors in simulations.

  • Have an understanding of the current developments in the field.

  • It is important to have an overview of the different operating systems. Thus, independent of what is your favourite and what you use, the notes will provide you with an understanding of the differences - it is strongly recommended to take a look at the different installation procedures.

One the main aims is that the students will gain a good overview of different methods and approaches in computational modeling, and the ability choose a proper method for the problem at hand.

As a practical outcome, the students will learn the need for different operating systems and command interfaces, and how to do practical operations using the command line interface, installation of software, compilation of source codes and how to resolve problems when they arise.

Hands-on approach

  • This course uses a hands-on approach: You will write scripts and short programs, analyze data and learn methods.

  • Python will be used for most analyses. No prior knowledge of Python or other programming is expected.

Computers

This is a hands-on course and requires programming. This means that you must have a computer and the ability to install software on it. Any reasonably modern (past 7 years or so) laptop/desktop with Windows 10, Linux or MacOS should be ok. Detailed instructions will be provided during the lectures / labs. The methods have been tested using both older (7-10 old laptops) and newer computers. Please notice that since operating systems are updates continuously, you should pay special attention to updates and changes.

  • The examples and tasks have been tested on Linux, Windows and Intel-based Macs using both older and newer computers.

  • Due to no access to Apple M1-based systems, none of the examples have been tested on them.

Important

Some tasks can be CPU (or even GPU) intensive. To avoid overheating, thermal shutdown or, in the worst case, damage to your computer, always ensure that the ventilation openings are not covered. This is of utmost importance and the responsibility is solely yours.

Important

Before any large scale installations, such creating dual boot systems, please ensure that you have backed up your system. This is critical. If something goes wrong in such a process, there is no way of recovering data. There are many ways to do backups, for example, external hard drives and cloud storage. Choose your method and use it - every computer will eventually have a disastrous crash, the only question is when. Second, if/when you update your computer, having regular and well-planned backup system will make the transition very easy and smooth.

Software

Primary software that will be used (we will work through the installation procedures during the course):

  • For plotting, data analysis, and machine learning: Python and Jupyter Lab / Notebook.

  • C/C++ compiler.

  • Some others as well.