Programming With C [PRGC]

At a Glance

Can be completed in 2 Week
Total Lectures 17
Course Validity 6 Week

Subscribe to this course

Basic      (INR) Standard (INR) Professional (INR)
Choose your package


Sample lectures on YouTube

Course Details

Programming in C (PRGC) course is designed to teach you programming in the 'C' language on the UNIX platform. It focuses on standard language features along with best practices, flows and exposure to working with a large software. The course has toy exercises as well as a running example of a big software system, around which advanced exercises are based. This course can be completed in around two weeks time. We also suggest you to go through our blog on Do you really know 'C' and 'C++' to gain an insight into why it makes sense to learn these languages.


  1. Strong focus on hands-on experience
  2. Learn not only 'C' language, but also software engineering
  3. Insight into how to write code with predictable performance. This is done by providing a compiler centric view while discussing various language features. Writing predicatble code is very important while designing embedded software.
  4. Discuss with the instructors on the forums as much as you want

Instructors and Forum Moderators

This course is taught by Anup Gangwar and Basant Dwivedi. They will also be moderating the forums.


This course does not expect any previous background in programming. However, familiarity with Linux is assumed as the online laboratory is based on it. If you have experience in working with any other UNIX system, then it is fine too. We recommend that you take up the course User Level Linux course if you are not familiar with any UNIX.

Who should take the course


This course is an intermediate level course. Most of the topics are treated in depth. Further, at every stage, there is also focus to correlate how compiler treats a particular language feature. This has been done to provide an insight into writing C programs with predictable performance.

Detailed Description

The early sections serve as a tutorial introduction to 'C'. Much like the seminal book, "The C Programming Language" by Kernighan and Ritchie, we also get the reader up to speed early on and quickly allow him to write the first "Hello World" program. Pointers are introduced early on and repeatedly used throughout the remainder of the sections. Pointer arithmetic and other commonly confusing items are explained thoroughly. We also describe the low-level implementation of functions, advanced techniques such as recursion in good detail. The course winds up by discussing the various software engineering aspects. Detailed table of content is as follows.

  1. Pre-requisites and goals of the course
  2. Platforms and software
    • What is a platform
    • What is a program
    • Writing programs
    • Why learn 'C'
  3. Computer architecture basics
    • What is programmability
    • Architecture block diagram
    • What is an instruction
    • Instruction execution phases
    • Architecture views
  4. Software tools
    • Assembly and binary
    • Software tools flow
    • Overview of various software tools
  5. Solving programming problems
    • How to approach programming problems
    • Programming problem solving example
  6. Introduction to C programming
    • Hello world program
    • Software tools flow on UNIX for C
    • Compiling, linking and debugging
    • Template makefile
    • Coding conventions
    • C language structure
  7. Macro processing
    • Macro processing in C
    • Common macros
    • Macro processing flow
    • Conditional macros
  8. Data Types
    • Basic data types
    • Enumerated data types
    • Type conversions
    • Variables
  9. Operators
    • Arithmetic operators
    • Expressions
    • Expression trees
  10. Array Data Types
    • Single dimensional arrays
    • Multi dimensional arrays
    • Address calculation and storage methods
    • Array initialization
  11. Pointers
    • What is a pointer
    • Memory allocation
    • Address calculation
    • Pointer to pointer
    • Pointer arithmetic
  12. Control flow statements
    • If-else block
    • Switch-case
    • Various loops
  13. Functions
    • What is a function
    • What is an execution context
    • Declaration and definition
    • Variable scope and return values
    • Side effects
    • Static variables
    • Low level implementation
    • Recursion
  14. Structures and Unions
    • Why is aggregation needed
    • Basics of structures
    • Pointers to structures
    • Passing structures as function argument
    • Self referential structures
    • Unions
  15. Input and Output
    • Character strings
    • Formatted output
    • Getting inputs
    • Reading and writing files
    • Standard file pointers
    • Command line arguments
    • Varargs
  16. Software Engineering Aspects
    • Unit testing
    • Regressions
    • Memory checking and performance
  17. References

The 'C' programming course as outlined above will help you start writing 'C' programs in short span of time. The course will also expose several software engineering tools to help you become more productive. Further, our compiler centric way of treating various language features will help you quickly analyze the performance of your program which will eventually lead to writing predicatable code.

About Us | Resources | Contact Us
Terms of Use | Privacy Policy
© 2020 VirtuQ™ Education All right reserved.