C is a general-purpose programming structured programming language, statically typed, and a compiled language. It is used to implement some of the most important software, including important parts of operating systems (Windows, Linux), Git, etc.
The competency area includes an understanding of variable scope and storage classes, understanding of function definitions, return types, function arguments, understanding Pointers, working with Arrays, understanding Enum, among others.
- Variable Scope and Storage Classes - Ability to infer the scope of variables given an excerpt from C code.
- Functions and arguments - Understanding of function definitions, return types, function arguments, calling functions, etc.
- Understanding Pointers - Ability to use pointers and awareness of concepts such as call by value, call by reference, referencing and dereferencing of pointers, accessing array values using pointer arithmetic, etc.
- File I/O and Handling - Awareness of the usage and nuances of the following: fopen, fprintf, fscanf, fgetc, fputc, fseek, rewind, ftell, among others.
- Typecasting - Understanding of the types of typecasting (implicit and explicit) and rules regarding the same.
- Understanding Strings in C - Using Strings in C, which are stored as a character array, and the ability to perform string-based operations.
- Working with Enum - Understanding Enum, which is a data type that enables a variable to be a set of predefined constants.
- Types of Errors - Understanding and handling Errors in C, which can be broken down into the following types: Syntax Error, Semantic Error, Logical Error, Runtime Error (such as segmentation fault, division by zero, etc), and Linker Error (an undefined reference to main).
- Intermediate programs - Ability to write intermediate-level programs such as array operations, finding the nth Fibonacci number, reading and writing to a file, string (verifying if the given string is a palindrome), or array manipulation (rotating an array about a pivot element), etc.