Course Outline
Introduction
- Overview of C Capabilities and Use Cases
Setting Up the Development Environment
- Selecting an IDE
- Configuring the compiler
Developing a Sample Program
- Defining the problem
- Implementing code to meet 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
- Exploring beyond primitive data types
- Working with complex data structures: structs, linked lists, etc.
- Storing diverse data types in the same memory address
Modifying Variable Properties
- Exploring beyond type modifiers
- Utilizing type qualifiers: const, volatile, etc.
Manipulating Bits in C
- Working with data units smaller than a byte
- Utilizing bitwise operators
Controlling Program Flow
- Exploring beyond standard sequencing
- Utilizing the goto statement
Reading and Writing Data
- Review of Input/Output functions
- Enhancing output readability
Developing Cross-Platform Code
- Understanding compiler directives
- Implementing conditional compilation
Improving Program Performance
- Macros versus functions
- Defining macros for executing code segments
Dynamic Memory Allocation
- Performance benefits of using pointers
- Function pointers
- Accessing and manipulating memory addresses
Debugging a C Program
- Advanced strategies for identifying and fixing errors
- Utilizing gdb (Gnu Debugger)
Creating a Static Library
- How static libraries are linked into executable files
- Steps to create a static library
Creating a Shared Library
- Static versus shared (dynamic) libraries
- How shared libraries are linked and loaded into memory at runtime
- Steps to create a shared library
Abstracting Data in Your Program
- Overview of interface, specification, and implementation
- Creating an abstract data type
- Regression testing for abstract data types
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 via shared files, shared memory, pipes, message queues, sockets, semaphores, etc.
Enabling Parallel Execution in Your C Program
- Executing different program segments concurrently through multithreading
- Writing threads
Advanced Networking Programming
- Review of TCP, UDP, IP, and other key protocols
- Handling multiple ports and managing sudden network interruptions
- Developing robust socket APIs
Towards High-Quality Code
- Peer code review and parallel programming
- The significance of iterative coding (refactoring)
Summary and Conclusion
Requirements
- Prior experience with C programming
Target Audience
- Software Programmers
- Developers
Testimonials (2)
the exercises and the methodology
Javier MIllan Rios - si
Course - Advanced C Programming
An interesting and broad scope