Professional CertificateIntermediate

C & C++ Foundation + Advanced (Combined Programme)

C/C++ fundamentals and OOP, then memory management, data structures, algorithms, STL/templates, debugging and a project.

Talk to a counsellor about C & C++ Foundation + Advanced (Combined Programme)

Fees, batch dates and timings are shared by a counsellor. No payment is needed to ask.

What you will cover
  • C/C++ fundamentals
  • OOP
  • then memory management
  • data structures
  • algorithms
  • STL/templates
  • debugging
  • a project

Topic list from the institute's programme record.

Certification

Certificate terms for this programme are confirmed by the institute at admission. Any ADIVAS course-completion certificate is an institute certificate; it is not a university degree, an externally accredited qualification or a vendor certification (such as AWS or Microsoft) unless the institute states so in writing.

Curriculum 0.1 · Draft: written for ADIVAS and awaiting academic review and approval. Topics and weeks may change before your batch starts.

Your skill trail

You move through 8 stations. Each week builds one skill you can show, not just a topic you have heard.

  1. Logic and first programs

    Turn problems into algorithms and write simple C programs.

    • Week 1 Think like a programmer
    • Week 2 C basics: data, input and output
  2. Control flow

    Use decisions and loops confidently with trace tables and test cases.

    • Week 3 Making decisions
    • Week 4 Loops and tracing
  3. Functions, arrays and pointers

    Structure programs with functions and arrays and understand pointers.

    • Week 5 Functions
    • Week 6 Arrays and strings
    • Week 7 Pointers
  4. Records, files, C++ objects and foundation project

    Store data in structs and files, model it with a C++ class and deliver the foundation mini-project.

    • Week 8 Structures and file basics
    • Week 9 From C to C++: classes and objects
    • Week 10 Debugging and mini-project demo
  5. Memory and pointers in depth

    Understand memory layout and manage heap memory safely.

    • Week 11 Pointers and the memory model
    • Week 12 Dynamic memory and memory safety
  6. Data structures and algorithms

    Implement core data structures and analyse algorithms.

    • Week 13 Linked lists
    • Week 14 Stacks, queues and trees
    • Week 15 Searching, sorting and complexity
  7. Modern C++

    Use the STL, templates, smart pointers and RAII.

    • Week 16 Modern C++: STL and templates
    • Week 17 Smart pointers and RAII
  8. Debugging and capstone project

    Debug crashes systematically and present the advanced project.

    • Week 18 Debugging, profiling and project demo
  9. Student Marks Manager (C with a C++ class version)

    Your project, reviewed by a trainer.

The ADIVAS mastery ladder: how each skill is recognised
  1. Explored You have seen the idea and tried a first example.
  2. Practising You can do it with hints and keep improving.
  3. Proficient You complete the weekly practical task correctly on your own.
  4. Proven You apply it in a project reviewed by your trainer.

Skill-level tracking is being added to the learner workspace. Your trainer already reviews weekly practical work.

What you will be able to do

  • Express a solution as an algorithm or flowchart and trace it by hand.
  • Write C programs using variables, input/output, decisions, loops, functions and arrays.
  • Use pointers, structs and files correctly and build a simple C++ class.
  • Debug with compiler warnings, tracing and test tables and deliver a mini-project.
  • Allocate and release dynamic memory safely and find memory errors with sanitizers.
  • Implement linked lists, stacks, queues and trees and compare algorithms using Big-O reasoning.
  • Use STL containers, templates, smart pointers and RAII in modern C++.
  • Debug crashes with gdb and sanitizers and deliver a tested data-structure project.

Who it suits

  • School Strong Class 11-12 students who want one continuous path from first program to data structures.
  • College College students who want a complete C/C++ programme for course work and technical interviews.
  • Professional Career changers and working professionals building C/C++ skills from the start.

Prerequisites: Comfortable use of a computer and basic school mathematics. No prior programming needed. Tools: GCC or Clang compiler (MinGW-w64 on Windows), Visual Studio Code or Code::Blocks, GDB debugger, Valgrind or AddressSanitizer (Linux, or WSL on Windows), Git, A C++17 or later compiler.

Weekly plan

Logic and first programs Weeks 1–2

Week 1: Think like a programmer

Theory
  • Problems, algorithms and flowcharts
  • Sequence, decision and repetition
  • Installing GCC and VS Code; compile and run
Lab
Install a C compiler and editor, compile and run Hello World, then draw a flowchart and numbered steps for finding the largest of three marks.
Homework
Write an algorithm for withdrawing cash from an ATM and trace it with two example inputs.
Deliverable
A flowchart and a compiling Hello program saved in a Week-1 folder.
Weekly checkpoint
Order the steps of an algorithm; trace a small flowchart.
You will be able to
Express a solution as an algorithm or flowchart and trace it by hand.

Week 2: C basics: data, input and output

Theory
  • Variables and the types int, float, char
  • printf and scanf format specifiers
  • Arithmetic operators and integer division
Lab
Write a program that reads quantity and unit price in ₹ and prints the bill with 18% GST, then explain why 7/2 gives 3.
Homework
Write a temperature converter and a simple-interest calculator.
Deliverable
bill.c with sample runs pasted as comments.
Weekly checkpoint
Predict outputs of five short snippets involving int and float.
You will be able to
Write C programs using variables, input/output, decisions, loops, functions and arrays.
Control flow Weeks 3–4

Week 3: Making decisions

Theory
  • if, else-if ladders and nested conditions
  • Relational and logical operators; = versus ==
  • switch and menu-driven programs
Lab
Build a grade calculator and a leap-year checker. Before coding, write a table of test inputs including boundary values.
Homework
Write a menu program (1 Add, 2 Subtract, 3 Multiply, 4 Divide) that refuses division by zero.
Deliverable
Two programs plus a written test table.
Weekly checkpoint
Debug an if statement that uses = by mistake; choose good test inputs.
You will be able to
Write C programs using variables, input/output, decisions, loops, functions and arrays.

Week 4: Loops and tracing

Theory
  • for, while and do-while
  • break and continue
  • Nested loops and patterns
  • Trace tables
Lab
Print a multiplication table, the sum of digits of a number and a triangle pattern; trace each loop on paper first.
Homework
Write a program that reads marks until the user enters -1 and prints the average.
Deliverable
A trace table and three loop programs.
Weekly checkpoint
Predict loop output and find one off-by-one bug.
You will be able to
Write C programs using variables, input/output, decisions, loops, functions and arrays.
Functions, arrays and pointers Weeks 5–7

Week 5: Functions

Theory
  • Declaration, definition and calling
  • Parameters, return values and scope
  • Pass by value
  • Recursion: factorial and Fibonacci
Lab
Refactor the bill program into functions (readInput, calcGst, printBill) and test each function with five inputs.
Homework
Write isPrime(n) and use it to list primes up to 100.
Deliverable
A modular program with one test table per function.
Weekly checkpoint
Predict output when a function changes its parameter; identify scope errors.
You will be able to
Write C programs using variables, input/output, decisions, loops, functions and arrays.

Week 6: Arrays and strings

Theory
  • One- and two-dimensional arrays
  • Array bounds and common errors
  • Strings and the null terminator; string.h
  • Linear search and bubble sort
Lab
Read marks of 10 students, then print the average, highest, lowest and search for a given mark; reverse a string without using strrev.
Homework
Sort 8 numbers with bubble sort and show the array after each pass.
Deliverable
marks.c and a pass-by-pass sorting table.
Weekly checkpoint
Find an out-of-bounds bug; trace a bubble sort pass.
You will be able to
Write C programs using variables, input/output, decisions, loops, functions and arrays.

Week 7: Pointers

Theory
  • Addresses and the & and * operators
  • Pointers and arrays
  • Passing pointers to functions (swap)
  • NULL and common pointer bugs
Lab
Write swap(), a function that doubles a value through a pointer and a loop that walks an array with a pointer; draw a memory picture.
Homework
Explain in your own words the difference between p and *p with two diagrams.
Deliverable
pointers.c and a hand-drawn memory diagram.
Weekly checkpoint
Match pointer expressions to meanings; predict output of a pointer snippet.
You will be able to
Use pointers, structs and files correctly and build a simple C++ class.
Records, files, C++ objects and foundation project Weeks 8–10

Week 8: Structures and file basics

Theory
  • struct and arrays of struct
  • Opening, reading, writing and closing text files
  • Checking fopen for NULL
  • Designing a record format
Lab
Create a Student struct, save five records to students.txt and load them back; test what happens when the file is missing.
Homework
Add search by roll number and plan the mini-project menu.
Deliverable
Working save/load code and the mini-project plan.
Weekly checkpoint
Find the missing NULL check; order the steps to save records.
You will be able to
Use pointers, structs and files correctly and build a simple C++ class.

Week 9: From C to C++: classes and objects

Theory
  • cin/cout, references and the C++ string and vector
  • Classes, objects and constructors
  • private/public and encapsulation
  • Introduction to inheritance
Lab
Convert the Student struct into a class with a validating constructor and a display() method; store students in a std::vector.
Homework
Add a Teacher class that shares a Person base class and explain what is reused.
Deliverable
student.cpp with a short design note.
Weekly checkpoint
Scenario questions on encapsulation; read a small class and predict its output.
You will be able to
Use pointers, structs and files correctly and build a simple C++ class.

Week 10: Debugging and mini-project demo

Theory
  • Reading compiler errors and warnings (-Wall)
  • Debugging with print statements and gdb basics
  • Writing test tables
  • Presenting and reviewing code
Lab
Fix five seeded bugs (missing return, off-by-one, uninitialised variable, wrong operator, missing NULL check) and then demo your Student Marks Manager.
Homework
Write a short reflection on the three bugs that cost you the most time.
Deliverable
Final mini-project with test table and reflection.
Weekly checkpoint
Debugging scenario questions and a live demo with questions from the trainer.
You will be able to
Debug with compiler warnings, tracing and test tables and deliver a mini-project.
Memory and pointers in depth Weeks 11–12

Week 11: Pointers and the memory model

Theory
  • Stack, heap and static memory
  • Pointer arithmetic and pointers to pointers
  • const with pointers; function pointers
  • Reading memory diagrams
Lab
Print addresses and sizeof of variables, arrays and struct members, then draw the memory layout of a small program and verify it with a debugger or printed addresses.
Homework
Write a function pointer table for add, subtract and multiply and call it in a loop.
Deliverable
Memory diagram with printed address evidence.
Weekly checkpoint
Predict output of pointer arithmetic on an int array; match memory regions to examples.
You will be able to
Allocate and release dynamic memory safely and find memory errors with sanitizers.

Week 12: Dynamic memory and memory safety

Theory
  • malloc, calloc, realloc and free
  • Leaks, dangling pointers and double free
  • new and delete in C++
  • AddressSanitizer and Valgrind
Lab
Build a growable integer array, then deliberately introduce a leak, a use-after-free and an overflow and find each with AddressSanitizer or Valgrind.
Homework
Write a checklist of ten memory-safety rules from your lab findings.
Deliverable
dynarray.c plus sanitizer reports for each seeded bug.
Weekly checkpoint
Spot memory errors in code snippets; choose the correct fix.
You will be able to
Allocate and release dynamic memory safely and find memory errors with sanitizers.
Data structures and algorithms Weeks 13–15

Week 13: Linked lists

Theory
  • Nodes, head pointer and traversal
  • Insert at head, tail and middle
  • Deleting and reversing a list
  • Testing empty, one-node and many-node cases
Lab
Implement a singly linked contact list with add, find, delete and reverse; write tests for the three list sizes.
Homework
Implement a doubly linked list insert and compare it with the singly linked version.
Deliverable
contacts list with a test log.
Weekly checkpoint
Order pointer updates for insert; trace a delete on paper.
You will be able to
Implement linked lists, stacks, queues and trees and compare algorithms using Big-O reasoning.

Week 14: Stacks, queues and trees

Theory
  • Stack and queue with arrays and with lists
  • Bracket matching with a stack
  • Binary search tree: insert, search and in-order traversal
  • Recursion on trees
Lab
Implement a stack to check balanced brackets in expressions and build a BST of roll numbers with in-order printing.
Homework
Draw the BST created by inserting 50, 30, 70, 20, 40 and show its in-order output.
Deliverable
bracket checker and BST program.
Weekly checkpoint
Trace BST insertion; choose between stack and queue for a scenario.
You will be able to
Implement linked lists, stacks, queues and trees and compare algorithms using Big-O reasoning.

Week 15: Searching, sorting and complexity

Theory
  • Big-O: O(1), O(log n), O(n), O(n^2)
  • Binary search and its precondition
  • Insertion sort, merge sort and quicksort ideas
  • Measuring running time
Lab
Time linear and binary search and two sorting algorithms on 10,000 and 100,000 random numbers and record the results in a table.
Homework
Explain why binary search fails on unsorted data using an example.
Deliverable
Timing table with a one-paragraph conclusion.
Weekly checkpoint
Match algorithms to complexities; predict which is faster for large n.
You will be able to
Implement linked lists, stacks, queues and trees and compare algorithms using Big-O reasoning.
Modern C++ Weeks 16–17

Week 16: Modern C++: STL and templates

Theory
  • vector, map, unordered_map and set
  • STL algorithms and lambdas
  • Function and class templates
  • Choosing the right container
Lab
Rewrite a word-frequency counter with std::unordered_map and sort the result with std::sort and a lambda; create a template class Stack<T>.
Homework
Compare the vector, list and deque for inserting at the front and explain the results.
Deliverable
wordfreq.cpp and a templated Stack<T>.
Weekly checkpoint
Read a template function and predict output; select a container for a scenario.
You will be able to
Use STL containers, templates, smart pointers and RAII in modern C++.

Week 17: Smart pointers and RAII

Theory
  • unique_ptr, shared_ptr and weak_ptr
  • RAII and the rule of zero
  • Move semantics basics
  • Exceptions and resource safety
Lab
Refactor the raw-pointer contact list to use unique_ptr nodes and write a small RAII class that closes a file in its destructor.
Homework
List three bugs that smart pointers prevent and one situation where shared_ptr is a poor choice.
Deliverable
Refactored list with a clean sanitizer run.
Weekly checkpoint
Explain why a unique_ptr copy fails; choose ownership types for scenarios.
You will be able to
Use STL containers, templates, smart pointers and RAII in modern C++.
Debugging and capstone project Weeks 18

Week 18: Debugging, profiling and project demo

Theory
  • gdb: breakpoints, backtrace and watch
  • Sanitizers and core dumps
  • Regression tests and assert
  • Code review checklist
Lab
Debug a crashing program with gdb and AddressSanitizer, write a regression test, then demo your contact directory project with timings.
Homework
Write a review of a classmate's code using the checklist.
Deliverable
Debug report, final project and review notes.
Weekly checkpoint
Debugging scenario questions and a project viva.
You will be able to
Debug crashes with gdb and sanitizers and deliver a tested data-structure project.

Sample lessons

Week 4

Loops and trace tables

A loop repeats a block of code while a condition is true. Before running a loop on the computer, you can run it on paper with a trace table: one row per repetition, one column per variable. Tracing is the fastest way to understand a loop and to find off-by-one mistakes, such as running one time too many or too few.

  1. 1Check the condition
  2. 2Run the loop body
  3. 3Update the variable
  4. 4Repeat or exit

Step by step

  1. Write the loop and list its variables: start value, condition, update.
  2. Draw a table with a column for each variable and for the output.
  3. Fill one row per repetition, updating the variables exactly as the code does.
  4. Stop when the condition becomes false and note the final values.
  5. Run the program and compare its output with your table.

In real life

A shop assistant adds the prices of 5 items on a bill one by one. A loop does the same: it repeats "add next price" until all 5 items are done.

Worked example

Problem. Trace: int sum = 0; for (int i = 1; i <= 4; i++) { sum = sum + i; } What is sum at the end?

Solution. i=1: sum=1; i=2: sum=3; i=3: sum=6; i=4: sum=10; then i=5 fails the condition i <= 4. Final sum is 10.

Common mistakes

  • Using <= when < is needed (or the reverse), giving one repetition too many or too few.
  • Forgetting to update the loop variable, which creates an infinite loop.
  • Changing the loop variable inside the body without meaning to.

Try it yourself

  • Trace for (int i = 10; i > 0; i -= 3) and list the values of i.
  • Write a loop that prints the table of 7 up to 10 times, then trace the first three rows.
  • Find the bug: for (int i = 1; i <= 5; i--) { printf("%d", i); }

Week 7

Pointers: addresses and values

Every variable lives at an address in memory. A pointer is a variable that stores such an address. The & operator gives the address of a variable and the * operator reads or writes the value at an address. Pointers let a function change the caller's variables and are the basis of arrays, strings and dynamic data structures in C.

  1. Variable x holds 5
  2. Address of x, for example 0x7ffe10
  3. Pointer p holds that address
  4. *p reads or writes x

Step by step

  1. Declare int x = 5; and print x and &x.
  2. Declare int *p = &x; and print p and *p.
  3. Change the value with *p = 9; and print x again.
  4. Write void swap(int *a, int *b) and call it as swap(&m, &n).
  5. Draw boxes for x and p with an arrow from p to x.

In real life

A courier needs a delivery address, not the house itself. A pointer is that address; following it (dereferencing) reaches the real house.

Worked example

Problem. int a = 4, b = 9; swap(&a, &b); What are a and b if swap exchanges the values through pointers?

Solution. swap receives the addresses of a and b and exchanges the values stored there, so a becomes 9 and b becomes 4.

Common mistakes

  • Using a pointer before it points to valid memory (uninitialised pointer).
  • Confusing p (the address) with *p (the value at the address).
  • Passing x instead of &x to a function that expects a pointer.

Try it yourself

  • Predict the output: int x = 3; int *p = &x; *p = *p + 2; printf("%d", x);
  • Write a function that doubles a number in place using a pointer.
  • Draw the memory picture for int arr[3] and a pointer to arr[1].

Week 12

Dynamic memory and leak-free code

Local variables disappear when a function ends, but sometimes the size of data is known only at run time, such as the number of students typed by the user. malloc asks the system for a block on the heap and returns its address. You must release it with free exactly once. Forgetting free leaks memory; using it after free or freeing twice causes undefined behaviour. Tools such as AddressSanitizer and Valgrind find these errors.

  1. 1malloc requests a block
  2. 2Check for NULL
  3. 3Use the block
  4. 4free returns it
  5. 5Set pointer to NULL

Step by step

  1. Read n from the user and allocate int *marks = malloc(n * sizeof(int)).
  2. Check that marks is not NULL before using it.
  3. Fill and print the values using marks[i].
  4. Call free(marks) and set marks = NULL.
  5. Compile with -fsanitize=address -g and run to confirm there are no errors or leaks.

In real life

Renting a hall for a function: you book the size you need, use it and must hand it back. If nobody returns the keys, the hall stays blocked for everyone.

Worked example

Problem. You allocate int *a = malloc(10 * sizeof(int)); then write a[10] = 1;. What is wrong?

Solution. The valid indexes are 0 to 9, so a[10] writes outside the block (heap buffer overflow). Fix the index or allocate 11 ints; AddressSanitizer reports this exactly.

Common mistakes

  • Not checking malloc for NULL.
  • Calling free twice on the same pointer.
  • Losing the only pointer to a block before freeing it, which leaks it.

Try it yourself

  • Write a program that allocates an array for n marks, finds the average and frees the memory.
  • Use realloc to grow the array when the user adds more marks and explain what happens if realloc fails.
  • Intentionally leak memory, then find it with Valgrind or LeakSanitizer.

Week 13

Linked lists step by step

A linked list stores items in separate nodes. Each node holds data and a pointer to the next node, and a head pointer remembers the first node. Unlike an array, inserting at the front does not move other items, but reaching the n-th item means following n links. Most list bugs come from changing pointers in the wrong order or forgetting the empty-list case.

  1. 1head
  2. 23 | next
  3. 35 | next
  4. 48 | next
  5. 5NULL

Step by step

  1. Define struct Node { int data; struct Node *next; };
  2. Write insertAtHead: allocate a node, set node->next = head, then head = node.
  3. Write printList that walks from head until the pointer is NULL.
  4. Write deleteValue that finds the node, links its previous node to the next one and frees it.
  5. Test with an empty list, one node and several nodes.

In real life

A treasure hunt where each clue tells where the next clue is hidden: you can only reach clue 4 by following clues 1, 2 and 3.

Worked example

Problem. The list is 3 -> 5 -> NULL. After insertAtHead(1), what is the list?

Solution. The new node points to the old head (3) and becomes the head: 1 -> 3 -> 5 -> NULL.

Common mistakes

  • Setting head = new node before linking new->next, losing the old list.
  • Dereferencing NULL when the list is empty.
  • Freeing a node before reading its next pointer.

Try it yourself

  • Write a function that counts nodes.
  • Write reverseList that reverses the list in place and draw the pointers after each step.
  • List three test cases for deleteValue.

Try the questions

The same skills are asked at three levels: School (Classes 6–12), College and Professional. Switch the level and the language (English or Tamil), and say how sure you are before you check: knowing what you are unsure about is part of learning.

Classes 6–12: everyday examples, no prior knowledge. Practice only. Nothing here is graded or saved.

Question 1 / 8 · Order the steps of an algorithm

Put the steps of making tea in a sensible order. A clear list of steps like this is called an algorithm.

  1. 1Understand the problem
  2. 2Write the steps (algorithm)
  3. 3Write the code
  4. 4Test and fix
  1. Add tea powder and milk
  2. Serve hot
  3. Boil the water
  4. Strain the tea into a cup
  5. Add sugar
How sure are you?

Projects

Student Marks Manager (C with a C++ class version)

A tuition centre in Madurai records marks for 5 subjects per student on paper. Build a console program in C that stores student records, calculates totals and averages, assigns grades, saves everything to a text file and loads it again. Then rewrite the Student record as a C++ class.

Tasks

  1. Define a struct Student with roll number, name and five marks, and keep an array of students.
  2. Write functions for add, list, search by roll number, total/average and grade.
  3. Save all records to students.txt and load them when the program starts, handling a missing file.
  4. Write a test table with at least 8 inputs, including boundary marks such as 0, 34, 35 and 100.
  5. Rewrite Student as a C++ class with private data, a constructor with validation and a display() method.

Sample input

Roll 101, Name Anu, Marks 78 82 91 67 74

Expected output

Anu: total 392, average 78.4, grade B. The record is present again after restarting the program.

How it is assessed

CriterionWeight
Correct calculations and grades25%
Functions, structs and arrays used cleanly20%
File save/load with error handling20%
Test table and debugging evidence20%
C++ class conversion and readability15%

Stretch challenge: Add sorting by average and a menu option that lists the top three students.

Contact Directory with Linked List, BST and STL Comparison

Build a contact directory for a small business that holds 20,000 contacts. Implement the storage three ways, measure them and recommend one with evidence: a linked list in C-style code, a binary search tree, and std::unordered_map with smart pointers.

Tasks

  1. Implement insert, search by phone number and delete for the linked list and for the BST.
  2. Implement the same operations with std::unordered_map and std::unique_ptr<Contact>.
  3. Generate 20,000 test contacts and time 1,000 searches for each version with std::chrono.
  4. Run every version under AddressSanitizer and Valgrind (or LeakSanitizer) and fix all reported errors.
  5. Write a one-page report with a results table and a justified recommendation.

Sample input

20,000 generated contacts; 1,000 random phone-number searches

Expected output

A table of timings (milliseconds) for list, BST and hash map, a clean sanitizer log and a recommendation such as "use unordered_map for lookups".

How it is assessed

CriterionWeight
Correct data-structure implementations25%
Memory safety (clean sanitizer and leak reports)25%
Measurement method and results table20%
Modern C++ usage (STL, smart pointers, RAII)15%
Report clarity and recommendation15%

Stretch challenge: Add persistence to a file and a unit test suite for the delete operation covering first, middle, last and missing items.

How you are assessed

Each week: five short questions (concept, code reading, debugging), a graded lab with a test table and, from week 11, a sanitizer-clean run, plus a two-line reflection on what failed first.

Practical work. Two practical assessments: the foundation mini-project at week 10 (test table, explanation, seeded bug) and the advanced project at week 18 (clean sanitizer output, timings, viva).

What trainers look forWeight
Correct output and test evidence30%
Memory safety and debugging25%
Code structure and data-structure choice20%
Modern C++ usage10%
Explanation and documentation15%

Where this can lead

  • Prepares you for junior programming practice and for further study in systems, embedded and data-structure topics.
  • Builds the debugging and memory-safety habits used in professional C/C++ work.

These describe skills you will build. ADIVAS does not guarantee jobs, placement or salary.