Advanced C Language Programming

5 Days course

Language: English

This course is only available on request!!


DESCRIPTION
This course broadens the skills of a C language programmer by introducing sophisticated problem solving techniques including the advanced use of pointers, abstract data types, data structures, portability, and optimization techniques.
Skills are reinforced by hands-on laboratory exercises.

WHAT YOU WILL LEARN
Master the use of pointers in a wide variety of problems
Use sophisticated pointer techniques to solve problems involving advanced data structures such as lists, stacks, queues and trees
Choose from a wide variety of data structures to implement the most efficient solution to a problem
Apply the proper optimization technique to your C code
Apply many portability techniques to your C code
Use bit manipulation techniques for efficient solutions to problems
Write programs which emphasize modern program design techniques which emphasize code reuse
Write powerful C programs which make "calls" directly into the UNIX operating system through the use of system calls
Decrease development time in writing applications through a more thorough understanding of sophisticated concepts in C

WHO SHOULD ATTEND:
Anybody who has been programming in C for at least six months or who is a skilled programmer and has taken a C introductory course.

ASSUMED KNOWLEDGE
Students should have at least six months of C programming experience.

OUTLINES

CHAPTER 1: REVIEW OF C
1) Fundamental data types
2) Operators
3) Control flow constructs - If
4) Loops
5) Switch
6) Derived data types
7) Arrays and pointers
8) Structures
9) Unions
10) Bit Fields
11) Enums

CHAPTER 2: FUNCTIONS
1) Function fundamentals
2) Function prototypes
3) Return values
4) Recursive functions
5) Evaluation of function arguments
6) Variable number of arguments
7) Scope of variables
8) Initialization

CHAPTER 3: BIT MANIPULATION
1) Defining the problem space
2) Operators
3) Writing bitwise functions
4) Circular shifts
5) Direct lookup
6) Mapping with bits
7) Radix sorting

CHAPTER 4: POINTERS
1) Common pointer constructions
2) Pointer arithmetic
3) Command line arguments
4) The environment pointer
5) Processing arrays with pointers
6) Simulating higher dimensional arrays
7) Two dimensional arrays
8) Complex declarations
9) Pointers to functions
10) Surrogate sorting

CHAPTER 5: DESIGNING DATA TYPES
1) Rationale for a new data type
2) Creating the fraction type
3) Implementing the fraction functions
4) Applications with fractions
5) Creating the set type
6) Set representation
7) Set function implementations

CHAPTER 6: DATA STRUCTURES
1) Lists - What are they?
2) Lists as arrays
3) A list of linked elements
4) The list data type
5) List function implementation
6) Other types of lists
7) Ordered lists
8) Circular lists
9) Two way lists
10) Networks
11) A linked list application - hashing
12) Stacks
13) Queues
14) Trees

CHAPTER 7: OPTIMIZATION TECHNIQUES
1) Where to optimize
2) Macros
3) Initialization
4) Modifying data structures
5) Caching
6) Removing invariants from loops
7) Logical inefficiencies
8) Odds and ends

CHAPTER 8: PORTABILITY ISSUES
1) Source code portability
2) Portability with functions
3) Arithmetic data types
4) Bit manipulation problems
5) Portable bit masks
6) Pointer problems
7) ANSI vs non-ANSI
8) Odds and ends

APPENDIX 1: SOFTWARE TOOLS
1) Compiler options
2) Conditional compilation
3) Debugging with the assert macro
4) Creating libraries
5) A graphics example
6) The make command
7) The source code control system

APPENDIX 2: USEFUL LIBRARY FUNCTIONS
1) The system function
2) Exit and atexit
3) The signal function
4) Strtok
5) Memcpy and memset
6) Qsort
7) Bsearch
8) Strstr
9) String validation functions

APPENDIX 3: I/O FILE ACCESS
1) System calls vs librarycalls
2) Opening disk files
3) Access mode
4) Errors in opening files
5) I/O library calls
6) The scanf functions
7) Closing files
8) Servicing errors
9) Binary I/O


[HOME] [dates] [reserve] [seminars]
FDDI Institute
De Regenboog 11 - 2800 Mechelen - Belgium - Europe
Tel 32 15 24 50 58 - Fax 32 15 25 10 50