Internship Training Programs-C++

Download as pdf or txt
Download as pdf or txt
You are on page 1of 18

OCAC Training Centre

INTERNSHIP TRAINING PROGRAM

C++
About OCAC Training Centre

OCAC Training Centre is the state-of-the-art training centre established by


OCAC the Designated Technical Directorate of Information Technology
Department, Govt. of Odisha to develop the IT skills of learners and make them
job-ready/ workforce ready with support from Odisha Knowledge Corporation
Ltd. (OKCL).
OCAC Training Centre provide Summer Training & Internship for all the
technical Graduates in the state of Odisha.

Here are some key benefits of the program that we believe will be of interest
to students:
 Learn from expert trainers with real-world experience in C++ / Python / Java.
 Work on a short-term project that showcases their technical skills.
 Get personalized guidance and feedback to help them excel.
 Receive a completion certificate from OCAC, a reputed government organization.
 Develop essential interview skills to ace technical and personal interviews.
 Guidance & opportunity for Placement

1
Content
 Introduction

 Course Curriculum for Internship Training in C++

 Syllabus for Brush-up Session on C++

 Syllabus for C++ Advanced

 Projects Using C++

 Software Project Development Process

2
Introduction
The OCAC Training Centre offers Internship Training programs to B-Tech and MCA students
during the summer. These internship programs provide students with an opportunity to
learn a programming language through assignment-based learning systems. The training
program is designed to enhance students' practical skills and knowledge in their chosen
programming language.
Here are some key features of the Internship Training program:
1. Programming Language Learning: Students will undergo classroom learning sessions
where they will be taught the fundamentals and advanced concepts of a specific
programming language. The focus is on developing a strong understanding of the
language and its syntax.

2. Assignment-Based Learning Systems: The training program utilizes assignment-based


learning systems, which means students will receive assignments related to the
topics covered in the classroom. These assignments are designed to reinforce the
theoretical concepts learned and encourage practical application.
3. Small Project Development: As part of the internship training, students will be
required to work on a small project based on the learning outcomes. This project
allows students to apply their knowledge and skills in a real-world scenario, fostering
practical experience and problem-solving abilities.
4. Duration: The total duration of the Internship Training program is 60 hours. This
includes 40 hours of classroom learning, where students receive theoretical
instruction and hands-on practice, and an additional 20 hours dedicated to project
development.

The Internship Training program aims to provide students with a comprehensive learning
experience that combines theoretical knowledge with practical application. By completing
assignments and working on a small project, students gain valuable skills and experience in
their chosen programming language, preparing them for future career opportunities in the
field of software development.

3
Course Curriculum for Internship Training in C++:
The Internship Training program in C++ is designed to provide B-Tech and MCA students
with hands-on experience in the C++ programming language. The program focuses on
building a strong foundation in C++ concepts, developing practical programming skills, and
fostering problem-solving abilities. Students will engage in classroom learning sessions,
assignment-based learning systems, and project development to enhance their
understanding and proficiency in C++.
Course Curriculum:
1. Brush-up Session on Core C++ (10 hours):
 Introduction to C++ programming language
 Variables, data types, and operators in C++
 Control flow statements: if-else, loops, and switch statements
 Functions and function overloading
 Arrays and pointers in C++
 Object-oriented programming (OOP) basics in C++
Assignment:
1. Introduction to C++ programming language: a. Write a program that prints the
Fibonacci series using recursion. b. Create a program that generates a random
number and asks the user to guess it. c. Implement a program that calculates the
factorial of a given number using iteration.

2. Variables, data types, and operators in C++: a. Write a program that converts
temperature from Celsius to Fahrenheit and vice versa. b. Create a program that
calculates the area and circumference of a circle based on user input. c. Implement a
program that swaps the values of two variables without using a temporary variable.
3. Control flow statements: if-else, loops, and switch statements: a. Write a program
that determines if a given number is even or odd using if-else statements. b. Create a
program that prints all prime numbers between a given range using a while loop. c.
Implement a program that simulates a simple calculator using a switch statement.

4. Functions and function overloading: a. Write a program that calculates the factorial
of a number using a recursive function. b. Create a program that finds the maximum
of three numbers using function overloading. c. Implement a program that checks if
a given string is a palindrome using a function.
5. Arrays and pointers in C++: a. Write a program that finds the sum and average of
elements in an array using pointers. b. Create a program that sorts an array of
integers in ascending order using the bubble sort algorithm. c. Implement a program
that searches for a specific element in an array using a pointer.

4
6. Object-oriented programming (OOP) basics in C++: a. Write a program that
demonstrates encapsulation by implementing a class for a bank account. b. Create a
program that shows inheritance by implementing a class hierarchy for different
shapes. c. Implement a program that showcases polymorphism by creating a base
class and derived classes with overridden methods.

2. Advanced C++ Concepts (40 hours):


 Classes and objects in C++
 Inheritance and polymorphism
 Templates and generic programming
 Exception handling in C++
 File handling and stream I/O operations
 Standard Template Library (STL)
 Smart pointers and memory management
 Multi-threading and concurrency in C++
Assignment:

1. Classes and objects in C++: a. Design a class representing a student with attributes
like name, age, and grade. Implement methods to calculate the average grade and
display student information. b. Create a class hierarchy for different shapes (circle,
square, triangle) with appropriate inheritance and polymorphism. c. Implement a
class representing a bank account with methods for deposit, withdrawal, and
balance inquiry.

2. Inheritance and polymorphism: a. Design a base class "Vehicle" and derived classes
representing different types of vehicles. Implement a method to calculate the fuel
efficiency of each vehicle type. b. Create a base class "Animal" and derived classes
representing different animals. Implement polymorphic methods for sound and
movement specific to each animal type. c. Design a class hierarchy for a computer
game with a base class "GameObject" and derived classes representing different
game objects. Implement polymorphic methods for rendering and updating the
game objects.
3. Templates and generic programming: a. Implement a generic stack class using
templates that supports operations like push, pop, and peek. b. Design a template
function to find the maximum element in an array of any data type. c. Create a
template class for a linked list that can store elements of any data type.
4. Exception handling in C++: a. Write a program that reads input from a file and
handles exceptions such as file not found or invalid data. b. Design a function that

5
divides two numbers and handles exceptions for division by zero. c. Create a
program that performs input validation and throws custom exceptions for invalid
user inputs.

5. File handling and stream I/O operations: a. Write a program that reads data from a
text file, manipulates the data, and writes the modified data to a new file. b. Design
a program that reads a CSV file containing student records and performs operations
like sorting and filtering based on user input. c. Create a program that reads binary
data from a file, performs operations like encryption or compression, and writes the
modified data to a new file.
6. Standard Template Library (STL): a. Use the vector container to implement a dynamic
array that supports resizing and element manipulation. b. Design a program that
uses the map container to create a phonebook with names and corresponding
phone numbers. c. Implement a program that utilizes the algorithm library to find
the maximum element in a container and perform sorting operations.
7. Smart pointers and memory management: a. Design a program that uses unique_ptr
to manage dynamic memory for a complex data structure like a binary tree. b.
Implement a program that uses shared_ptr to handle memory management for a
resource shared among multiple objects. c. Create a program that showcases
weak_ptr to prevent circular references and manage memory in a complex object
hierarchy.
8. Multi-threading and concurrency in C++: a. Write a program that utilizes multiple
threads to perform parallel computation and measure the execution time. b.
Implement a program that demonstrates thread synchronization using mutexes and
condition variables to solve the producer-consumer problem. c. Create a program
that utilizes atomic operations and memory barriers to ensure thread safety in a
shared data structure.

3. Project Work using C++ (20 hours): Students will undertake a small-scale project
using C++ based on the concepts learned during the training. The project will provide
practical experience in designing, implementing, and testing a software application
or system using C++.

6
Syllabus for Brush-up Session on C++[ 10hrs]
The Brush-up Session on Core C++ is designed to review and reinforce the fundamental
concepts of C++ programming. Students will learn about the basics of the C++ language,
including variables, data types, operators, control flow statements, functions, arrays,
pointers, and object-oriented programming (OOP) basics. The session aims to refresh
students' knowledge and understanding of core C++ concepts, providing them with a solid
foundation for advanced C++ programming and application development.
Introduction to C++ programming language
1. Introduction to C++ Programming Language
 History and features of C++
 Comparison with C programming language
 Overview of the C++ compilation process
2. Variables, Data Types, and Operators in C++
 Variables and data types in C++
 Basic data types: integer, floating-point, character, boolean
 Declaration and initialization of variables
 Arithmetic, assignment, relational, logical, and bitwise operators
3. Control Flow Statements: if-else, Loops, and Switch Statements
 Conditional statements: if-else, nested if-else
 Looping statements: while, do-while, for
 Break and continue statements
 Switch statement and the use of case and default
4. Functions and Function Overloading
 Function declaration and definition
 Parameters and return types
 Function overloading and function templates
 Call by value and call by reference
 Function prototypes and forward declaration
5. Arrays and Pointers in C++
 Declaring and accessing arrays
 Multi-dimensional arrays

7
 Pointers and memory addresses
 Pointer arithmetic and dereferencing
 Dynamic memory allocation and deallocation
6. Object-Oriented Programming (OOP) Basics in C++
 Introduction to object-oriented programming
 Classes and objects in C++
 Data members and member functions
 Constructors and destructors
 Access specifiers: public, private, and protected

8
Syllabus for C++ Advanced
The Advanced C++ Concepts module covers advanced topics and techniques in C++
programming. Students will learn about classes and objects, inheritance and
polymorphism, templates and generic programming, exception handling, file handling
and stream I/O operations, the Standard Template Library (STL), smart pointers and
memory management, and multi-threading and concurrency in C++. The module aims to
enhance students' proficiency in C++ programming and prepare them for developing
complex applications and systems.Decorators and Generators
1. Classes and Objects in C++

 Review of classes and objects

 Constructors and destructors

 Member functions and data members

 Access specifiers: public, private, and protected

 Friend classes and functions

 Static members and member initialization

2. Inheritance and Polymorphism

 Inheritance types: single, multiple, multilevel, and hierarchical

 Base and derived classes

 Virtual functions and runtime polymorphism

 Abstract classes and pure virtual functions

 Function overriding and late binding

 Dynamic casting and type identification

3. Templates and Generic Programming

 Introduction to templates

 Function templates and class templates

 Template specialization and explicit instantiation

 Generic algorithms and containers

 Template metaprogramming

 Template template parameters

4. Exception Handling in C++

 Basics of exception handling

 try-catch blocks and throw statements

9
 Handling multiple exceptions

 Exception specifications

 Standard exceptions and custom exception classes

 Exception safety and resource management

5. File Handling and Stream I/O Operations

 File streams and stream classes

 Opening and closing files

 Reading from and writing to files

 Error handling and file flags

 File position and seek operations

 Binary file I/O

6. Standard Template Library (STL)

 Overview of STL and its components

 Containers: vector, list, deque, stack, queue, etc.

 Algorithms: sorting, searching, manipulating containers

 Iterators: input, output, forward, bidirectional, and random access iterators

 Function objects and predicates

 Functors and lambda expressions

7. Smart Pointers and Memory Management

 Memory management in C++

 Dynamic memory allocation with new and delete

 Introduction to smart pointers: unique_ptr, shared_ptr, and weak_ptr

 Resource management and avoiding memory leaks

 Custom deleters and pointer aliasing

8. Multi-threading and Concurrency in C++

 Introduction to multi-threading

 Thread creation and management

 Synchronization mechanisms: mutexes, condition variables, and locks

 Thread safety and race conditions

 Thread synchronization and data sharing

 Atomic operations and memory barriers

10
Projects Using C++
Here's a table that provides details of the use-cases and technologies/tools required
for each project, implemented using C++:

Project Name Module-wise Technologies/Tools/APIs


Detailed Use-Cases Required

Text-based - Player movement - C++ programming language


Adventure Game and interaction

- Inventory
management

- Puzzle solving and


quest progression

Library - Book cataloging and - C++ programming language


Management search
System

- Borrowing and
returning books

- Fine calculation and


notification

Calculator - Basic arithmetic - C++ programming language


Application operations

- Scientific
calculations and unit
conversions

- Complex number
calculations

File Encryption - File encryption - C++ programming language


and using various
algorithms

Decryption - File decryption - Encryption algorithms (e.g.,


AES, RSA)

- Password-based
encryption

Student Grade - Grade entry and - C++ programming language


Tracker calculation

11
- Average calculation
and reporting

- Grade visualization
and analytics

Chess Game - Chess piece - C++ programming language


movement and
capturing

- Checkmate
detection and game
termination

Sudoku Solver - Sudoku board input - C++ programming language


and validation

- Backtracking
algorithm for solving

Railway - Train search and - C++ programming language


Reservation availability
System

- Seat reservation
and cancellation

- Ticket generation
and printing

Image Processing - Image filtering and - C++ programming language


enhancement

- Edge detection and


object recognition

Quiz - Question bank - C++ programming language


Management management
System

- Quiz creation and


scheduling

- Scoring and
performance analysis

Employee Payroll - Employee - C++ programming language


System information
management

12
- Salary calculation
and deductions

- Payslip generation
and record-keeping

Morse Code - Text to Morse code - C++ programming language


Translator conversion

- Morse code to text


conversion

Music Player - Audio playback - C++ programming language


controls

- Playlist
management and
creation

Tic-Tac-Toe Game - Player moves and - C++ programming language


game logic

- Game modes
(player vs. player,
player vs. AI)

Contact - Contact entry and - C++ programming language


Management management
System

- Contact search and


filtering

- Contact import and


export

Maze Solver - Maze - C++ programming language


representation and
input

- Maze-solving
algorithms

Quiz Application - User-friendly GUI - C++ programming language


for quizzes

- Quiz taking and


score tracking

13
Movie Ticket - Movie selection and - C++ programming language
Booking System showtime display

- Seat selection and


booking

- E-ticket generation
and QR code
integration

Data Compression - File compression - C++ programming language


and using algorithms

Decompression - File decompression - Compression algorithms (e.g.,


Huffman coding, LZW)

Recipe Organizer - Recipe entry and - C++ programming language


categorization

- Ingredient-based
searching and
shopping lists

- Recipe sharing and


printing

Please note that the use-cases mentioned here are just examples, and you can
modify or add more based on your specific project requirements.

14
Software Project Development Process
To successfully complete the above projects within the given time frame and learn about
software project development, students can follow a step-by-step process based on the
Software Development Life Cycle (SDLC), incorporating various design concepts. Here's an
extended version of the process:
1. Project Understanding and Planning:
 Thoroughly understand the project requirements and objectives.
 Identify the stakeholders and their needs.
 Define project scope, constraints, and deliverables.
 Create a project plan with specific milestones and deadlines.
2. Requirement Gathering and Analysis:
 Conduct detailed requirement gathering sessions with stakeholders.
 Document user stories, use cases, and functional requirements.
 Use techniques like interviews, surveys, and brainstorming to gather
requirements.
 Analyze the gathered requirements and create a requirement specification
document.
3. Design Phase:
 Use the gathered requirements to design the system architecture.
 Design the database schema using Entity-Relationship (ER) diagrams.

 Create Data Flow Diagrams (DFDs) to illustrate data movement and processing
within the system.
 Design user interfaces using wireframes and mock-ups.
 Apply user interface design principles to ensure usability and accessibility.
4. Development Iterations:
 Break down the project into smaller tasks or user stories.
 Prioritize and tackle the tasks based on their importance and dependencies.

 Follow an iterative development approach, implementing one feature or


module at a time.
 Write clean, modular, and well-commented code using best practices.
5. Testing and Debugging:

15
 Conduct various types of testing, such as unit testing, integration testing, and
system testing.
 Write test cases to verify the functionality and identify any defects.

 Perform regression testing to ensure that new changes do not impact existing
features.
 Debug and fix any issues or bugs that arise during testing.
6. Integration and Deployment:
 Integrate the different components or modules to ensure they work together
seamlessly.
 Deploy the application to a development or testing environment.
 Perform system-level testing and user acceptance testing.
 Prepare the application for production deployment.
7. Documentation:
 Document the project, including its architecture, design, and usage
instructions.
 Create user manuals, technical documentation, and system documentation.
 Document any APIs, libraries, or tools used in the project.
 Include installation and configuration instructions for the application.
8. Presentation and Demonstration:
 Prepare a presentation or demo to showcase the completed project.
 Explain the project's features, functionality, and implementation details.

 Use diagrams, such as ER diagrams and DFDs, to illustrate the system design
and data flow.

 Discuss the user interface design choices and how they enhance user
experience.
9. Reflection and Learning:
 Reflect on the project development process and identify areas for
improvement.
 Evaluate the challenges faced, lessons learned, and skills acquired.
 Consider feedback from stakeholders and users for future enhancements.
 Document your learnings and make note of any future improvements to the
project.

16
By following this comprehensive process, incorporating the SDLC stages and design concepts
like use case design, ER diagrams, data flow diagrams, and user interface design, students can
effectively complete the projects within the given time frame while gaining valuable
experience in software project development.

Contact

17

You might also like