This course illustrates the key features of C language, with emphasis to modern programming style for scientific and technical applications particularly suitable to HPC environments. After a brief introduction on the C fundamentals we will discuss its flaws and strengths and the conceptual guidelines that allowed C to be one of the most widespread, efficient and general purpose languages even decades after its birth. We will show common idioms and best practices focusing on scientific and technical use cases.
By the end of the course the student will be able to:
understand the principles of scientific oriented programming logic;
read and write programs in C;
become a master with pointers, pointers of pointers, pointers of ....
improve his knowledge about the C language, having reached the necessary starting point;
use the best C language practices and recognition of typical traps.
Researchers and programmers interested in reading C codes and writing new programs or modifying and extending existent ones with portable C code. Anyone interested in writing high performance codes at a professional level.
A basic knowledge of computer architecture and of any programming paradigm is recommended. A basic knowledge of Unix environment would be helpful.