In this course, students will be introduced to debugging techniques (error identification) and profiling (application performance analysis) of sequential and parallel applications and codes. Based on the program behaviour analysis, students will be introduced to sequential and parallel code optimization techniques. Further, students will become familiar with the most frequently used tools for parallel code analysis, which are used in most world HPC centres.