Programming in C Language – Advanced Concepts

Course code: CLPL01

Duration:       40 Hours

This course provides a thorough knowledge on advanced programming techniques, including the library functions and the usage of the pre-processor. Knowledge of C is highly marketable for summer internships, research oppurtunity program, and full-time positions in software and embedded systems development.

Audience

Those who have a need to learn and apply C programming techniques.

Prerequisites

This course assumes a prior understanding of basics of programming in C Language.

Objective

To be proficient in:

  • Continue development of C programming abilities by coding a variety of C programs.
  • Deepen understanding of variable attributes such as local, global, external and static.
  • Develop proficiency that perform file and interactive I/O.
  • Gain an understanding of how C implements data structures.
  • Learn and implement debugging methods and hints.
  • Write small applications that "brings together" the knowledge and skills acquired in this course.

Education Criteria

None

1. About this Course

  • Course Objectives
  • Course Overview
  • Suggested References

2. C Development Environment

  • Objectives
  • cc (1) Command
  • Include Files()
  • Libraries
  • Exercises
  • 3 Basic and Derived Data Types in C

  • Objectives
  • Simple C Data Types
  • Integral Data Types
  • Floating Point Types
  • Derived Data Types
  • Array Data Types - Single and Multi-dimensional
  • Structure Data Types
  • Simple Pointer Types
  • Pointers to Structures / Multiple Pointers
  • Pointers to Functions
  • The Const Qualifier
  • Bit Operators
  • Using typedef
  • Exercises
  • 4. Functions: Calling, Passing and Returning Values

  • Objectives
  • Anatomy of a Function
  • Parameter Passing - Pass by Value
  • Parameter Passing - Pass by Reference
  • Exercises
  • 5. Standard I/O

  • Objectives
  • Standard I/O Streams
  • File Access
  • Formatted I/O
  • String I/O
  • File Positioning Operations
  • Block I/O
  • Exercises
  • 6. Low Level File I/O

  • Objectives
  • Standard I/O vs System I/O
  • File Access
  • Formatted I/O
  • String I/O
  • File Positioning Operations
  • Block I/O
  • Exercises
  • 7. Memory Allocation with malloc and calloc

  • Objectives
  • Dynamic Memory Allocation Overview
  • malloc(), calloc()
  • realloc(),free()
  • Example: Array of Pointers to Structures
  • Exercises
  • 8. Memory Organization and Scope of Variables

  • Objectives
  • Command Line Arguments (argc, argv)
  • The Memory Layout of a C program
  • The Stack Segment
  • The Heap Segment
  • Exercises
  • 9. Data Structures: Linked Lists

  • Objectives
  • Problem - Array Limitations
  • Solution - Linked Lists
  • Linked List - Formation
  • List Operations - Delete
  • Exercises
  • 10. Debugging Techniques

  • Objectives
  • Debugging Hints
  • Debugging with Pre-processing Directives
  • Debug Macro
  • Symbolic Debuggers
  • Exercises
  • 11. Make Utility

  • Objectives
  • Overview of the Make Utility
  • Using the Make Utility
  • Simple Makefile Commands
  • Exercises
  • 12. Preparing to Use a Debugger

  • Objectives
  • Project Header Files
  • Project Source Files
  • Project Tracking (Bookkeeping)
  • Exercises
  • 13. Develop a utility - Advanced C Programming

  • Case study explained
  • Course Review

    Exam Preparation (optional)