Intermediate C Programming
This course continues the study of the C programming language using the C23 standard. The core language features covered in this course include functions, arrays, strings, pointers, dynamic memory
allocation, library functions, structures, and file I/O. Programming techniques covered by this course
include modularity, top-down design, documentation, debugging, and testing. Lab exercises throughout the course test and reinforce understanding of the concepts.
Cumulative graded assessments available for group training.
Duration
40 hours
Audience
This course is intended for developers with some programming experience in C and understand programming concepts. This course is not designed for students who are completely new to programming; it is targeted at developers with at least one month of programming experience.
PREREQUISITES
Students should have completed our “Introduction to C Programming” course or have equivalent knowledge of the C programming language. They should understand how to do the following in C:
• Build and run simple C programs.
• Name, declare, initialize, and manipulate numeric values in variables.
• Define and manipulate arrays.
• Create and call functions.
• Control program flow through conditionals and loops.
• Define, manipulate, and call functions with strings (character arrays).
• Perform basic I/O with a console and on-disk files using library functions.
• Declare, define, initialize, and manipulate new struct types.
• Search, parse, and split strings using library functions.
• Debug the behavior of a running program.
Upon completion of this course, students will be able to the following in C:
- Build complex programs.
- Declare, define, and manipulate pointers to data or functions.
- Dynamically allocate and deallocate memory as needed.
- Design large program components and APIs.
- Write and run unit tests.
- Inspect and manipulate bits of integers.
- Perform binary I/O with a console and on-disk files using library functions.
- Profile a running program for performance hotspots and improvements.
- Choose appropriate library functions for common tasks.
1. Compilation Units
◦ C Build Pipeline
◦ Header Files and Header Guards
◦ Internal and External Linkage
2. Pointers
◦ Pointer Operators and Declarations
◦ Pointers as Function Arguments
◦ struct Pointers and the -> Operator
◦ Pointers Arithmetic
◦ Pointers to Pointers
◦ void Pointers and Casting
◦ Function Pointers
3. Dynamic Memory
◦ Heap Allocations via malloc()/free()
◦ Valgrind for Dynamic Analysis
◦ Fine control with calloc()/realloc()
◦ Auto-Sizing Data Structures
4. C Program Design
◦ Effective typedefs
◦ Opaque Types
◦ Designing C APIs
5. Unit Testing
◦ check Library
◦ Assertions
◦ Unit Tests
◦ Test Suites, Runners, and Cases
6. Bit Manipulation
◦ Bitwise Operators
◦ Bitfields
◦ Endianness
◦ Binary Input/Output
◦ union Applications
7. Profiling and Optimization
◦ Measuring Program Performance
◦ Profile Build Targets
◦ Dynamic Analysis Profiling Tools
◦ Optimization Techniques
8. Standard Library Functions
◦ Array Sorting and Searching
◦ Processing Command-Line Options and Arguments
◦ Variadic Functions
◦ Time and Timing Functions
Is there a discount available for current students?
UMBC students and alumni, as well as students who have previously taken a public training course with UMBC Training Centers are eligible for a 10% discount, capped at $250. Please provide a copy of your UMBC student ID or an unofficial transcript or the name of the UMBC Training Centers course you have completed. Asynchronous courses are excluded from this offer.
What is the cancellation and refund policy?
Student will receive a refund of paid registration fees only if UMBC Training Centers receives a notice of cancellation at least 10 business days prior to the class start date for classes or the exam date for exams.