Welcome to Scientific Computing using Python - 1. Python + Scientific Computing

NB This course is one out of two alternates to follow the basic course in Scientific Computing using Python. Link to the other basic course: https://phd.moodle.aau.dk/course/view.php?id=1123

Description: Many research projects involve scientific computing for analyzing [big] data and/or simulating complex systems. This makes itnecessary to have a systematic approach to obtaining well-tested and documented code. Further, we see an increased interest in reproducibleresearch, which allows other researchers the opportunity to dig further into others research results as well as easy access to results and improvingproductivity by reusing code and software.

This is an introductory course in scientific computing using the increasingly popular programming language Python. Python is gaining popularity inscience due to a number of advantages such as having a rich set of libraries for computing and data visualization, excellent performance optimizingpossibilities, standard tools for simple parallel computing, fast development cycle and high productivity – just to name a few. Python is open sourceand as such an asset for any researcher following the reproducible research paradigm.
The course covers two main areas: i) The Python programming language itself and ii)various aspects of scientific computing. This specific coursecontent is as follows:

The Python language:

1. Course introduction
- Historical overview of scientific computing and high performance computing

2. Python development environment
- Python from above
- Datatypes, built-in functions
- Branching and looping
- Functions (definition, built-in, lambda)
- Module and packages

3. Debugging and testing
- Unittest
- Doctest
- Pdb (breapoints and post-mortem)

4. Basic scientific computing packages
- Numpy (numerical computing - array based - vectorization)
- Scipy (vaious tools for integration, optimization, etc.)
- Matplotlib (data visualization)
- H5py (data storage/access via HDF)
- Documentation using Sphinx

Scientific computing:

1. Basic issues related to computation sciences such as
- Floating-point representation
- Numerical accuracy and condition number
- Cancellation
- Algorithmic complexity

2. Scientific software Development
- Version control (via git)
- Code documentation
- Test procedures (what to test - and how)
- Code refactoring

Audience: The targeted audience is mainly engineers or similar with an interest in developing robust, portable and high quality code for variousscientific computing purposes. By this we mean code to solve actual problems where [lots of] floating-point computations are needed. It is not acourse in object-oriented programming and we apply a procedural approach to programming in the course.

Prerequisites: Participants must have some basic experience in code development in e.g. MATLAB, C or FORTRAN. Further, some basic skills ingeneral use of a computer are expected. The tools applied work best using Linux or Mac OSX – Microsoft Windows may experience challenges whenusing parallel computing (but this should not be a problem for this part of the course).

Learning objectives: After completing the course the participants will:
1. have fundamental knowledge of important aspects of scientific computing
2. be able to map a mathematically formulated algorithm to Python code
3. know how to document, debug and test the developed code.
4. know when and how to optimize Python code

Teaching methods: A combination of lectures, demonstrating examples using iPython notebooks, smaller exercises and a mini-project is used tofacilitate learning. The course is rich in examples and active user participation is expected to facilitate learning – the topics covered demand a“learning by doing” approach.

Criteria for assessment: A standard mini-project must be delivered (4-8 pages) in addition to the developed code. The code must includetesting/validation, and performance evaluation. An acceptable mini-project and at-least 75% participation is required to pass the course.

Key literature: We expect to use a combination of the following:
1.Selection of a few chapters in Python books (specified at a later stage)
2.References to Python and all relevant packages (freely available via http://python.org)
3.A number of scientific papers relevant for specific parts of the course.

Organizer and lecturer: Associate Professor Thomas Arildsen, e-mail: tha@es.aau.dk, Department of Electronic Systems

ECTS: 2.5

Time: 12-14 November 2019, from 8:30-15:30

Place: Fredrik Bajers Vej 7B, room 2-109

Zip code: 9220

City: Aalborg Øst

Number of seats: 25 (the course is fully booked. If you wish to be registered on a waiting list, please send an email to Sofie Pia Jensen, spj@adm.aau.dk)

Deadline: 22 October 2019

Important information concerning PhD courses: We have over some time experienced problems with no-show for both project and general courses. It has now reached a point where we are forced to take action. Therefore, the Doctoral School has decided to introduce a no-show fee of DKK 5,000for each course where the student does not show up. Cancellations are accepted no later than 2 weeks before start of the course. Registered illnessis of course an acceptable reason for not showing up on those days. Furthermore, all courses open for registration approximately three monthsbefore start. This can hopefully also provide new students a chance to register for courses during the year. We look forward to your registrations.

Teacher: Thomas Arildsen