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.
An overview of C language; our first C program and the tools needed to write it; the preprocessor; basic data types and aggregates; artihmetics; dynamic memory management and strings; I/O textual and binary; robustness and efficient code writing.
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.