Study Programmes 2016-2017
SPAT0002-1  
Programming techniques, numerical methods and machine learning
Duration :
10h Th, 20h Pr
Number of credits :
Master in space sciences (120 ECTS)3
Lecturer :
Benoît Bovy, Dominique Sluse
Coordinator :
Benoît Bovy
Language(s) of instruction :
English language
Organisation and examination :
Teaching in the second semester
Units courses prerequisite and corequisite :
Prerequisite or corequisite units are presented within each program
Learning unit contents :
This course constitutes a practical introduction to numerical methods commonly used in astrophysics and space sciences. Moreover, it provides a practical overview of some development tools that are very useful to implement or integrate those methods, and that also may help scientists to achieve their common tasks. 
The course is divided into two main parts:


  • The section "Programming" presents an overview of development tools (Shell, IDE, language types and usage, system versioning control of type git), some concepts of open source development and an introduction to Python language and its main scientific libraries (Numpy / Scipy / Matplotlib / Astropy).
  • The section "Numerical Methods" aims at introducing students with a large variety of numerical methods. Depending of the students interests and needs, several topics among the following will be studied: numerical methods of statistical classical or frequentist inference (i.e. Maximum Likelihood Estimation,  confidence interval via Jackknife and bootstrapping, hypothesis test), Baysian statistical inference (MCMC for confidence interval estimation, model selection), general principles of neural network and machine learning (supervised, unsupervised). The presentation of those methods will take place together with actual problems and examples.
 
Learning outcomes of the learning unit :
  • Understand the basic principles of a large variety of numerical methods currently used in space and astrophysical sciences.
  • Implementing a numerical solution and all the operations related to its execution and/or the exploitation of the results (input/output, visualization, etc).
  • Follow good practices in terms of project development and programing (lisibility, reproductibility, ...)
Prerequisite knowledge and skills :
The student is expected to masterize basic programming concepts (such as loops, conditional loops, function, concept of object, ...) as covered by the lecture "Introduction à la programmation (INFO0201-1)". A basic knowledge of statistics (probability calculation, conditional probabilities, concept of Bayesian inference) as covered by a lecture such as "Statistique des données expérimentales de la physique STAT0064-3" is also mandatory.
Planned learning activities and teaching methods :
The course materials include Jupyter notebooks (http://jupyter.org) that contain, in addition to the theory, examples and small intereactive exercises that provide the students with a direct experience of the methods and concepts presented during the lecture. The practical classes are dedicated to the study of more advanced problems with the help of Python libraries that implement several of the algorithms teached during the lecture.
Mode of delivery (face-to-face ; distance-learning) :
The lecture will be of 3h/week during Q2.
Recommended or required readings :
The lecture will be based on the following book as well as on various notebooks and existing online material:
Other useful references will be provided to the students during the lectures.
Assessment methods and criteria :
Evaluation will be based upon
  • realization and presentation of a research and programming project (individually or in small groups);
  • and/or oral exam.
Work placement(s) :
Organizational remarks :
Contacts :
Benoît Bovy  /    Dominique Sluse University of Liège Institut d'Astrophysique et de Géophysique (B5c build.) 17, allée du Six-Août B-4000 Liège Tél.: (+32) (4) 366 9797  (D. Sluse) eMail: bbovy@ulg.ac.be   /    dsluse@ulg.ac.be