Course Outline
Introduction
- Overview of C Features and Applications.
Preparing the Development Environment
- Selecting an IDE.
- Configuring the compiler.
Writing a Sample Program
- Defining the problem.
- Coding according to requirements.
Defining the Scope of Variables and Functions
- Understanding scope, visibility, and lifetime.
- Working with storage classes: auto, extern, register, static.
Managing Data in a C Program
- Beyond primitive data types.
- Working with advanced data types: structures, linked lists, etc.
- Storing different data types in the same memory location.
Modifying the Properties of a Variable
- Beyond type modifiers.
- Working with type qualifiers: constant, volatile, etc.
Manipulating Bits in C
- Working with data smaller than a byte.
- Working with bit manipulation operators.
Controlling the Flow of Your Program
- Beyond sequencing.
- Using the goto statement.
Reading and Writing Data
- Recap of Input/Output functions.
- Improving output readability.
Developing Cross-Platform Code
- Understanding compiler directives.
- Compiling code conditionally.
Enhancing Program Performance
- Macros vs functions.
- Defining macros to run program fragments.
Dynamically Allocating Memory
- Advantage of using pointers: execution speed.
- Pointers to functions.
- Accessing memory and manipulating the address.
Debugging a C Program
- Advanced techniques for checking, detecting, and correcting errors.
- Working with gdb (Gnu Debugger).
Creating a Static Library
- How a static library is linked into an executable file.
- Creating a static library.
Creating a Shared Library
- Static libraries vs shared libraries (dynamic libraries).
- How a shared library is linked and loaded into memory at runtime.
- Creating a shared library.
Abstracting Data in Your Program
- Overview of interface, specification, and implementation.
- Creating an abstract data type.
- Regression testing an abstract data type.
Searching and Sorting Data
- Searching arrays using linear search, binary search, etc.
- Sorting arrays using selection sort, insertion sort, bubble sort.
Interprocess Communication and Signals
- Understanding processes, sockets, and signals.
- Implementing IPC using shared files, shared memory, pipes, message queues, sockets, semaphores, etc.
Making Your C Program Run in Parallel
- Running different parts of a program concurrently through multithreading.
- Writing a thread.
Advanced Networking Programming
- Recap of TCP, UDP, IP, and other dominant protocols.
- Serving multiple ports, surviving abrupt network disruptions, etc.
- Writing powerful socket APIs.
Towards High-Quality Code
- Peer code review and parallel programming.
- The importance of iterative coding (refactoring).
Summary and Conclusion.
Requirements
- Experience with C programming.
Audience
- Programmers.
- Developers.
Testimonials (2)
the exercises and the methodology
Javier MIllan Rios - si
Course - Advanced C Programming
An interesting and broad scope