Practical Project

Readers are expected to build an open-software package of a scientific, mathematic, or numerical application to practice the techniques in the technical materials. The practical project is a critical companion of the technical materials, and should include also a proposal of the code development and a presentation.

The software package, of which the source code is publicly available, needs to be hosted on github.com. The software needs to be executable on the Ubuntu 20.04 LTS on 64-bit x86 through command line. Building the software package should use a single command.

Assessment

The project may be assessed based on the following sets of guideline: good engineering infrastructure, correct implementation and solution to the problem, adequate architecture, and clear presentation.

Software Engineering

  • Build system
  • Testing
  • Version control
  • History quality
  • Issue tracking
  • Documentation

Correctness

  • Existence of golden
  • Quality of golden
  • Development procedure
  • Validation process

Software Architecture

  • SOLID
  • API granularity
  • API stability
  • Proper use of high-level language wrapping
  • Level of modularity
    • C++ code structure
    • Python code structure
  • Profiling
  • Runtime
  • Memory
  • Design for testing
  • Iterative design

Presentation

  • Technical fluency
  • Slide clarity
  • Time control
  • Appearance