**Register by email to: rickard.armiento [at] liu.se**
Next course start: August 30, 2021.
Info
----
Teacher
-------
Interested participants from academia and industry are most welcome to apply for the course: *Collaborative Software Engineering Project in Computational Physics* given by the Linköping university unit of Materials Design and Informatics and offered within the `Swedish e-Science education (SeSE) <https://sese.nu>`__ initiative.
Rickard Armiento
* Next course start: **August 30, 2021.**
* Course outline: 10 lectures, 4 hands-on exercises, and group work on a collaborative software project in computational physics.
* Teacher: `Rickard Armiento <https://liu.se/en/employee/ricar47>`__, associate professor in Physical Modelling and head of the Materials Design and Informatics unit at Linköping University.
The course teaches software development and software engineering skills in 10 lectures, 4 hands-on exercises, and a collaborative software project in computational physics. The course is targeted at students who want to elevate their skills beyond "programming" to learn modern practices in collaborative software engineering, applied in the context of a computational physics project. The lectures span both theoretical and practical aspects of a wide range of software engineering topics as well as some selected topics in computational physics. The topics covered include agile project models, software version control, documentation, multi-paradigm programming, testing (unit and integration testing, TDD, CI/CD), currency and parallelism, databases, software development practices in the industry (guest lecture). The lectures also cover the basics of molecular dynamics simulations and exploratory data analysis and visualization. To provide practical training, four hands-on exercises are provided on collaborative version control with git and GitHub, testing/CI, visualization, and computational physics simulations. The students then apply these skills in a larger collaborative project, run according to an agile project model, to develop a software package for molecular dynamics simulations. The project tasks also include executing the software in high-throughput, applying exploratory data analysis and visualization on the results, and collect results in a database. The course will provide sufficient training in essential computational physics and molecular dynamics concepts to allow students with less experience in these topics to participate. Nevertheless, the project also allows engaging more deeply in the computational physics aspects for those with more experience in the topic. After completing the course the students will be able to:
* Evolve your skills from programming → software development → collaborative software engineering.
* Get experience working according to an industry-relevant agile project model.
* The project adds to your software project portfolio (e.g., to show future prospective employees.)
* Train your presentation skills with an oral presentation and a written final report.
**Four hands-on sessions**
* Version control with git, collaborative development on GitHub or GitLab.
* Exploration and visualization of data.
* Molecular dynamics in Python with ASE and ASAP and automated testing (CI).
* High-throughput computations on supercomputers.
The course takes place in the autumn term starting end of august/begninning of september. **For the fall 2021 round (during corona) participation will be possible fully by distance / video link.** (The degree to which this will be offered in the future is not yet determied.)
Dates
-----
**August 30 - October 15** *Introductionary part:* During this time there will be 10 lectures and 4 practical hands-on exercises. During this period the project groups organize, plan, and prepare their projects.
**November 1 - December 17** *Project execution part:* During this time the project groups conduct the project work. The work is coordinated over the Internet using the tools for collaborative software engineering covered in the course.
The project execution part ends with an oral presentation and a written final report. These are meant to be completed before the holidays, but in case the final report needs further revision there is an absolute final deadline in mid-January.
Content details
---------------
The course is aimed at those who want to elevate their skills beyond "programming" and learn modern practices in collaborative software development and software engineering. The course covers methods, tools, and workflows that enables joint software projects. These topics are covered in a series of lectures, hands-on exercises, and a group project in computational physics. The exercises and the project work will primarily use Python.
The lectures span over both theoretical and practical aspects of software engineering as well as computational physics. They introduce agile project models, version control of software, documentation, software testing (automated unit and integration tests, CI/CD), parallel and concurrent execution, databases, exploratory data analysis with visualization, molecular dynamics, and computer simulation of materials.
The hands-on computer exercises provide practical training in version control in collaborative software projects, automated testing (CI), visualization, and computer simulations based on computational physics.
The participants then apply the aquired skills in practice in a collaborative project to develop a software package for molecular dynamics simulations according to an agile project model. The software will be implemented, tested, documented, and run in high-throughput to generate big data which is explored, visualzed, and inserted in a database that is made externally accessible via an open API. The primary part of the project work is ongoing November-December and ends with a final examination in form of an oral presentation by the group and a final report.
The course provides sufficient training on essential computational physics and molecular dynamics to allow students with less experience in these topics to participate. Nevertheless, the project also allows engaging more deeply in the computational physics aspects for those with more experience in the topic.
After completing the course the participants will be able to:
* identify and apply central concepts of collaborative software development and engineering, and be familiar with the basic functions of standard tools.
* design, model, implement, test, document, and deliver a software system using modern practices and methodologies in software engineering, using an agile project model.
* implement, operate, and explore results of software for computational physics simulations.
The course will constructed out of a project in an undergraduate course on the advanced level, which we presently (autumn 2020) run for the first time with good success so far
Preliminary lecture outline
---------------------------
Participation
-------------
**Lecture 1:** Course Introduction and Project Models.
Complete remote participation over the Internet is possible.
- Computer security aspects in software development.
- Final remarks about the project execution and final phases.
**August 30 - October 15** *Introductionary part:* During this time there will be 10 lectures and 4 practical hands-on exercises. During this period the project groups organize, plan, and prepare their projects.
**November 1 - December 17** *Project execution part:* During this time the project groups conduct the project work. The work is coordinated over the Internet using the tools for collaborative software engineering covered in the course.
The project execution part ends with an oral presentation and a written final report. These are meant to be completed before the holidays, but in case the final report needs further revision final deadline is January 15, 2022.