Advanced C Programming for UNIX and Linux

Course

In Carshalton

£ 1,750 + VAT

Description

  • Type

    Course

  • Location

    Carshalton

  • Duration

    5 Days

In an advanced programming course there will not be the time to write large programs from scratch. The exercises therefore range from implementing small programs from scratch to master a particular technique, through to adding modules to existing applications, or modifying modules in existing applications in order to accomplish some task. The result is a course that includes a. Suitable for: The course is for experienced C programmers working primarily in the Unix field. It is designed to provide a thorough understanding of advanced C programming topics, and challenging Unix systems and network programming techniques. The course will run on Linux (and Solaris if needed) platforms and use the GNU C compiler. The use of make and makefiles will be fully covered, as will the use of autoconf, automake and libtool. The course is also useful as a starting point.

Facilities

Location

Start date

Carshalton (Surrey)
See map
1-3 Fairlands House, North Street, SM5 2HW

Start date

On request

Questions & Answers

Add your question

Our advisors and other users will be able to reply to you

Who would you like to address this question to?

Fill in your details to get a reply

We will only publish your name and question

Reviews

Course programme

Overview
The career progression of a C programmer, after their initial exposure to C, and a year or so commercial programming experience often involves having to develop or maintain complex code that uses quite sophisticated algorithms. All too often one hears the story: "well, we had a course on data structures and algorithms at university, but it was all covered so fast , and there was so little time to try out the ideas, that I understood very little of the subject".
The purpose of this course is to rectify that situation. Not only will attendees learn about some of the widely used algorithms and data structures that "crop up" regularly in commercial and engineering applications, they will be shown how to incorporate these algorithms in their code in a structured way, and how to select particular techniques for tackling particular problems (i.e. the course identifies problem solving patterns).
The course also covers advanced Unix programming dealing with process creation and management, inter process communication techniques, and programming with P-threads. It also covers Unix network and distributed applications programming using sockets and Remote Procedure calls.

Key Skills
  • understand and be able to implement/modify code that uses dynamic data structures
  • be able to select from alternative indexing strategies
  • implement sockets based applications
  • build distributed applications using ONC RPC, and XML RPC.
  • master the Unix programming API
  • master POSIX threads programming
  • Know how to implement a Unix device driver
  • fully understand make and makefiles

Practical Work
In an advanced programming course there will not be the time to write large programs from scratch. The exercises therefore range from implementing small programs from scratch to master a particular technique, through to adding modules to existing applications, or modifying modules in existing applications in order to accomplish some task.
The result is a course that includes a lot of programming as well as a lot of code reading. Exercises include:
  • Converting a switch statement driven parser to a table driven parser
  • Using Lex and Yacc to implement a calculator program
  • Implementing a basic binary tree and examining code demonstrating the AVL Tree and the Splay tree approaches
  • Using a B Tree library to build an indexed data access application
  • Implementing a master-slave multi-tasking application where a master creates and manages slave processes that are created on demand
  • Implementing a multi-threaded server
  • Use a regular expression pattern matching library - to search for patterns in a small DNA sequence database

Course Contents
ANSI C syntax review
  • basic C syntax
  • pointers and arrays
  • data structures and typedefs
Finite State Machines and Statecharts
  • Describing Finite State Machines
  • Implementing Finite State Machines via switch statements
  • Function pointers in C
  • Table driven programs, and table driven approaches to implementing Finite State Machines
  • Extending Finite State Machines with Statecharts
  • Techniques for realising Statechart designs in C
  • Regular expressions and their uses
  • An overview of rule based programming and its applications
  • Overview of Lex and Yacc and the use of tiny languages in real world applications
Algorithms and data structures for manipulating and indexing collections of data
  • advanced uses of arrays and pointers
  • linked lists and queues
  • binary trees (including splay trees and AVL trees)
  • B trees
  • Graphs and graph traversal
  • Hashing and hash tables
  • Bit string indexing
Realising object and component oriented designs in C
  • objects and components as collections of methods
  • an interface a collection of methods encapsulated via a pointer to a table of function pointers
  • an object encapsulated via a data structure containing a pointer to data, and a pointer to a table of function pointers
  • handling inheritance in C
The UNIX programming API
  • manipulating files and the file system
  • signaling processes
  • handling environment variables
  • creating processes with fork and exec
  • pipes and message queues
  • controlling access to resources with semaphores
  • shared memory
  • longjmp and setjmp
Posix threads
  • threads and processes compared
  • the POSIX threads API
  • how POSIX threads are implemented on different Unix systems
  • using threads to implement server applications that can support multiple concurrent clients
Network programming and distributed applications
  • Unix sockets - theory and uses
  • ONC Remote Procedure calls - theory and uses
  • XML Remote Procedure calls - theory and examples
Device Drivers
  • the generic Unix device driver model
  • implementing Linux device drivers
  • implementing Solaris device drivers

Advanced C Programming for UNIX and Linux

£ 1,750 + VAT