Nagarro Gbu Internship Report

You might also like

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

EXPLORING THE POWER AND POTENTIAL OF

.NET TECHNOLOGY
An Internship Project report for the evaluation and partial fulfilment of the requirement
for the award of the degree

B. TECH. (INFORMATION TECHNOLOGY)

Submitted By:

Name Roll No.


NIKHIL MISHRA (19/BIT/055)

UNDER THE SUPERVISION OF

Dr. Annu Singh


Dr. Navaid Zafar Rizvi

UNIVERSITY SCHOOL OF INFORMATION AND COMMUNICATION TECHNOLOGY

GAUTAM BUDDHA UNIVERSITY

GREATER NOIDA – 201312, GAUTAM BUDDHA NAGAR UTTAR PRADESH INDIA


SCHOOL OF INFORMATION AND COMMUNICATION TECHNOLOGY
GAUTAM BUDDHA UNIVERSITY, GREATER NOIDA, 201312, U. P. (INDIA)

CERTIFICATE

The Internship Report is prepared and submitted by Nikhil Mishra (Roll Number: 19/BIT/055),
has been found satisfactory in terms of scope, quality, and presentation as partialfulfillment of
the requirements for the course IT - 494 (Internship – 8th Semester) of the degree of Bachelor of
Technology in Information Technology in GAUTAM BUDDHA UNIVERSITY, GREATER NOIDA,
INDIA.

This is to certify that the above statement made by the candidates is correct to the best of my
knowledge and belief. However, responsibility for any plagiarism-related issue solely stands with
the students.

Signature of the Supervisor:

Name with Designation: Dr. Annu Singh

Signature of the Co-Supervisor:

Name with Designation: Dr. Navaid Zafar Rizvi

Date Place: 13/06/2023, Greater Noida


Internship Letter
Acknowledgement

In the accomplishment of completion of my internship at Nagarro, I would like to convey


my special gratitude to Prof. Sanjay Kumar Sharma (Dean, SoICT), Dr. Annu Singh,
Dr. Neeta Singh, Dr. Navaid Zafar Rizvi , Supervisors & Faculties of SoICT of GBU for
giving an opportunity & allowing me to work on this Internship.

I would like to express my sincere thanks to Mr. Manas Fuloria, CEO, Nagarro and
Ms. Aditi Sharma, mentor for their valuable guidance and untiring efforts during my
internship. Their valuable guidance and suggestions have helped me in various phases
of this internship. I will always be thankful to them in this regard.

I would also like to extend my deep appreciation to my family without their support and
constant encouragement I would not have been able to complete this internship.

Nikhil Mishra
19/BIT/055
B. Tech (Information Technology)
8th Semester
Gautam Buddha University, Greater Noida.

4
Abbreviations

GIT: Global Information Tracker


C#: C Sharp
DSA: Data Structure and Algorithms
SQL: Structured Query Language
HTML: Hyper Text Markup Language
CSS: Cascading Style Sheets
JS: JavaScript
MVC: Model-View-Controller
OOPs: Object Oriented Programming

5
Contents

Certificate 2

Internship Letter 3

Acknowledgement 4

Abbreviations 5

Contents 6

About the Organization 7

Abstract 8

Chapter 1: Introduction 9

Chapter 2: GIT 10

Chapter 3: C# 12

Chapter 4: DSA 19

Chapter 5: SQL 22

Chapter 6: HTML CSS JS 23

Chapter 7: MVC 26

Chapter 8: Design Patterns 29

Chapter 9: Angular 31

Conclusion 33

References 34

6
About the organization

Nagarro is a global software development and digital transformation company that


provides innovative IT solutions and services to businesses across various industries.
Established in 1996, Nagarro has grown to become a trusted partner for organizations
seeking cutting-edge technology solutions.

With its headquarters in Munich, Germany, Nagarro operates in over 25 countries


worldwide, serving clients ranging from startups to Fortune 500 companies. The
company has a diverse portfolio of services that includes software development, cloud
consulting, user experience design, data analytics, and enterprise mobility solutions.

Nagarro prides itself on its strong technical expertise and a culture of innovation. The
company leverages emerging technologies such as artificial intelligence, machine
learning, blockchain, and Internet of Things (IoT) to help clients stay ahead in the digital
era. They adopt an agile and collaborative approach, working closely with clients to
understand their unique requirements and deliver tailor-made solutions.

One of Nagarro's key strengths lies in its talented workforce. The company employs a
global team of highly skilled professionals who bring their expertise in various domains,
ensuring the successful delivery of projects. Nagarro also encourages a culture of
continuous learning and growth, providing employees with ample opportunities for skill
enhancement and career development.

Nagarro's commitment to quality and customer satisfaction is evident through its


numerous industry accolades and long-standing partnerships. The company has
received recognition for its exceptional work in areas such as software development,
digital transformation, and customer service.

In summary, Nagarro is a leading global IT solutions provider that combines technical


expertise, innovation, and customer-centricity to deliver high-quality software solutions
and help businesses thrive in the digital age.

7
ABSTRACT

This document presents an in-depth analysis of my internship experience at Nagarro,


with a specific focus on the practical application and development of various
technologies including GIT, C#, DSA (Data Structures and Algorithms), SQL, MVC (Model-
View-Controller), Design Patterns, and Angular. Throughout the internship, I gained
valuable insights and hands-on experience in utilizing these technologies within real-
world projects.

The document begins by exploring GIT and its version control system, discussing
collaborative workflows, and highlighting the importance of effective code management.
It then delves into C#, covering the fundamentals of the programming language and its
application in project development. Emphasis is placed on best practices, code
optimization techniques, and leveraging C# to create robust and efficient software
solutions.

DSA (Data Structures and Algorithms) is a critical aspect of software development. It


explores common data structures and algorithms, their use cases, and optimization
strategies for enhanced performance.

The role of SQL in relational database management is also discussed, encompassing SQL
queries, data manipulation, and database design principles. The document highlights the
importance of efficient database management for successful software applications.

Additionally, the document explores the MVC architectural pattern, discussing its
benefits, limitations, and its role in developing scalable and maintainable web
applications. It also delves into Design Patterns, offering insights into their practical
application and demonstrating how they can improve software design, maintainability,
and reusability.

Lastly, the document covers Angular, a popular framework for building dynamic web
applications. It explores Angular's features, best practices, and performance
optimization techniques, enabling the creation of responsive and user-friendly
interfaces.

8
INTRODUCTION
The internship experience at Nagarro provided a valuable opportunity to gain hands-on
knowledge and practical insights into various technologies used in the field of software
development. This document presents a detailed analysis of the practical application and
development of GIT, C#, DSA, SQL, MVC, Design Patterns, and Angular during the
internship. It aims to provide a comprehensive understanding of these technologies and
their significance in real-world projects.

1.1 Background and Objectives:


The internship at Nagarro served as a platform to bridge the gap between theoretical
knowledge and practical implementation. It allowed for immersion in a professional
environment and facilitated the application of acquired skills. The objectives of the
analysis are to explore how these technologies were utilized during the internship,
identify challenges encountered, and evaluate the skills gained through practical
experience.

1.2 Scope and Methodology:


The scope of this document encompasses an in-depth exploration of GIT, C#, DSA, SQL,
MVC, Design Patterns, and Angular. Each technology is examined from a practical
standpoint, focusing on its implementation and relevance in software development
projects. The analysis delves into key concepts, provides insights into real-world
challenges faced, and highlights the skills acquired during the internship.

The methodology employed for this analysis is based on firsthand experience and
reflective insights gained during the internship period. It includes a combination of
practical project work, collaboration with mentors and colleagues, and self-learning
through resources and documentation. The document reflects on the internship
experience and presents findings based on the practical application of the technologies
in a professional setting.

By providing a comprehensive introduction to the internship experience and clearly


defining the objectives, scope, and methodology, this document sets the stage for the
subsequent analysis. It prepares the reader to delve into the practical aspects of GIT,
C#, DSA, SQL, MVC, Design Patterns, and Angular, showcasing their importance and
relevance in real-world software development scenarios.

9
GIT
2.1 Overview of GIT Version Control System:
This chapter provides a comprehensive overview of GIT, a widely used version control
system. It explains the fundamental concepts and functionalities of GIT, including
repositories, commits, branches, and merges. The significance of version control in
managing the codebase and facilitating collaboration among developers is emphasized.

2.2 GIT Workflow and Collaboration Strategies:


In this section, different GIT workflows and collaboration strategies are explored. It
covers popular approaches such as centralized, feature branch, and Gitflow workflows.
Each workflow is explained in detail, including how developers collaborate, branch off,
merge changes, and manage the codebase. The advantages and considerations of each
workflow are discussed, providing insights into the most suitable approach for different
project scenarios.

2.3 GIT Integration in Software Development Life Cycle:


This section focuses on the integration of GIT into the software development life cycle.
It highlights the role of GIT in code versioning, continuous integration, and deployment
processes. The chapter explores the integration of GIT with popular project
management tools, enabling seamless project tracking and coordination. Additionally,
the importance of efficient branching and merging strategies is emphasized, along with
best practices for maintaining a clean and manageable codebase.

By providing a comprehensive overview of GIT, discussing different workflows and


collaboration strategies, and highlighting its integration into the software development
life cycle, this chapter equips the reader with a thorough understanding of GIT's
practical application and benefits. It emphasizes the importance of version control in
software development and prepares the reader for the subsequent chapters focusing
on specific technologies.

10
11
C#
3.1 Introduction to C# Programming Language:
This chapter serves as an introduction to C#, a widely used programming language in
the field of software development. It begins by providing a comprehensive overview of
the language, its syntax, and its fundamental concepts. Readers are introduced to the
key features of C#, including its strong type of system, garbage collection, and support
for object-oriented programming. The chapter also highlights the platform
independence of C#, as it can be used for developing applications on different
operating systems, including Windows, macOS, and Linux.

3.2 Best Practices and Code Optimization in C#:


In this section, the focus shifts to exploring best practices and code optimization
techniques in C# development. Readers are introduced to industry-standard coding
conventions and guidelines for writing clean, readable, and maintainable code. Topics
such as naming conventions, code organization, error handling, and defensive
programming are covered in detail. Additionally, the chapter emphasizes the
significance of code optimization and performance improvement techniques in C#
programming. Readers learn about strategies for optimizing memory usage, leveraging
built-in language features, and applying efficient algorithms and data structures.

3.3 Application of C# in Project Development:


This section showcases the practical application of C# in real-world software
development projects. Readers are introduced to various use cases where C# is
leveraged to build different types of applications, including desktop, web, and mobile
applications. The chapter explores the integration of C# with popular frameworks,
libraries, and development tools, such as ASP.NET, Xamarin, and Unity, expanding the
capabilities and possibilities of C# development. Readers gain insights into the
development process, including designing application architecture, implementing
business logic, and interacting with databases.

By providing a comprehensive introduction to C#, discussing best practices and code


optimization techniques, and showcasing its practical application in project
development, this chapter equips readers with a solid foundation in C# programming.

12
It emphasizes the importance of writing clean and optimized code, while also
highlighting the versatility of C# in building a wide range of software applications. This
knowledge sets the stage for the subsequent chapters, where readers will delve into
additional technologies and explore their integration with C# to create robust and
efficient software solutions.

An Example of Assignment in C#:

13
Solution:
There are 5 classes in total for this exercise Equipment, Mobile, Immobile, Type of
Equipment, Equipment Inventory, and Main Class.

Equipment Class

14
Mobile Class

Immobile Class

15
Equipment Inventory
16
Main Class

17
DSA (Data Structures and Algorithms)
4.1 Importance of DSA in Software Development:
In this, we delve into the significance of Data Structures and Algorithms (DSA) in
software development. We explore how DSA facilitates efficient data management and
problem-solving, ultimately leading to the creation of robust and optimized software
solutions.

Here, we mainly focused on the data structures that help us proceed with the training
faster and more efficiently.

Linked List, Stacks, Queues, Priority Queues, and Hash Tables are the data structures
that I learned and have been mentioned below.

4.2 Linked List:


This section focuses on the linked list data structure. We discuss its characteristics,
operations, and use cases. The concept of nodes and pointers is explained, highlighting
the dynamic nature and flexibility of linked lists. We examine different variations of
linked lists, such as singly linked lists, doubly linked lists, and circular linked lists.

4.3 Stacks:
Here, we explore the stack data structure. We discuss its LIFO (Last-In, First-Out)
behavior and the operations associated with it, including push, pop, and peek. The
section also covers practical applications of stacks, such as expression evaluation,
backtracking algorithms, and function call management.

4.4 Queues:
In this section, we delve into the queue data structure. We explain its FIFO (First-In,
First-Out) nature and the operations it supports, such as enqueue and dequeue. We
explore different types of queues, including linear queues and circular queues. We also
discuss real-world scenarios where queues are commonly used, such as task
scheduling, job management, and network packet routing.

4.5 Priority Queues:


Here, we introduce the concept of priority queues. We discuss how they differ from
regular queues, as elements are prioritized based on certain criteria. We explore
various implementations of priority queues, including binary heaps and balanced

18
search trees. We also examine practical applications of priority queues, such as task
scheduling, event management, and data compression.

4.6 Hash Tables:


In this section, we focus on hash tables, a widely used data structure for efficient data
retrieval and storage. We explain the concept of hashing and discuss the underlying
mechanisms of hash tables. We explore collision resolution techniques, such as
separate chaining and open addressing. The section also covers practical applications
of hash tables, including data caching, symbol tables, and spell-checking algorithms.

The requirements that we were asked to complete in the mentioned data structures:

19
20
SQL (Structured Query Language)
5.1 Relational Database Management Systems (RDBMS):
This section provides an introduction to Relational Database Management Systems
(RDBMS) and their importance in modern data storage and management. It discusses
the key characteristics of RDBMS, such as tables, relationships, and the ACID (Atomicity,
Consistency, Isolation, Durability) properties. Readers gain an understanding of how
RDBMS organize data into tables and establishes relationships between them.

5.2 SQL Queries and Data Manipulation:


In this section, the focus is on SQL queries and their role in data manipulation. It
covers the basics of SQL syntax, including SELECT, INSERT, UPDATE, and DELETE
statements. Readers learn how to write SQL queries to retrieve specific data from
tables, insert new records, update existing data, and delete unwanted data. The section
also covers advanced querying techniques, such as filtering, sorting, joining multiple
tables, and aggregating data using functions.

5.3 Database Design and Optimization:


This section explores the principles of database design and optimization. It covers the
process of designing a database schema, including defining tables, establishing
relationships, and setting up constraints. Readers learn about normalization
techniques to eliminate data redundancy and ensure data integrity. The section also
delves into indexing strategies to improve query performance and covers other
optimization techniques, such as query rewriting and denormalization.

21
Web Design Fundamentals: HTML, CSS, and
JavaScript
6.1 Introduction to HTML:
This section provides an introduction to HTML, the foundation of web design. It covers
the basic structure of HTML documents, including elements, tags, and attributes.
Readers learn how to create well-structured and semantically meaningful web content
using HTML.

6.2 CSS Styling and Layout:


In this section, the chapter delves into CSS, which is used to enhance the visual
presentation of web pages. It covers CSS selectors, properties, and values, allowing
readers to style text, apply colours, create layouts, and add visual effects to their web
designs. The section also explores responsive design techniques for creating web pages
that adapt to different screen sizes.

6.3 JavaScript Interactivity:


Here, the focus shifts to JavaScript and its role in adding interactivity to web pages. The
section covers JavaScript fundamentals, including variables, data types, control
structures, and functions. Readers gain an understanding of how to use JavaScript to
manipulate HTML elements, handle user events, and create dynamic and interactive
web experiences.

6.4 Integrating HTML, CSS, and JavaScript:


This section explores the integration of HTML, CSS, and JavaScript to create cohesive
web designs. It covers techniques for linking CSS stylesheets and JavaScript files to
HTML documents, ensuring proper separation of concerns and maintaining clean and
manageable code. Readers learn how to leverage the power of these three
technologies together to build engaging and interactive web pages.

22
The assignment was to create an enrollment form:

23
Result:

24
MVC (Model-View-Controller)

Model-View-Controller (MVC) architecture and its application in web development. It


covers the fundamental concepts of MVC, its implementation in web development, and
the benefits and limitations associated with this architecture.

7.1 Understanding MVC Architecture:


This section provides an introduction to the MVC architecture, explaining its purpose
and principles. It discusses the three core components of MVC: the Model, View, and
Controller. Readers gain an understanding of how these components interact with each
other to achieve separation of concerns and improve code organization.

7.2 Implementing MVC in Web Development:


Here, the chapter focuses on the practical implementation of MVC in web development.
It explores how the Model represents the data and business logic, the View handles the
user interface, and the Controller manages user interactions and orchestrates the flow
of data between the Model and View. Readers learn how to structure their code and
organize files according to MVC principles, enabling better code maintainability and
scalability.

7.3 Benefits and Limitations of MVC:


This section highlights the advantages and limitations of using the MVC architecture in
web development. It discusses how MVC promotes code reusability, modularity, and
separation of concerns, leading to improved development efficiency. Readers gain
insights into the flexibility and extensibility provided by MVC, allowing for easier updates
and modifications. The section also covers the potential challenges and trade-offs
involved in adopting MVC, such as increased complexity and a learning curve.

The Assignment of this topic was to create a Book reading event page where a user must
be provided with the following features.

• Log In

• Register

• View Events

• Create Public or Private Events


25
• Edit Created Events

• Post Comments on the Events

• Only Invited users can see Private Events

Register Page

Login Page

26
Home Page

Create Event Page

27
Design Patterns
8.1 Introduction to Design Patterns

This section provides an introduction to the concept of design patterns in software


engineering. Design patterns are reusable solutions to commonly occurring design
problems that developers encounter during the software development process. The
section emphasizes the importance of design patterns in promoting code reusability,
maintainability, and scalability. It highlights the significance of understanding and
applying design patterns to enhance the overall software architecture and development
practices.

8.2 Commonly Used Design Patterns in Software Engineering


This section focuses on discussing commonly used design patterns in software
engineering. It covers a selection of design patterns from various categories, including
creational, structural, and behavioral patterns. Examples of widely recognized design
patterns such as Singleton, Factory Method, Adapter, Observer, and others are
presented. Each design pattern is explained in terms of its purpose, structure, and the
problems it addresses. The section provides insights into how these design patterns can
be applied to different software development scenarios to improve code organization
and enhance system flexibility.

8.3 Application of Design Patterns in Real-world Scenarios


This section explores the practical application of design patterns in real-world software
development scenarios. It presents case studies and examples that demonstrate how
design patterns have been effectively utilized to solve specific design challenges. The
section highlights the benefits and advantages of employing design patterns in real-
world projects, including improved maintainability, code readability, and scalability. It
also discusses the considerations and trade-offs involved in selecting and applying
design patterns based on the specific project requirements and constraints.

28
Design Pattern Used in Training:

Dependency Injection:
Dependency Injection is a design pattern where the dependencies of a class are
provided from the outside, rather than being created within the class itself. This
promotes loose coupling and easier testing and maintenance.

Facade Design Pattern:


Facade Design Pattern provides a simplified interface to a complex subsystem, making
it easier to use and understand. It encapsulates the complexity and provides a unified
interface for clients to interact with.

Singleton:
Singleton is a design pattern that ensures only one instance of a class exists throughout
the application. It provides global access to this instance and is commonly used for
shared resources or centralized control.

Decorator Pattern:
Decorator Pattern allows dynamically adding new behavior to an object without
modifying its structure. It provides a flexible and modular way to extend the
functionality of an object at runtime.

Repository Pattern:
Repository Pattern provides a layer of abstraction between the data access layer and
the business logic layer. It centralizes data access operations and provides a
standardized interface for working with data.

Work Design Pattern:


Work Design Pattern (also known as Unit of Work) manages a set of related operations
within a single transaction or logical unit. It ensures consistency and atomicity of
multiple operations that need to be performed together.

Publisher-Subscriber Pattern:
Publisher-Subscriber establishes a one-to-many relationship between objects, where
the subscribers (observers) are notified and updated automatically when the state of
the publisher (subject) changes. It enables loose coupling and event-driven
communication between components.

29
Angular
9.1 Overview of Angular Framework:
Angular is a popular framework for building web applications. This section provides an
overview of the Angular framework, its key features, and its role in modern web
development. It covers concepts such as components, templates, modules, and
dependency injection, highlighting the benefits of using Angular for developing robust
and scalable applications.

9.2 Building Dynamic Web Applications with Angular:


This section focuses on building dynamic web applications using Angular. It explores
the core concepts and techniques of Angular development, including data binding,
event handling, routing, and form validation. Readers learn how to leverage Angular's
powerful features to create interactive and responsive web applications that provide a
seamless user experience.

9.3 Angular Best Practices and Performance Optimization:


In this section, the chapter emphasizes best practices and performance optimization
techniques for Angular development. It covers topics such as code organization,
modularization, lazy loading, and caching to improve the overall performance and
maintainability of Angular applications. Readers gain insights into industry-standard
practices and strategies for optimizing Angular applications for speed, efficiency, and
scalability.

Angular Assignment
30
31
Conclusion
This comprehensive internship report provides an in-depth exploration of the internship
experience at Nagarro, highlighting the utilization of various technologies and concepts.
The report begins with an insightful introduction, presenting the objectives and scope of
the internship report. It lays the groundwork for the subsequent discussions, paving the
way for a detailed exploration of the technologies employed during the internship.

The report extensively covers essential technologies such as GIT, C#, DSA, SQL, MVC,
Design Patterns, and Angular. Each technology is thoroughly examined, shedding light
on its significance, practical applications, and best practices. Through a combination of
theoretical explanations and real-world examples, readers gain a deep understanding of
these technologies and their relevance in modern software development.

Real-world scenarios and projects where these technologies were applied are extensively
discussed in the report. Case studies and examples illustrate how these technologies are
effectively utilized to address specific challenges and achieve desired outcomes. By
delving into these practical applications, readers acquire practical knowledge and
insights into the implementation of these technologies in professional settings.

Furthermore, the report delves into important topics such as data structures, SQL
queries, and database design and optimization. It explores the fundamental concepts,
principles, and techniques associated with these topics, providing readers with a strong
foundation for efficient data organization, retrieval, and manipulation.

Additionally, the report explores the Model-View-Controller (MVC) architecture, a widely


used software design pattern. It explains the core principles of MVC and demonstrates
its implementation in web development. The benefits and limitations of MVC are
discussed, providing readers with a comprehensive understanding of its role in
promoting the separation of concerns and code organization.

In conclusion, this internship report serves as a valuable resource for individuals


interested in gaining in-depth knowledge and practical insights into the technologies
employed during the internship at Nagarro. By providing a comprehensive overview of
GIT, C#, DSA, SQL, MVC, Design Patterns, and Angular, along with their practical
applications and best practices, this report equips readers with the necessary knowledge
and skills to excel in the ever-evolving field of software development.

32
References
• Nagarro:
https://www.nagarro.com/en

• GIT official website:


https://git-scm.com/doc

• C# Documentation:
https://learn.microsoft.com/en-us/dotnet/csharp/

• DSA Reference:
https://www.geeksforgeeks.org/

• SQL Official Documentation:


https://dev.mysql.com/doc/

• HTML Official Documentation:


https://developer.mozilla.org/en-US/docs/Web/

• CSS Official Documentation:


https://developer.mozilla.org/en-US/docs/Web/CSS

• JS Official Documentation:
https://developer.mozilla.org/en-US/docs/Web/JavaScript

• MVC:
https://learn.microsoft.com/en-us/aspnet/mvc/overview/getting-
started/introduction/getting-started

• Design Patterns:
https://www.geeksforgeeks.org/software-design-patterns/

• Angular:
https://angular.io/docs

33

You might also like