Intensive overview of essential C concepts and idioms
· Data types, data structures, pointers and arrays
· Using pointers to search collections of data
Arrays and buffers
· Circular buffers
· Polygonal buffers
· I/O vectors
Linked Lists in depth
· Singly linked and doubly linked lists
· Using lists to implements FIFO queues and LIFO queues (stacks)
· Using lists of linked lists
· Using linked list nodes containing void * pointers to implement heterogeneous collections of data
· Using linked lists to implement resizeable arrays
Binary trees, their uses and their relations
· Basic binary trees
· Self-balancing binary trees (AVL, Red-Black, Splay)
· Heaps and their uses
· Huffman encoding
· Priority queues
Error detection
· CRC checksums (16 bit and 32 bit)
Implementing simple memory management schemes
Implementing simple flash memory file systems
State Machines and Statecharts
· Event driven programming
· Basic FSMs
· Pattern matching
· Parsing
· State driven hardware and communication protocols
· Implementing FSMs using switch statements
· Implementing FSMs using a table driven approach
· Limitations of FSMs
· Extended FSMs and hierarchical FSMs
· Extending FSMs by adding variables and conditional transitions
· Nesting state machines (push down automata)
Statecharts
· Hierachical FSMs and extended FSMs (simple statecharts)
· Orthogonal statecharts and concurrency
· Active objects - linking multi-tasking, message passing and event driven programming
Basic operating systems and multi-tasking concepts
· Task structures
· Task life cycle
· Task management
· Task data structures
· Task queues
· Message queues
· Semaphores (counting, binary, mutex)
· Monitors
· Pipes
· Memory management services
· Signals
· Timers