Dsa Certificate
Dsa Certificate
Training Report
On
DSA Self-paced
GeeksForGeeks
Submitted by
NAVED ANWAR
12006158
Bachelor of Technology
(Computer Science and Engineering)
I, Pritam Sikder, 12001409, hereby declare that the work done by me on “DSA Self -
Placed” from June 2022 to July 2022, is a record of original work for the partial
fulfillment of the requirements for the award of the degree, Bachelor of Technology.
)
ACKNOWLEDGEMENT
First of all, I would like to thank God for allowing me to learn a new technology. Then I
would like to express my special thanks to the teacher and instructor of the DSA Self-Paced
course by GeeksforGeeks who provides me with a unique opportunity to learn a new
technology from home.
I would also like to thank my own college Lovely Professional University for offering such
a course which not only improved my programming knowledge but also taught me other
new technologies.
I would also like to thank my parents and friends who helped me with their valuable
suggestions and advice in choosing this course.
Last but not least, I would like to thank all my classmates who helped me a lot.
Summer Training Certificate
CERTIFICATE
OF COURSE COMPLETION
Naved Anwar
has successfully completed the course on DSA Self paced of
duration 8 weeks.
S. No. Title
1 Cover Page
3 Acknowledgement
5 Table of Contents
6 Project code
7 Introduction
8 Technology learnt
10 Learning Outcome
11 Bibliography
Project code:-
I made a project on Tic Tac Toe with the help of programming cpp and implemented DSA
learning on it.
Code:-
#include <stdio.h>
#include <conio.h>
char square[10] = { 'o', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
int checkwin();
void board();
int main()
{
int player = 1, i, choice;
char mark;
do
{
board();
player = (player % 2) ? 1 : 2;
printf("Player %d, enter a number: ", player);
scanf("%d", &choice);
mark = (player == 1) ? 'X' : 'O';
if (choice == 1 && square[1] == '1')
square[1] = mark;
else if (choice == 2 && square[2] == '2')
square[2] = mark;
else if (choice == 3 && square[3] == '3')
square[3] = mark;
else if (choice == 4 && square[4] == '4')
square[4] = mark;
else if (choice == 5 && square[5] == '5')
square[5] = mark;
else if (choice == 6 && square[6] == '6')
square[6] = mark;
else if (choice == 7 && square[7] == '7')
square[7] = mark;
else if (choice == 8 && square[8] == '8')
square[8] = mark;
else if (choice == 9 && square[9] == '9')
square[9] = mark;
else
{
printf("Invalid move ");
player--;
getch();
}
i = checkwin();
player++;
}while (i == - 1);
board();
if (i == 1)
printf("==>\aPlayer %d win ", --player);
else
printf("==>\aGame draw");
getch();
return 0;
}
int checkwin()
{
if (square[1] == square[2] && square[2] == square[3])
return 1;
else if (square[4] == square[5] && square[5] == square[6])
return 1;
else if (square[7] == square[8] && square[8] == square[9])
return 1;
else if (square[1] == square[4] && square[4] == square[7])
return 1;
else if (square[2] == square[5] && square[5] == square[8])
return 1;
else if (square[3] == square[6] && square[6] == square[9])
return 1;
else if (square[1] == square[5] && square[5] == square[9])
return 1;
else if (square[3] == square[5] && square[5] == square[7])
return 1;
else if (square[1] != '1' && square[2] != '2' && square[3] != '3' &&
square[4] != '4' && square[5] != '5' && square[6] != '6' && square[7]
!= '7' && square[8] != '8' && square[9] != '9')
return 0;
else
return - 1;
}
void board()
{
printf("\n\n\tTic Tac Toe\n\n");
printf("Player 1 (X) - Player 2 (O)\n\n\n");
printf(" | | \n");
printf(" %c | %c | %c \n", square[1], square[2], square[3]);
printf(" |_| \n");
printf(" | | \n");
printf(" %c | %c | %c \n", square[4], square[5], square[6]);
printf(" |_| \n");
printf(" | | \n");
printf(" %c | %c | %c \n", square[7], square[8], square[9]);
printf(" | | \n\n");
}
INTRODUCTION
➢ The course name DSA stands for “Data Structures and Algorithms” and Self-
paced means, one can join the course anytime. All of the content will be
available once one gets enrolled. One can finish it at his own decided speed.
➢ What is Data Structure? Data Structure is a way of collecting and organizing
data in such a way that we can perform operations on these data in an effective
way. Data Structures is about rendering data elements in terms of some
relationship, for better organization and storage. For example, we have some data
which has, player's name "Virat" and age 26. Here "Virat" is of String data
➢ This course is a complete package that helped me learn Data Structures and
Algorithms from basic to an advanced level. The course curriculum has been
divided into 8 weeks where one can practice questions & attempt the assessment
tests according to his own pace. The course offers me a wealth of programming
challenges that will help me to prepare for interviews with top-
Analysis of Algorithm
Order of Growth
Asymptotic Notations
Big O Notation
o. Calculation
Omega Notation
o. Calculation.
Theta Notation
o. Calculation.
Space Complexity
o. Basic Programs
o. Auxiliary Space
MATHEMATICS
Quadratic Equations.
Prime Numbers.
Factorials
Modular Arithmetic
BITMAGIC
o. Operation of AND, OR
Applications of Recursion
o. Factorial
ARRAYS
Types of Arrays
o. Fixed-sized array
o. Dynamic-sized array
Operations on Arrays
o. Searching
o. Insertions
o. Deletion
o. Arrays vs other DS
SEARCHING
SORTING
Sorting in Java
Arrays.sort() in Java
Collection.sort() in Java
Insertion Sort
Merge Sort
Quick Sort
MATRIX
Multidimensional Matrix
Transposing a matrix
Rotating a Matrix
Boundary Traversal
Spiral Traversal
Matrix Multiplication
HASHING
Application of Hashing
Double Hashing
C++
o. Unordered Set
o. Unordered Map
Java
o. HashSet
o. HashMap
STRINGS
Strings in CPP
Strings in Java
KMP Algorithm
LINKED LIST
Introduction
o. Implementation in CPP
o. Implementation in Java
o. Comparison with Array DS
Loop Problems
o. Detecting Loops
STACK
Applications of Stack
o In C++
o In Java
QUEUE
o. In C++ STL
o. In Java
DEQUE
Implementation
o. In C++ STL
TREE
Introduction
o Tree
o Application o
Binary Tree o
Tree Traversal
Implementation of:
o. Inorder Traversal
o. Preorder Traversal
o. Postorder Traversal
Insertion in BST
Deletion in BST
Floor in BST
Self-Balancing BST
AVL Tree
HEAP
Binary Heap
o. Insertion
Heap Sort
PriorityQueue in Java
GRAPH
Introduction to Graph
Graph Representation
o Adjacency Matrix
Breadth-First Search
o. Applications
o. Applications
o. Implementation in CPP
o. Implementation in Java
o. Implementation in CPP
Kosaraju's Algorithm
Articulation Point
Bridges in Graph
Tarjan’s Algorithm
GREEDY
Introduction
Fractional Knapsack
BACKTRACKING
Concepts of Backtracking
Rat In a Maze
N Queen Problem
DYNAMIC PROGRAMMING
Introduction
Dynamic Programming
o. Memoization
o. Tabulation
TREE
Introduction
o. Representation
o. Search
o. Insert
o. Delete
SEGMENT TREE
Introduction
Construction
Range Query
Update Query
DISJOINT SET
Introduction
Union by Rank
Path Compression
Kruskal's Algorithm
Practice problems
o. This track contains many practice problems for the users which are
considered important and must-do as far as Data Structure and
Algorithm is concerned
Data Structures and Algorithms are the identity of a good Software Developer.
The interviews for technical roles in some of the tech giants like Google, Facebook,
Amazon, Flipkart is more focused on measuring the knowledge of Data Structures
and Algorithms of the candidates. The main reason behind this is Data Structures
and Algorithms improves the problem-solving ability of a candidate to a great
extent.
This course has video lectures of all the topics from which one can easily learn. I
prefer learning from video rather than books and notes. I know books and notes
and thesis have their own significance but still video lecture or face to face lectures
make it easy to understand faster as we are involved Practically.
This was a lifetime accessible course which I can use to learn even after my
training whenever I want to revise.
LEARNING OUTCOMES
Programming is all about data structures and algorithms. Data structures are used to
hold data while algorithms are used to solve the problem using that data.
Data structures and algorithms (DSA) goes through solutions to standard problems in
detail and gives you an insight into how efficient it is to use each one of them. It also
teaches you the science of evaluating the efficiency of an algorithm. This enables you
to choose the best of various choices.
For example, you want to search your roll number in 30000 pages of documents, for
that you have choices like Linear search, Binary search, etc. So, the more efficient way
will be Binary search for searching something in a huge number of data.
So, if you know the DSA, you can solve any problem efficiently.
Time is precious
Memory is expensive
In our daily life, we always go with that person who can complete the task in a
short amount of time with efficiency and using fewer resources. The same things
happen with these companies. The problem faced by these companies is much harder
and at a much larger scale. Software developers also have to make the right decisions
when it comes to solving the problems of these companies.
For example, in an interview, your given a problem to find the sum of first N
natural numbers.
Initialize sum = 0
for every natural number n in range 1 to N (inclusive).add n to sum and sum is the
answer
And you solve it using the sum of first N natural numbers is given by the formula:
Sum=N*(N+1)/2
Obviously, they will choose you over other one because your solution is more efficient.
Knowledge of data structures like Hash Tables, Trees, Tries, Graphs, and various
algorithms goes a long way in solving these problems efficiently and the interviewers
are more interested in seeing how candidates use these tools to solve a problem. Just
like a car mechanic needs the right tool to fix a car and make it run properly, a
programmer needs the right tool (algorithm and data structure) to make the software
run properly. So, the interviewer wants to find a candidate who can apply the right set
of tools to solve the given problem. If you know the characteristics of one data
structure in contrast to another you will be able to make the right decision in choosing
the right data structure to solve a problem.
A lot of newbie programmers have this question that where we use all the stuff of data
structure and algorithm in our daily life and how it’s useful in solving the real-world
complex problem. We need to mention that whether you are interested in getting into
the top tech giant companies or not DSA still helps a lot in your day to day life.
The first two were a good example of choosing the right data structure for a real-world
problem and the third one is a good example of choosing the right algorithm to solve a
specific problem in less amount of time.
BIBLIOGRAPHY
Google
GeeksForGeeks website