Description
In this course, you will :
- Covers data types, control flow, functions, input/output, memory, compilation, debugging, and other advanced topics.
- The extremely efficient and powerful C language serves as the foundation for many other languages, including C++ and Java.
- It enables you to interact directly with memory and low-level computer operations, which improves your programming skills and deepens your understanding.
- The fundamental and advanced programming concepts of the C language. It also covers memory, debugging, and parallel programming in C.
Syllabus :
1. Why program in C?
- What is C?
- Virtues and Challenges
- When Should I Use C?
- The Bottom Line
- References
2. Basic Types, Operators and Expressions
- Print Statements
- Variables
- Data Types and Sizes
- Constants
- Declarations
- Expressions
- Type Conversions
- Defining Your Own Type Names Using typedef
- Increment and Decrement Operators
- Exercises on Basic Types, Operators and Expression
- Quiz Yourself on Basic Types, Operators and Expressions
3. Control Flow
- Loops
- Conditionals
- Switch
- Break & Continue
- Exercises on Control Flow
- Quiz Yourself on Control Flow
4. Functions
- Rationale
- Defining a Function
- Input Arguments
- Return Value
- Argument Checking
- Variable Scope
- Automatic vs Static Variables
- Variadic Functions
- Exercises on Functions
- Quiz Yourself on Functions
5. Complex Data Types
- Arrays
- Array Initialization and Updating Array Elements
- Multidimensional Arrays
- Variable-Length Arrays
- Command-line Arguments
- Structures
- Exercises on Complex Data Types
- Quiz on Complex Data Types
6. Memory : Stack vs Heap
- The Stack
- The Heap
- Stack vs Heap: Pros and Cons
- Examples on Stack and Heap
- When to use the Heap?
- Links
- Quiz Yourself on Stack and Heap
7. Pointers
- Pointers
- Pointers and Arrays
- Passing Pointers to Struct
- Passing Pointers to Functions
- Dynamically Allocated Memory
- Links
- Exercises on Pointers
- Quiz Yourself on Pointers
8. Strings
- Strings
- String handling routines in the C standard library
- Arrays of Strings
- Links
- Exercises on Strings
- Quiz on Strings
9. Input and Output
- I/O Streams
- Input and Output with Files
- Binary Files (raw bytes)
- Links
- Exercises on Input and Output
- Quiz Yourself on Input and Output
10. Macros and the C Preprocessor
- The C processor and the`#define` statement
- Macros
- Conditional Compilation
- Links
- Quiz
11. Compiling, linking, Makefile, header files
- Splitting your program into multiple files
- The GNU `make` utility and Makefiles
- Links
12. Debugging
- The GNU Project Debugger gdb
- Breakpoint
- Gotchas
- Tricky Code
- Links
- Quiz
13. Speeding up your code
- Profiling your code using `gprof`
- Known Slugs
- Using the Optimizer compiler flags
- Links
14. A Brief Tour of Some Other Useful C Libraries
- Introduction
- GLib
- GNU Scientific Library (GSL)
- BLAS / LAPACK
- Apophenia
- GNUplot
15. Parallel Programming in C
- Why Parallel Programming?
- Kinds of Parallel Programming
- Tools for Parallel Programming
- OpenMP
- MPI
- Links
- Exercises
- Quiz
16. Miscellaneous
- Topics Not Covered Here (yet)
- Links