C
is
a
small,
powerful,
general-purpose,
high-level
programming
language
that
has
been
the
industry
standard
for
the
development
of
efficient
and
portable
software
for
many
years.
C
is
used
to
write
both
application
and
operating
system
software.
This
course
presents
some
of
the
more
advanced
features
of
C
and
discusses
how
to
use
them
to
develop
sophisticated
programming
techniques.
The
course
begins
with
a
rapid
review
of
the
fundamental
features
of
C
before
going
on
to
explore
some
of
the
more
advanced
features
of
C.
The
skills
associated
with
the
application
of
these
features
are
developed
through
a
range
of
extensive
hands-on
exercises.
Good
programming
practice
is
promoted
with
an
emphasis
on
the
production
of
reliable
C
applications.
Objectives
Understand
and
apply
some
of
the
more
advanced
features
of
C.
Who
Should
Attend?
The
course
is
aimed
at
programmers
who
already
have
a
working
understanding
of
the
fundamental
features
of
C
and
wish
to
develop
their
C
programming
skills.
Prerequisites
Students
should
be
familiar
with
the
fundamental
features
of
C
and
be
actively
involved
in
programming.
A
suitable
level
of
C
experience
would
be
'C
Programming'
('PK-106')
or
equivalent,
plus
some
practical
software
development
in
C.
Follow
On
Courses
A
natural
progression
from
C
could
be
to
C++.
Java
is
another
possibility
in
that
it
shares
much
of
the
C
syntax.
Course
Content
A
Review
of
C
Fundamentals -
A
review
of
the
basic
features
of
C
Structured
data
types -
Review
arrays
and
structs
-
Discuss
unions
-
Implement
tables
using
arrays
of
structs
-
Implement
indexed
tables
Bit
Manipulation -
Bit
operators
-
Bit
flags
and
bit
masks
-
Using
bit
fields
Pointers
&
Memory
Management -
Review
of
pointers
-
Pointers,
arrays
and
strings
-
Dynamic
memory
allocation
-
Pointers
to
pointers
-
Working
with
command
line
arguments
-
Pointers
to
functions
The
C
Pre-Processor -
A
review
of
the
pre-processor
-
Macros
-
Conditional
compilation
-
Using
header
and
implementation
files
Abstract
Data
Types -
Introduction
to
abstract
data
types
-
Implementing
Stacks
and
Queues
Programming
Techniques -
Investigate
how
C
supports
-
programming
techniques
-
Data
driven
applications
and
finite
state
machines
-
Using
pointers
to
functions
-
Recursion