0% found this document useful (0 votes)
136 views24 pages

Dsa Certificate

Uploaded by

syednavedanwar99
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
136 views24 pages

Dsa Certificate

Uploaded by

syednavedanwar99
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 24

Annexure-I

Training Report
On
DSA Self-paced
GeeksForGeeks

Submitted by

NAVED ANWAR
12006158

Bachelor of Technology
(Computer Science and Engineering)

LOVELY PROFESSIONAL UNIVERSITY


PHAGWARA, PUNJAB
(Jun 06- Jul 10, 2022)
Annexure-II: Student Declaration

To whom so ever it may concern

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.

Naved Anwar (12006158)

(Signature of the student

)
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

THIS IS TO CERTIFY THAT

Naved Anwar
has successfully completed the course on DSA Self paced of
duration 8 weeks.

Mr. Sandeep Jain


Founder & CEO, GeeksforGeeks
https://media.geeksforgeeks.org/courses/certificates/4e636f7bea0886900f3f292649db0946.pdf
Abbreviation

 DSA: Data Structures and Algorithms.


Table of Contents

S. No. Title

1 Cover Page

2 Declaration of the student

3 Acknowledgement

4 Training Certification from organization

5 Table of Contents

6 Project code

7 Introduction

8 Technology learnt

9 Reason for choosing DSA

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

type and 26 is of integer data type.

➢ What is Algorithm? An algorithm is a finite set of instructions or logic, written in


order, to accomplish a certain predefined task. Algorithm is not the complete code
or program, it is just the core logic(solution) of a problem, which can be expressed

either as an informal high-level description as pseudocode or using a flowchart

➢ 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-

notch companies like Microsoft, Amazon, Adobe etc.


TECHNOLOGY LEARN

Learn Data Structures and Algorithms from basic to an


advanced level like:

Learn Topic-wise implementation of different Data


Structures & Algorithms as follows

 Analysis of Algorithm

o. In this I learned about background analysis through a Program and its


functions.

 Order of Growth

o. A mathematical explanation of the growth analysis through limits and


functions.

o. A direct way of calculating the order of growth

 Asymptotic Notations

o. Best, Average and Worst-case explanation through a program.

 Big O Notation

o. Graphical and mathematical explanation.

o. Calculation

o. Applications at Linear Search

 Omega Notation

o. Graphical and mathematical explanation.

o. Calculation.

 Theta Notation

o. Graphical and mathematical explanation.

o. Calculation.

 Analysis of common loops

o. Single, multiple and nested loops


 Basics of Recursion

o. Various calculations through Recursion Tree method

 Space Complexity

o. Basic Programs

o. Auxiliary Space

o. Space Analysis of Recursion

o. Space Analysis of Fibonacci number

MATHEMATICS

 Finding the number of digits in a number.

 Arithmetic and Geometric Progressions. 

 Quadratic Equations. 

 Mean and Median.

 Prime Numbers.

 LCM and HCF

 Factorials

 Permutations and Combinations

 Modular Arithmetic

BITMAGIC

 Bitwise Operators in C++

o. Operation of AND, OR, XOR operators

o. Operation of Left Shift, Right Shift and Bitwise Not

 Bitwise Operators in Java

o. Operation of AND, OR

o. Operation of Bitwise Not, Left Shift

o. Operation of Right Shift and unsigned Right Shift


RECURSION
 Introduction to Recursion

 Applications of Recursion

 Writing base cases in Recursion

o. Factorial

o. N-th Fibonacci number

ARRAYS

 Introduction and Advantages

 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

o. Reversing - Explanation with complexity

SEARCHING

 Binary Search Iterative and Recursive

 Binary Search and various associated problems

 Two Pointer Approach Problems

SORTING

 C++ STL sort () function in Arrays and Vectors o Time


Complexities 

 Sorting in Java

 Arrays.sort() in Java
 Collection.sort() in Java

 Stability in Sorting Algorithms

o. Examples of Stable and Unstable Algos

 Insertion Sort

 Merge Sort

 Quick Sort

o. Using Lomuto and Hoare

o. Time and Space analysis

o. Choice of Pivot and Worst case

 Overview of Sorting Algorithms

MATRIX

 Introduction to Matrix in C++ and Java

 Multidimensional Matrix

 Pass Matrix as Argument 

 Printing matrix in a snake pattern

 Transposing a matrix

 Rotating a Matrix

 Check if the element is present in a row and column-wise sorted matrix.

 Boundary Traversal

 Spiral Traversal

 Matrix Multiplication
HASHING

 Introduction and Time complexity analysis

 Application of Hashing

 Discussion on Direct Address Table

 Working and examples on various Hash Functions

 Introduction and Various techniques on Collision Handling

 Chaining and its implementation

 Open Addressing and its Implementation

 Chaining V/S Open Addressing

 Double Hashing

 C++

o. Unordered Set

o. Unordered Map

 Java

o. HashSet

o. HashMap

STRINGS

 Discussion of String DS

 Strings in CPP

 Strings in Java

 Rabin Karp Algorithm

 KMP Algorithm

LINKED LIST

 Introduction

o. Implementation in CPP

o. Implementation in Java
o. Comparison with Array DS

 Doubly Linked List

 Circular Linked List

 Loop Problems

o. Detecting Loops

o. Detecting loops using Floyd cycle detection

o. Detecting and Removing Loops in Linked List

STACK

 Understanding the Stack data structure

 Applications of Stack

 Implementation of Stack in Array and Linked List

o In C++

o In Java

QUEUE

 Introduction and Application

 Implementation of the queue using array and LinkedList

o. In C++ STL

o. In Java

o. Stack using queue

DEQUE

 Introduction and Application

 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

o. Level Order Traversal (Line by Line)

o. Tree Traversal in Spiral Form

BINARY SEARCH TREE

 Background, Introduction and Application

 Implementation of Search in BST

 Insertion in BST

 Deletion in BST

 Floor in BST

 Self-Balancing BST

 AVL Tree
HEAP

 Introduction & Implementation

 Binary Heap

o. Insertion

o. Heapify and Extract

o. Decrease Key, Delete and Build Heap

 Heap Sort

 Priority Queue in C++

 PriorityQueue in Java

GRAPH

 Introduction to Graph

 Graph Representation

o Adjacency Matrix

o Adjacency List in CPP and Java o

Adjacency Matrix VS List

 Breadth-First Search

o. Applications

 Depth First Search

o. Applications

 Shortest Path in Directed Acyclic Graph

 Prim's Algorithm/Minimum Spanning Tree

o. Implementation in CPP

o. Implementation in Java

 Dijkstra's Shortest Path Algorithm

o. Implementation in CPP

 Kosaraju's Algorithm
 Articulation Point

 Bridges in Graph

 Tarjan’s Algorithm

GREEDY

 Introduction

 Activity Selection Problem

 Fractional Knapsack

 Job Sequencing Problem

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

 Find and Union Operations

 Union by Rank

 Path Compression 

 Kruskal's Algorithm

➢ Improved my problem-solving skills by practicing problems to become a stronger


developer

 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

➢ Developed my analytical skills on Data Structures to use them


efficiently

➢ Solved problems asked in product-based companies’ interviews

➢ Solved problems in contests similar to coding round for SDE role


Reason for choosing this technology

 With advancement and innovationprogramming is becoming a Everything you in


technology, highly in-demandsee around Signals uses some kind of
skill for Software Developers.
yourself from Smart TVs, AC’s,
Lights, Traffic programming for
executing user commands.

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.

 It has 200+ algorithmic coding problems with video explained solutions.

 It has track based learning and weekly assessment to test my skills.

 It was a great opportunity for me to invest my time in learning instead of wasting


it here and there during my summer break in this Covid-19 pandemic.

 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.

The main use of DSA is to make your code scalable because

 Time is precious
 Memory is expensive

One of the uses DSA is to crack the interviews to get into


the product- based companies

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.

One candidate solves it by using loop like

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.

Another use of DSA, if you love to solve the real-world complex


problems.
Let’s take the example of Library. If you need to find a book on Set Theory from a
library, you will go to the math section first, then the Set Theory section. If these books
are not organized in this manner and just distributed randomly then it will be frustrating
to find a specific book. So, data structures refer to the way we organize information on
our computer. Computer scientists process and look for the best way we can organize
the data we have, so it can be better processed based on input provided.

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.

Let’s consider some examples

 In Facebook you can represent your friends on Facebook, friends


of friends, mutual friends easily by Graph.
 If you need to keep a deck of cards and arrange it properly, how would you do
that? You will throw it randomly or you will arrange the cards one over another
and from a proper deck. You can use Stack here to make a proper arrangement of
cards one over another.
 If you need to search a word in the dictionary, what would be your approach?
Do you go page by page or you open some page and if the word is not found you
open a page prior/later to one opened depending upon the order of word to the
current page (Binary Search)?

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

 GeeksForGeeks DSA self-paced Course

You might also like