Home
Diploma Services People
Certification Contact Us
1. Advanced C and Data Structures for System Programmers

Understanding a computer and a Program
  • CPU
  • Memory
  • I/O controllers
  • Executable Image contents
  • Text/Code, Read only Data, Data, BSS
  • Loading and running a program in Physical memory
  • Loading and running a program in Virtual memory
Program with Multiple C files
  • Why multiple C files
  • Definition Vs Declaration
  • Hiding data and functions
  • Header files
Development tools in Linux

Compiler
  • Compilation Stages
  • Object file format
Linker
  • Function of Linker
  • Static linking Vs Dynamic linking
  • Executable file format
  • Executable file vs Executable Image in memory
Archive or Libray utility
Make utility
Debugger

Pointers and Its Applications
  • Pointers Vs Integers
  • Pointer type
  • Pointer de-reference
  • Pointers and arrays
  • Pointer arithmetic
  • Array of pointers
  • Pointers and Dynamic memory
Structures
  • Compound type
  • Packing of elements within a structure
  • Alignment and hole in the structure
  • Structure pointers
  • Accessing elements of a structure using structure pointers
  • Dynamic allocation of memory for structures
  • Self referential structures
  • Passing structure parameters to functions
  • Returning a structure or struct pointer by a function
Unions
  • Differences between union and structure
  • Uses of unions
Bit Operations
  • Binary, Decimal and Hex conversions
  • Logical versus Bit wise operations
  • Masking a bit
  • Testing a bit
  • Setting a bit
  • Testing a set of bits
  • Setting a set of bits
  • Conversion of numbers from Binary to String and vice versa
Functions
  • Definition, Declaration/prototype, Invocation
  • Function type and return value
  • Output parameters
  • Pass by value and pass by reference
  • Local variables
  • Static variables
  • Function pointers
  • Thread of execution(stack frames)
Module Concepts
  • Module concept
  • Interface functions
  • Unit testing of module
  • Test Driver
  • Test Stub

Managing data in Arrays
  • Operations on arrays
  • Arrays Vs Strings
Managing data in Linked lists
  • Single linked lists
  • Operations on linked lists
  • Double linked lists
Maintaining data with order
  • Stack(LIFO) order
  • Queue(FIFO) order
  • Stacks using Arrays and Linked lists
  • Queue using Arrays and Linked lists
  • Circular queues
Maintaining data for Search
  • Linear search
  • Binary search
  • Hash based search
Understanding and Using Messages
  • Message concepts
  • Text Vs Binary messages
  • Framing of messages
  • Parsing of messages
2.Linux System and Network Programming

Operating Systems Concepts
  • What is OS
  • Components of OS
  • OS vs Kernel
  • Kernel Services
  • Types of operating systems
  • Introduction to Linux
File and I/O Services
  • File descriptors
  • File types
  • Stdin, Stdout and Stderr File descriptors
  • Link or Relationship between File Descriptor and File or device
  • File descriptors of same file but from multiple processes
  • File I/O system calls (unbuffered i/o)
  • open, create, close, lseek, read, write, dup, dup2
  • fcntl, ioctl
  • File types, IDs and Access permissions
Standard I/0 Library Functions
  • fopen,fread,fwrite,fclose,fseek
  • Relationship between file descriptor and FILE pointer
  • Character at a time I/O
  • Line at a time I/O
  • Formatted I/O
Multi-threading
  • Multi-threaded programming
  • Synchronization and Mutual exclusion for threads
  • POSIX Semaphores
  • POSIX Mutexes
Multi-Processing
  • Process Identifiers
  • fork, exit, wait, waitpid, execv
Initial Process Relationships
  • Terminal Logins
Signals
  • Signal Concepts
  • Signal(), kill(), raise(), alarm() and pause()
Inter Process Communication
  • Pipes
  • FIFO (Named pipes)
  • Message Queues
  • Semaphores
  • Shared Memory

Network Programming
  • Concept of socket / socket pair
  • Concept of Client and Server
  • Concept connectionless and connection oriented protocols (UDP/TCP)
  • Socket calls for UDP server and client
  • Socket calls for TCP server and client
  • Algorithms and Issues in Client software design
  • Algorithms and Issues in Server software design
  • Iterative, Connectionless Servers
  • Iterative Connection-Oriented servers
  • Concurrent, Connection-Oriented servers
  • Serving multiple clients with a single process
  • Serving multiple clients with one thread per client
Standard UDP/TCP Applications
  • TFTP
  • POP3
  • SMTP
3. Linux Kernel Programming and Device Drivers

Introduction to Linux Kernel
  • Linux OS vs Linux Kernel
  • Kernel Sources
  • Configuring and Building Kernel

Kernel Modules
  • Module Concepts
  • Module tools
  • Module Parameters
  • Module stacking

Timing issues in the kernel

Concurrency in the Kernel

Character Drivers

Understanding Hardware

Memory, I/O and Interrupts

Advanced Character drivers

ProcFS, SysFS and Linux Driver Model

Serial Driver

PCI Bus

Network Drivers

Audio Drivers

Video Drivers

USB Drivers

Block Drivers

Debugging Device Drivers

Linux in Embedded Systems





401, Sai Sushma Homes, 23/A, S.R. Nagar Main Road, Hyderabad-500038, India.
Ph: +91-40-23812090, 7702028989