Internship Report

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 13

Internship Report

on
“Data Structures and Algorithm”

Submitted by
<Madhusudhan R M>
< USN: 1RV21CS084>

Submitted in partial fulfillment for the award of degree


of
BACHELOR OF ENGINEERING
in
Computer Science and Engineering
DEPARTMENT OF COMPUTER SCIENCE AND
ENGINEERING

2022-23
RV COLLEGE OF ENGINEERING®
(Autonomous Institution Affiliated to Visvesvaraya Technological University, Belagavi)

DEPARTMENT OF COMPUTER SCIENCE AND


ENGINEERING
Bengaluru – 560059

CERTIFICATE

Certified that the Internship work titled “Data Structures and Algorithm” carried out by
Madhusudhan R M, USN: 1RV21CS084 a bonafide student, submitted in partial fulfilment for
the award of Bachelor of Engineering in Computer Science and Engineering of RV College of
Engineering®, Bengaluru, affiliated to Visvesvaraya Technological University, Belagavi, during
the year 2022-23. It is certified that all corrections/suggestions indicated for internal assessment
have been incorporated in the report deposited in the departmental library. The Internship report
has been approved as it satisfies the academic requirement in respect of internship work prescribed
for the said degree.

Dr. Ramakanth Kumar P.


Head of Department
Department of CSE
RVCE, Bengaluru–59

Name of the Examiners Signature with Date

1.____________________ __________________

2.____________________ __________________
ACKNOWLEDGEMENT
We are indebted to our guide, Ms SHANTHA RANGA SWAMY for his guidance in the mechanics of
the internship.

We also express our gratitude to our committee members Dr. Minal Moharir, Dr.Ashok Kumar A,
Dr. Shantha Range Swamy department of Computer Science Engineering for their valuable
comments and suggestions.

Our sincere thanks to Dr. RAMAKANTH KP, Associate Professor and Head, Department of
COMPUTER SCIENCE RVCE for his support and encouragement.

We express sincere gratitude to our beloved Principal, Dr. K. N. Subramanya


for his appreciation towards this internship work.

We thank all the teaching staff and technical staff of the Computer Science Engineering
Table of Contents

Certificate from Industry/Organization (i)

Acknowledgement (ii)

Executive Summary (iii)

List of Figures (iv)

List of Tables (v)

Chapter 1
Profile of the Organization (COE)
1.1 Brief overview of the Organization (COE)

Chapter 2
Activities of the Organization (COE)

Chapter 3
Tasks Performed
3.1 Summary of the tasks performed during

Chapter 4
Reflections
4.1 Technical Knowledge acquired
4.2 Soft skills acquired

References and Annexures


INTRODUCTION

Data structure and algorithm are two fundamental concepts in computer science
that are crucial for developing efficient and scalable software systems. In
essence, data structures are specialized formats for organizing and storing data
in a computer's memory, while algorithms are a set of well-defined instructions
for solving a specific computational problem.

The importance of data structures and algorithms lies in their ability to optimize
the way data is stored and processed, leading to faster execution times, lower
memory usage, and improved software performance. The choice of data
structure and algorithm can have a significant impact on the efficiency and
scalability of software systems, making it essential for developers to understand
the underlying principles and best practices.
Data structures come in many forms, ranging from simple arrays and linked lists
to more complex structures like trees, graphs, and hash tables. Each data
structure has its unique strengths and weaknesses, making it suitable for specific
use cases. For instance, arrays are ideal for storing a fixed number of items of
the same type, while linked lists are better suited for situations where items can
be added or removed dynamically. Trees are useful for organizing hierarchical
data, while hash tables provide fast access to data based on key-value pairs.

Algorithms, on the other hand, are the procedures or rules that determine the
steps needed to solve a particular problem. They can be classified based on their
computational complexity, such as constant time, linear time, logarithmic time,
or exponential time. The complexity of an algorithm is determined by the
number of operations required to solve a problem relative to the size of the input
data. The efficiency of an algorithm can be measured using big O notation,
which provides a theoretical upper bound on the time complexity as the input
size approaches infinity.

Developers need to understand the performance characteristics of data


structures and algorithms to make informed decisions about which ones to use
for specific use cases. For example, if the system needs to perform many
insertions and deletions, a linked list may be the optimal choice. However, if the
system needs to perform frequent searches, a hash table may be a better option.
Another essential aspect of data structures and algorithms is their relationship to
software design patterns. Design patterns are reusable solutions to commonly
occurring problems in software design. They provide a standardized approach to
solving problems and improving the maintainability and scalability of software
systems. Many design patterns involve the use of specific data structures and
algorithms, making it crucial for developers to have a solid understanding of
both concepts.

data structures and algorithms are two critical concepts in computer science that
are essential for developing efficient and scalable software systems. They
provide a standardized approach to organizing and processing data, leading to
improved performance and reduced memory usage. Developers need to
understand the strengths and weaknesses of different data structures and
algorithms to make informed decisions about which ones to use for specific use
cases. Additionally, data structures and algorithms play a vital role in software
design patterns, making it crucial for developers to have a solid understanding
of both concepts.

Types of Data Structures


The Data Structures into two types:
1.Primitive
2.Non Primitive
1.Primitive Data type
In computer programming, primitive data types refer to basic types of data that
are supported by a programming language. These data types are essential
building blocks for programming, and they can be used to represent and
manipulate different kinds of data in a program.

The most common primitive data types include integers, floating-point


numbers, characters, and Boolean values. Each of these data types has its
specific characteristics and limitations.

 Integers are whole numbers that can be either positive or negative. They
are often used to represent quantities, such as the number of items in a list
or the amount of money in a bank account. In most programming
languages, integers are represented using a fixed number of bits, which
determines the range of values that can be stored. For example, an 8-bit
integer can store values between -128 and 127.
 Floating-point numbers, on the other hand, are used to represent real
numbers that have a fractional part. They are often used to represent
values that vary continuously, such as the temperature or the weight of an
object. In most programming languages, floating-point numbers are
represented using a standard format, such as IEEE 754, which defines the
number of bits used to represent the fraction and exponent.
 Characters are used to represent letters, digits, and other symbols. They
are often used to store and manipulate text in a program. In most
programming languages, characters are represented using a fixed number
of bits, which determines the number of characters that can be stored. For
example, an 8-bit character can store values between 0 and 255.
 Pointers are a special type of data type that are used to store memory
addresses of other variables or objects in a program. Pointers are often
used to manipulate and access data that is stored in memory, and they are
essential for implementing data structures such as linked lists, trees, and
graphs.
2.Non-Primitive Data type
Non-primitive data types are more complex data structures that are composed of
primitive data types or other non-primitive data types. They are often used to
represent more complicated structures of data, such as arrays, structures,
classes, and objects.

Arrays are a commonly used non-primitive data type that is used to store a
collection of elements of the same data type. Arrays are often used to represent
data that has a linear or sequential structure, such as a list of integers or a
sequence of characters. In most programming languages, arrays are declared
with a fixed size, and the elements can be accessed using an index value.

Structures, also known as structs, are used to represent a collection of related


data items of different data types. Structures are often used to group related data
together and make it easier to manage and access the data in a program. In most
programming languages, structures can be declared and initialized with different
data types, and the elements can be accessed using a dot (.) notation.

Classes and objects are a more advanced non-primitive data type that is used to
represent more complex structures of data. Classes are used to define a blueprint
for an object, which includes the object's attributes and methods. Objects are
instances of a class, and they can be created and manipulated at runtime.
Classes and objects are often used in object-oriented programming to
encapsulate data and behavior into a single unit, making it easier to manage and
maintain code.
In addition to these common non-primitive data types, there are also other more
specialized data types that are used for specific purposes, such as enumerations,
unions, and pointers.
What are Array?

• Array is a container which can hold a fix number of items and these items
should be the same type.
• Most of the Data Structures make use of arrays to implement their
algorithms

1. An Array is a container of elements.


2. Elements have a specific value and data type, like TRUE or FALSE,
NODE, etc
3. Each Elements also has its own index, which is used to access the
elements
Library Management System

The “Library Management System "is a software that uses to maintain the
record of the library.
• Library is the collection of different types of books.
• It provides books for large number of readers and to maintain the records
is difficult task.
The Existing System:
• Process of keeping maintaining and retrieving the information was very
slow and lenthy.
• Issue/return information is difficult to maintain
• Tracing a book/article is difficult
• Fast retrieval of information is not possible.
Propsed System:
• Eliminates the paper work in library
• Students gets all the information at one place and do not have to go to
library to retrieve the transaction details

The Program:
https://github.com/CS21M/Internship-Code/commit/
c84626fe2a0b6eee2ace6d87466ce7c221bf5796#diff-
340f463033e0fd5ddeabb922df4d4f1b5747494d0f5ed9894f13b6e13ca831f5

METHODOLOGY

 Requirement Gathering: The first step in developing a library


management system is to gather requirements stakeholders, such as
library staff, patrons, and administrators. Getting to Know the
requirements, their needs , expectation
 System Design: Based on the requirements gathered, you will need to
design the system architecture, user interface and other components.
 To visualize the system's structure and functionality.
 Development: Once the design is finalized, you can start the development
process. This involves writing code, testing, debugging, and integrating
different modules
APPLICATIONS
 Cataloging: The library management system can be used for cataloging
library resources, such as books, journals, audiovisual materials, and
digital resources. The system can help library staff to manage and
maintain the library collection, as well as provide patrons with an easy-to-
use online catalog to search for resources.
 Circulation: The library management system can be used to manage
circulation activities, such as checking in and out items, renewing loans,
and tracking borrower information.
 Acquisitions: The library management system can be used for
acquisitions activities, such as ordering, receiving, and invoicing
materials.
 Staff Efficiency: The library management system can be used to improve
staff efficiency, by automating routine tasks, reducing errors, and
improving communication. The system can also help to streamline
workflows and reduce manual data entry.

CONCLUSION

In conclusion, this DSA summer internship has been a valuable experience for
me to enhance my skills and gain practical knowledge in data structures and
algorithms.

Through my work on various coding challenges, I was able to deepen my


understanding of important DSA concepts such as arrays, linked lists, trees,
graphs, sorting, searching, and dynamic programming. I also had the
opportunity to apply my knowledge to solve complex problems and optimize
algorithms for better performance.

Overall, this DSA summer internship has prepared me well for future academic
and career pursuits in computer science and related fields.

You might also like