C / C++ Programming — Internship Tasks

Objective, Features, Technologies and tasks to learn C / C++ Programming fundamentals and practical skills.

Objective

Provide interns with strong foundational skills in C and C++ programming: problem solving, data structures, memory management, OOP (C++), and building small real-world programs. Emphasis on clean code, testing and documentation.


Features


Tools

GCC / G++ Clang CMake / Makefile GDB (debugger) Valgrind (memory checks) Git & GitHub

Beginner Level Tasks


Note: Out of the 4 main tasks below, you are required to complete any 3 tasks.

Tasks (4)

Goal

Implement core data structures from scratch: linked list, stack, queue, and binary search tree.

Requirements
  • Implement at least two DS in C or C++ with insert/delete/search
  • Write small driver programs to demonstrate functionality
  • Include complexity analysis comments
Deliverables
  1. GitHub repo with source code and README
  2. Sample input/output and short explanation

Goal

Solve algorithmic problems demonstrating sorting, searching, and greedy/dynamic approaches.

Requirements
  • Implement at least 3 problems (e.g., quicksort/mergesort, binary search, knapsack or interval scheduling)
  • Include test cases and measure runtime for different input sizes
Deliverables
  1. Source files and test inputs
  2. Report with algorithm choice and complexity

Goal

Build a small system utility demonstrating file handling, process creation, or inter-process communication.

Requirements
  • Examples: simple shell (command runner), log rotator, or producer-consumer using pipes
  • Handle errors gracefully and document edge cases
Deliverables
  1. Source code with instructions to compile and run
  2. Screenshots or sample runs

Goal

Build a small C++ application using classes, inheritance, STL containers and file persistence.

Requirements
  • Example: Library Management, Student Grade System, Inventory Manager
  • Use classes, inheritance (if applicable), and STL (vector/map/set)
  • Provide a Makefile or CMake and basic unit tests
Deliverables
  1. GitHub repo with code, build instructions and sample data
  2. Short README explaining design decisions

How to Submit Your Tasks

  1. For each task:
    • Create a separate document (DOC, DOCX or PDF) describing the task, compile/run commands, and include screenshots and sample input/output.
    • Include a README with exact build commands (gcc/g++, make, or cmake) and environment notes.
  2. Upload artifacts:
    • Push code to GitHub and share the repository link.
    • Upload large files to Google Drive (if any) and ensure view permissions.
  3. Submit links:
    • Go to the Task Submission page.
    • Paste your GitHub and document links clearly mentioning task numbers.

Tip: Provide reproducible build steps and include sample test inputs so reviewers can run your code quickly.