C, C++ , Data Structures

Abstract

C is a general-purpose computer programming language developed in 1972 by Dennis at the Bell Telephone Laboratories for use with the UNIX operating system.

Although C was designed for implementing system software, it is also widely used for developing portable application software. It is one of the most popular programming languages and there are very few computer architectures for which a C compiler does not exist. C has greatly influenced many other popular programming languages, most notably C++, which originally began as an extension to C.

Objective

This short course is designed to ensure that students of Engineering College with academic Capabilities will have the skill set needed to deal with the challenges involved in real-world Programming using c, Advanced C or System C, to meet the needs of industries both today and in the future. 

The course is taught mainly using the gcc compiler, with Linux operating system

Pre-requisites

A prior knowledge of a basic Linux commands, general understanding about operating system concepts is assumed.

Agenda

  • The duration of the course will be 10 Working Days.
  • There would be 10 sessions, each of 2 hours duration.
  • There would be 10 lab sessions of 4 hours each.
  • After the course is over, you should be:
    • Comfortable with respect to programming in C.
    • Able to Implement and use Data Structures using C.
    • Proficient in Advanced C.
    • Having good understanding about gcc compiler.
    • Able to debug complex C programs.
    • Ready for System Programming using C
Modules:
  • Introduction and Programming Strategies
    • Features of C language, Broad structure of C.
    • Understanding C syntax, Data types, Escape sequences.
    • Operators, C conventions, Error Handling.
    • Some Programming Language Notes. 
  • Structured Programming Strategies
    • Decision Making and Looping
      • Decision Structures
      • Looping Structures.
      • Break and Continue statements.
    • Functions
      • Function prototypes, function calling, function body, Arguments, by value and by Reference, Steps Involved In invoking a function, Recursive Functions, Types of functions, Functions Returning Pointers.
    • Arrays, Structures and Unions
      • Definition of Arrays, Comparison between arrays and pointers, Single Dimension Array, Two Dimensional Arrays, Structures & Unions, Memory layout, Bit fields in structure, functions and structures
    • Pointers
      • Declaration of pointers, Rules valid for pointers, Pointer usage, Pointers, addressing, referencing and dereferencing, Passing pointers to a function, Strings with Pointers.
    • String IO
      • Accessing individual characters, Printing strings with printf, Printing strings with puts, Inputting strings with scanf, Inputting strings with gets, String Library (strcpy(), strcat(), strcmp(), strchr(), strstr(), spintf(), sscanf(), atoi()).
    • Memory Allocation
      • Overview of memory management, Allocating new heap memory, _ Deallocating heap memory, Checking for successful memory allocation, Memory errors, Using memory you don’t own, Faulty heap management.
    • Operation in C
      • Files, File naming, Opening a file, Writing and reading a file, Character input and output, Direct file input and output operations, Closing and flushing of files, Sequential and random files. 
  • Data Structures
    • Array and pointer:
      • Array creation, Array notation (pointer, direct etc), Review of pointer fundamentals, Review of Pointer operations, Parameter passing as pointers.
    • Sorting and searching methods
      • Various sorting techniques, Bubble sort, Merge sort, Quick sort, various search techniques: Sequential search, Binary search, Radix search.
    • Stack and queue
      • Stack Fundamentals, Stack implementation, Queue Fundamentals, Queue Implementation.
    • Linked list Fundamentals
      • Link list basics, Elementary link list functions.
    • Linked list Advanced
      • Reversing link list (different methods), by swapping, By recursion, Doubly link list, Basics of doubly link list, Circular link list.
    • Trees and Dynamic Algorithms:
      • Introduction, Binary tree, Complementary binary tree, Extended 2-Tree representation, Minimum weighted Path Length algorithm, Huffman’s Encoding, Balanced Binary Tree, and Paged Binary tree, M-Way Search Tree, Red-Black Tree, Threaded Binary Tree.