{"data":{"allMarkdownRemark":{"nodes":[{"id":"c5642c4e-4daf-5f65-8cca-e4f6f72c6145","frontmatter":{"title":"Top Historical Facts in Machine Learning","description":"To learn a new subject, we should try to know how exactly that started. Every computer science field has a different history, reflecting the challenges that earlier researchers faced and making our journey easy. This article will discuss the 10 most interesting historical facts considered the turning points in AI and Machine Learning history.","path":"/blog/historical-facts-in-machine-learning"}},{"id":"963efcbb-f26a-5315-b207-cb4ea8bdaa38","frontmatter":{"title":"A* Algorithm (Graph Traversal and Path Search Algorithm)","description":"A* search algorithm is a popular technique for finding the shortest path in a graph from a given initial node to a destination node. For example, in video games, pathfinding can be used to move objects from their initial place to their destination via shortest route. So implementation of a star algorithm is popular in tile or map-based games.","path":"/blog/a-star-search-algorithm"}},{"id":"5ae17a17-4608-512a-aee1-af548abbbf12","frontmatter":{"title":"0-1 Knapsack Problem","description":"We are given n items, where each item has a weight and a profit associated with it. We are also given a knapsack with a capacity of C (the knapsack can hold a maximum weight of C). Write a program to determine the maximum profit that can be obtained by selecting a subset of items without exceeding the knapsack's capacity.","path":"/blog/zero-one-knapsack-problem"}},{"id":"89a57d28-6e76-5a16-8681-3ce7bc1df8a0","frontmatter":{"title":"Abstract Class: An Idea to Implement Abstraction in Java","description":"We use abstract classes to implement abstraction in Java. It enables a higher level of abstraction, hides implementation details, enforces polymorphism and promotes code reusability. In Java, abstract classes are declared using the abstract keyword and cannot be instantiated. We mostly use an abstract class as a base class for other classes.","path":"/blog/abstract-class-in-java"}},{"id":"dd17e9bd-ce6f-5f90-a80d-7d895ee5349b","frontmatter":{"title":"Abstract Factory Pattern","description":"Abstract Factory is a creational design pattern that helps in providing an interface for producing families of related objects (products) without specifying their concrete classes. It is a hierarchy of classes that encapsulate many possible “platforms” and provide an interface for the construction of a suite of products.","path":"/blog/abstract-factory-design-pattern"}},{"id":"06342eda-1b7f-59d2-8487-559c60226da3","frontmatter":{"title":"Abstraction in Object Oriented Programming (OOPS)","description":"In object-oriented programming, Abstraction is a process of exposing necessary functionality to external objects and hiding implementation details. This helps programmers to use complex logic without understanding its implementation. So one needs to know what code does, not how it does it. There are two types of abstraction in OOPS: data abstraction and control abstraction.","path":"/blog/abstraction-in-oops"}},{"id":"70f3ca5e-f432-5107-8ee7-0c3bb290eee8","frontmatter":{"title":"Adjacency List and Adjacency Matrix Representation of Graph","description":"Just like other data structures, we can represent graphs using two sequential representations: the Adjacency List and the Adjacency Matrix. Both of these representations can be applied to model directed and undirected graphs. We prefer an adjacency list when the graph is sparse and an adjacency matrix when the graph is dense.","path":"/blog/graph-representation-in-data-structures"}},{"id":"3d98c78a-dff4-5138-964d-74e2f75af25b","frontmatter":{"title":"Real-life Applications of Stack Data Structure","description":"Stack helps us in easy access and removal of the most recently added element. So there are several applications of the stack in data structures and algorithms. Some popular applications are: 1) Back and forward buttons in the browser 2) UNDO/REDO functionality in text editors 3) Memory management 4) Delimiter checking 5) Implementing recursion 6) Expression conversion and evaluation, etc.","path":"/blog/application-of-stack-data-structure-in-programming"}},{"id":"1ff3d705-d8f0-51d8-bceb-c84b59feec3d","frontmatter":{"title":"Apriori Algorithm in Data Mining: Examples and Implementation","description":"The Apriori Algorithm is a powerful tool in association rule mining that helps to uncover the relationships and associations among items. This technique is widely used by supermarkets and online shopping platforms to optimize product placement and offer discounts on bundled purchases. In this article, we have explained its step-by-step functioning and detailed implementation in Python.","path":"/blog/apriori-algorithm-in-data-mining"}},{"id":"77e667b1-c6a7-5e54-9ddc-af90ebd2e2f0","frontmatter":{"title":"Guide to Learn Data Science and Become a Data Scientist","description":"Here are 7 key steps to master data science: 1) Learning Python 2) Understanding big  data frameworks like Hadoop and PySpark 3) Learning concepts of APIs, databases and SQL 4) Hands-on experience in data analysis and visualization 5) Learning statistics, probability, and machine learning 6) Building data science projects 7) Making resume and applying for data scientist positions","path":"/blog/guide-to-become-data-scientist"}},{"id":"93a8069e-ad35-5d8b-8682-04136ba84a3f","frontmatter":{"title":"Regex Applications in Data Science","description":"In this blog, we will focus on applications of regex by implementing it to some tedious tasks that wouldn’t be possible without regular expressions. Some standard applications of regular expressions in data science: 1) Web scraping and data collection 2) Text preprocessing (NLP) 3) Pattern detection for IDs, e-mails, names 4) Date-time manipulations","path":"/blog/regex-applications-in-data-science"}},{"id":"dadcca8c-32a0-5e44-a823-b436f16669cd","frontmatter":{"title":"Availability: System Design Concept","description":"Availability of a system is measured as the percentage of the system’s uptime in a given time period so that a system is available to perform tasks and functions under normal conditions. One way to look at system availability is how resistant a system is to failures. High availability systems have tradeoffs, such as higher latency or lower throughput.","path":"/blog/availability-system-design-concept"}},{"id":"7d753706-6c8e-54d6-9d7d-1966961333a4","frontmatter":{"title":"Aspect-Based Sentiment Analysis Using Python","description":"Predicting sentiment at the granular level has become most important as the high level of knowledge of emotions does not satisfy the needs. In NLP, these granular entities are called aspects, and the process of finding this is known as Aspect Based Sentiment Analysis (ABSA). In this blog, we will be developing Aspect Based Sentiment Analysis using Python.","path":"/blog/aspect-base-sentiment-analysis-in-python"}},{"id":"fed4d2ea-4911-500d-9ac2-120b6e48434d","frontmatter":{"title":"Introduction to Databases for Data Science","description":"In data science, databases play a crucial role in storing, managing, and scaling large amounts of data. This data is then analyzed to gain meaningful insights. In this blog, we will delve into the concept of databases and understand how data science relies on them, as well as their advantages.","path":"/blog/introduction-to-database-for-data-science"}},{"id":"1f3e86a7-eab4-54d8-a1f8-aeda05fde1a1","frontmatter":{"title":"Popular Principles of Software Engineering","description":"Principle of software engineering are recommendations for developers to follow during software development. They are good practices for writing extensible, modular, reusable, and maintainable code. Some popular principles of software engineering are Separation of Concerns, Law of Demeter, KISS principle, YAGNI Principle, SOLID Principles, etc.","path":"/blog/principles-of-software-engineering"}},{"id":"fd1c18d2-89dc-5ed4-bb53-33a1b0c959e5","frontmatter":{"title":"AVL Tree Data Structure","description":"AVL Trees is a height-balanced BST named after its inventors, Adelson-Velsky and Landis. This is a variation of binary search trees, also known as self-balancing BST. The property of AVL Trees: The absolute difference of height between left and right subtree is at max 1, which could help us to perform bst operations in O(logn) time complexity.","path":"/blog/avl-tree-data-structure"}},{"id":"4a535739-0699-56e8-a4b6-ca010a9b8431","frontmatter":{"title":"Bloom Filter Data Structure: Implementation and Application","description":"Bloom filter is a space-efficient data structure that tells whether an element may be in a set (either a false positive or true positive) or definitely not present in a set (True negative). It will take O(1) space, regardless of the number of items inserted. However, their accuracy decreases as more elements are added.","path":"/blog/bloom-filter"}},{"id":"134d5aa3-4c91-5299-bf98-c82c21e1795b","frontmatter":{"title":"Binary Search Algorithm","description":"Binary search is an efficient algorithm for searching a value in a sorted array using the divide and conquer idea. It compares the target value with the value at the mid-index and repeatedly reduces the search interval by half. The search continues until the value is found or the subarray size gets reduced to 0. The time complexity of the binary search is O(log n).","path":"/blog/binary-search-algorithm"}},{"id":"ff2d4a56-8147-5ea2-b5cf-c35438916acb","frontmatter":{"title":"Recursive Binary Tree Traversals: Preorder, Inorder and Postorder","description":"There are three types of recursive tree traversals: preorder, inorder and postorder. This classification is based on the visit sequence of root node 1) Preorder traversal: root is visited first 2) Inorder traversal: root is visited after left subtree 3) Postorder traversal: root is visited last. These are also called depth first search or DFS traversal.","path":"/blog/binary-tree-traversals-preorder-inorder-postorder"}},{"id":"98beb259-6746-559d-93fa-067c5a5e94e7","frontmatter":{"title":"AdaBoost and Gradient Boosting in Machine Learning","description":"In machine learning, Boosting is an approach where we sequentially ensemble the predictions made by multiple decision trees. In this blog, we have discussed: 1) What is Bagging and Boosting? 3) Pseudocode for boosting 4) Hyperparameters for Boosting algorithms 4) Variants of boosting algorithms like AdaBoost and Gradient Boost, etc.","path":"/blog/boosting-and-its-variants"}},{"id":"67e981ac-7cb5-56db-abae-335133ab290e","frontmatter":{"title":"Feature Engineering for Machine Learning (Tools and Techniques)","description":"Feature engineering is the process of selecting, correcting, and generating new features from existing attributes in a dataset to optimize the performance of machine learning models. The main steps involved are feature creation, transformation, extraction, and selection. To improve results, we can employ techniques such as imputation, transformation, scaling, and encoding, which will be discussed in this blog.","path":"/blog/feature-engineering-for-machine-learning"}},{"id":"fcbcae4f-5d78-5264-b928-a0620d4fe43c","frontmatter":{"title":"Bias Variance Tradeoff in Machine Learning","description":"When we talk about the machine learning model, one question comes to mind: What are the errors associated with that prediction? Bias and Variance are those error-causing elements, and ideas about these errors will help to diagnose the model. Bias, Variance and Bias-Variance tradeoffs are frequently asked questions in machine learning interviews.","path":"/blog/bias-variance-tradeoff-in-machine-learning"}},{"id":"14d18f5e-56f1-5c97-abef-fe7ac49db81b","frontmatter":{"title":"Boston House Price Prediction Using Support Vector Regressor","description":"Machine learning techniques can accurately predict the house price by considering all important features. In this blog, we have discussed: 1) Why do we need machine learning models for house price prediction? 2) What are the factors that affect house prices? 3) Implementation of predicting house prices using Support Vector Regressor","path":"/blog/boston-house-price-prediction-using-machine-learning"}},{"id":"d7893ddf-f537-540a-8028-1fa3af7edd5c","frontmatter":{"title":"Refresh Ahead Caching Strategy","description":"Refresh-ahead cache asynchronously refreshes the most recent version of data from the database before the expiration. The refresh operation is done on a consistent time interval by some background job. So refresh-ahead cache ensures that data that are likely to be accessed soon are available in the cache before they expire. This will help to reduce the read latency of frequently accessed data.","path":"/blog/refresh-ahead-caching-pattern"}},{"id":"5e33486e-e44e-5a19-ae84-7fca658c174a","frontmatter":{"title":"Building Heap from Array","description":"Before performing any max or min heap operations, we need to build a max or min heap from the given array. The critical questions are: How do we achieve this? How do we maintain the heap structure and heap property at each element in the array? In this blog, we will discuss answers to these questions.","path":"/blog/building-heap-from-array"}},{"id":"8af350d3-25c2-5b10-94c1-bca5d3e65f3c","frontmatter":{"title":"Builder Design Pattern","description":"The Builder is a creational design pattern that allows us to follow a step-by-step process to construct a complex object. Builder design pattern separates the construction of the complex object from its representation by which the same process can create different representations (types) of the complex object.","path":"/blog/builder-design-pattern"}},{"id":"7bfa04eb-9a9c-51ba-ba19-daef3d603024","frontmatter":{"title":"Caching Strategy: Cache-Aside Pattern","description":"In the cache-aside strategy, the cache and database are independent, and the application code will manage operations on the cache and database. For reading the data, the application first checks the cache. If the data is present (cache hit), the cached data will be returned. Otherwise (cache miss), the application will retrieve data from the database, update the cache, and then return the data to the user.","path":"/blog/cache-aside-caching-strategy"}},{"id":"f89dee12-583d-58ef-8d0a-227260b649e4","frontmatter":{"title":"Write-Around Caching Strategy","description":"In write-around caching, when application write new data, it bypasses the cache and directly write it to the database. So data is not stored in the cache during the write operation. When there is a cache miss during a read request, cache will fetch data from the database, update its entry and return data to the application.","path":"/blog/write-around-caching-pattern"}},{"id":"0ed68cf7-207d-58d6-be76-bf1d43a5f721","frontmatter":{"title":"Write-Behind Caching Strategy","description":"Write-behind (write-back) caching pattern is similar to the write-through cache with one big difference: data written to the cache is asynchronously updated in the database. In other words, application will first write to the cache and cache will write to the database after some delay. This asynchronous update will help us to reduce the latency of write operations.","path":"/blog/write-behind-caching-pattern"}},{"id":"1a5b753b-4e05-515a-87ee-c3e109b5bcc3","frontmatter":{"title":"CAP Theorem in Distributed Database Systems","description":"CAP Theorem is an essential concept in system design for designing distributed database systems. It states that a distributed database system can only provide two of these three properties: consistency, availability, and partition tolerance. We can make trade-offs between three available properties based on use cases for our DBMS system.","path":"/blog/cap-theorem-in-system-design"}},{"id":"ef4265a8-d90a-5d3c-8fd7-fdd0b33ccf2b","frontmatter":{"title":"Car Resale Value Prediction Using Random Forest Regressor","description":"Machine Learning has become a tool used in almost every task that requires estimation. Companies like Cars24 and Cardekho.com uses Regression analysis to estimate the used car prices. So we need to build a model to estimate the price of used cars. The model should take car-related parameters and output a selling price.","path":"/blog/car-resale-value-predictor-using-random-forest-regressor"}},{"id":"9b8fccf6-605b-597b-b8cb-5e1c628a61e5","frontmatter":{"title":"SOLID Principle Part 5: Dependency Inversion Principle (DIP)","description":"The Dependency Inversion Principle (DIP) in software engineering states that high-level modules should not depend on low-level modules. In other words, both should depend on abstractions. This abstraction removes the direct dependency on the details, decouples them and allows for easier reuse of the important functionality in the policy.","path":"/blog/dependency-inversion-principle"}},{"id":"32b97ae2-71e5-5d37-86db-24acccb25816","frontmatter":{"title":"Introduction to Caching and Caching Strategies","description":"Caching is the process of storing the results of a request in a cache or a temporary storage location so they can be accessed more quickly. In this blog, we have discussed: 1) How caching works? 2) Real-life examples of caching 3) Types of caching 4) Cache eviction policies 5) The idea of cache invalidation 6) Advantages and disadvantages of caching.","path":"/blog/caching-system-design-concept"}},{"id":"a987e5de-9ef6-5bfa-a6f0-cc6c641356d2","frontmatter":{"title":"Check for pair in an array with a given sum","description":"Given an array of n integers and a target number, write a program to find whether a pair sum exists in the array or not. In other words, we need to check for a pair of elements in the array that sum exactly to the target value. Assume that all elements are distinct. Note: This is an excellent problem to learn problem solving using two pointers and hash table.","path":"/blog/check-for-pair-in-an-array-with-a-given-sum"}},{"id":"96e09ca3-0074-593b-be1c-faa2b2422868","frontmatter":{"title":"Check for Balanced Parentheses in an Expression","description":"Given an expression string containing opening and closing parentheses, write a program to check if the expression is balanced or not. An expression is considered balanced if each opening parenthesis is closed by the same type of closing parenthesis in the exact same order. This problem is excellent for learning problem-solving using stacks.","path":"/blog/check-for-balanced-parentheses-in-expression"}},{"id":"96e0c85a-90bd-5df8-9cff-ad753a75c218","frontmatter":{"title":"Check if two arrays are equal or not","description":"Given two integer arrays X[] and Y[], write a program to check if arrays are equal or not. Two arrays are equal if they have the same elements in any order. If there are repeated elements, then counts of repeated elements must also be the same for both arrays. Note: This is an excellent problem to learn problem solving using a hash table.","path":"/blog/check-equal-arrays"}},{"id":"feaf9d3e-b5da-5ece-9ca3-99402f8ab085","frontmatter":{"title":"Classes and Objects in OOPS","description":"Classes and objects are fundamental building blocks of object oriented programming (OOP). A class is a user-defined blueprint that describes what a specific kind of object will look like, but object is an instance of a class which contains data and associated methods working on that data. Memory is allocated when a class is instantiated.","path":"/blog/classe-and-object-in-oops"}},{"id":"8985349e-e1a2-589d-8a90-880afd7b3d67","frontmatter":{"title":"Chain Rule of Calculus for Neural Networks and Deep Learning","description":"The chain rule is a way to find the derivative of the composite function. In neural networks, the data sample passes through multiple hidden layers and forms a composite function with variables of weights and biases. These values need to be updated with the help of partial derivatives, and that's where the chain rule is applied while performing the backpropagation.","path":"/blog/chain-rule-of-calculus-for-neural-networks"}},{"id":"6847f30f-48eb-538c-9a4a-4ff692bdb0f0","frontmatter":{"title":"Different Types of Machine Learning Models","description":"Having a clear understanding of the different types of machine learning models is crucial for the success of a machine learning project. Each algorithm has its own strengths, weaknesses, and areas of applicability. Understanding these differences helps to select the most appropriate ML algorithm for a given problem and avoid common mistakes. In this blog, we classification of ML models are done on 5 bases and covered all popular concepts of supervised, unsupervised, classification, regression and clustering.","path":"/blog/classification-of-machine-learning-models"}},{"id":"b097cba0-5828-5dc4-bfb3-01faac3211e1","frontmatter":{"title":"Classification and Regression in Machine Learning","description":"We categorize supervised learning into two different classes: Classification Problems and Regression Problems. Both classification and regression in machine learning deal with the problem of mapping a function from input to output. However, in classification problems, the output is a discrete (non-continuous) class label or categorical output, whereas, in regression problems, the output is continuous.","path":"/blogs/classification-and-regression-in-machine-learning"}},{"id":"67990071-f8f2-5b54-bbe6-005e6960f492","frontmatter":{"title":"Climbing Stairs Problem","description":"There is a staircase with n steps, and you can climb either 1 or 2 steps at a time. Write a program to count and return the number of unique ways to climb the nth stair. The order of steps taken matters. Note: Climbing stairs is an excellent problem to learn the dynamic programming approach and the application of the Fibonacci series in problem-solving.","path":"/blog/climbing-stairs-problem"}},{"id":"ff88822c-59d6-5a8b-9a7d-ccac54769f52","frontmatter":{"title":"Client Server Architecture","description":"The client server architecture is a system consisting of clients and servers in which server hosts, manages, and delivers client’s services. Clients are connected to a central server and communicate through a computer network. There are four key components in a client server model: client, load balancer, servers, and network protocols.","path":"/blog/client-server-architecture"}},{"id":"db5f5c83-a244-539b-b1c3-8d908128769a","frontmatter":{"title":"Implement Machine Learning Model using Python from Scratch","description":"These days, the support of libraries and frameworks is easily accessible in machine learning. But in this article, we will implement a basic machine learning project without using frameworks like Scikit-learn, Keras, or Pytorch. We will use two python libraries: NumPy library for numerical operations and Matplotlib library to visualize graphs.","path":"/blog/coding-ml-from-scratch"}},{"id":"28cf6b56-4a91-5727-a19e-90cf104abb6b","frontmatter":{"title":"Difference Between Compile-time and Runtime Polymorphism","description":"In OOP, Polymorphism allows us to code to an interface and has multiple implementations, making the code better. There are two types of polymorphism in java: compile-time and runtime. The compile time polymorphism is implemented using method overloading, and runtime polymorphism is implemented via method overriding.","path":"/blog/difference-between-compile-time-and-runtime-polymorphism"}},{"id":"541a7f15-4302-5e22-91d5-7b1ede0b2b60","frontmatter":{"title":"Conditions and Branching in Python Programming","description":"We sometimes need to execute specific instructions only when some conditions are true. If not, then we will perform a different set of instructions. In this blog, we have discussed: 1) Various comparison operations in Python. 2) What are conditions in python? 3) What is branching? 3) How do we use logical operations to combine the two conditions? etc.","path":"/blog/conditions-and-branching-in-python"}},{"id":"076c1996-0ccc-5d2f-a4e8-14f257e1e4aa","frontmatter":{"title":"Configurations in System Engineering","description":"The ability to adjust and customize hardware or software is referred to as Configurability. More precisely, it refers to selecting programmable parameters that allow the program to function according to the user’s preferences, putting together desired components for a custom system, and selecting settings in the user-programmable sections in the system.","path":"/blog/configurations-management"}},{"id":"062a7a77-554e-5f98-b7b6-05d7c5419df5","frontmatter":{"title":"Cohesion and Coupling in Object Oriented Programming (OOPS)","description":"In object-oriented programming (OOP), the concepts of cohesion and coupling are used to assess the quality of code and ensure it is maintainable and scalable. Cohesion and coupling are interdependent concepts and the goal is to attain high cohesion and low coupling. This will improve the overall maintainability, scalability, and readability of the code.","path":"/blog/cohesion-and-coupling-in-oops"}},{"id":"53665752-c7fa-5572-85ff-6620cfb5aa05","frontmatter":{"title":"Consistent Hashing (An Idea to Scale Distributed Systems)","description":"Consistent Hashing is the most widely used concept in system design, as it offers considerable flexibility in scaling the application. This blog discusses the key concepts and approaches which come in handy while scaling out the distributed system. Consistent Hashing is frequently applied to solving various system-related challenges.","path":"/blog/consistent-hashing-in-system-design"}},{"id":"c97cd69b-2651-5e08-bd75-3e40c9a79cbf","frontmatter":{"title":"Container With Most Water","description":"Given an array of n non-negative integers height[n], where each represents a point at coordinate (i, height[i]). n vertical lines are drawn such that endpoints of line i is at (i, height[i]) and (i, 0). Find two lines, which together with x-axis form a container, such that container contains the most water. This is an excellent problem to learn two pointers approach.","path":"/blog/container-with-most-water"}},{"id":"fe7bd0f1-a820-56ff-abc9-f7ae5ffc83f6","frontmatter":{"title":"Components of an Artificial Neural Network","description":"To fully grasp the concept of a Neural Network, we need to understand the various components that make up a Neural Network. In this blog, we delve into the key components of a Neural Network, including Neurons, Input Layers, Output Layers, Hidden Layers, Connections, Parameters, Activation Functions, Optimization Algorithms, and Cost Functions. These components work together to solve both classification and regression problems in Machine Learning.","path":"/blog/components-of-ann"}},{"id":"ce1784ed-a96d-5623-a855-b0b2c889ae99","frontmatter":{"title":"Count the number of possible triangles","description":"Write a program to count the number of possible triangles that can be formed with three elements from a given unsorted array of positive integers. The three elements, representing the lengths of the sides of a triangle, must satisfy the triangle inequality: the sum of any two sides must be greater than the third side.","path":"/blog/count-the-number-of-possible-triangles"}},{"id":"dfc1d46c-1aa7-591d-9aa4-47dc5a42ea80","frontmatter":{"title":"Counting Sort Algorithm","description":"Counting sort is a stable sorting algorithm that works in O(n) time and space complexity when input are integers in the range 0 to k and k = O(n). Instead of comparison, counting sort uses array indexing to determine position of elements. For each element x, it counts values less than x and places x directly into its correct position in the sorted array.","path":"/blog/counting-sort"}},{"id":"13baaa26-5a04-5a0e-9e81-aee2880ae87a","frontmatter":{"title":"Count Distinct Elements in Every k Size Window","description":"Given array X[] of n integers, write a program to return the count of distinct elements in every window of size k. Here k sized window is a continuous subarray of k elements, and output is an array with the count of unique elements in each window. Note: This is an excellent problem to learn problem-solving using the sliding window approach.","path":"/blog/count-distinct-elements-in-every-window"}},{"id":"733a30c5-a232-5376-b725-1bc777fee650","frontmatter":{"title":"Count values less than or equal to in another array","description":"Given two unsorted arrays X[] and Y[] of size m and n. For each element in the first array X[] count the elements in the second array Y[] whose value is less than or equal to it. There can be duplicate elements in the arrays. Note: This is an excellent problem to learn problem solving using sorting and searching.","path":"/blog/count-values-less-than-equal-to-in-another-array"}},{"id":"ae7b4755-8439-56ec-8c98-c6264cc0e8a8","frontmatter":{"title":"Comparison of Sorting Algorithms","description":"Comparison of sorting algorithms based on different parameters helps us choose an efficient sorting approach. In this blog, we have covered these concepts: 1) What is comparison based sorting? 3) Which sorting is best in terms of time complexity? 3) How to compare sorting algorithms in terms of properties like in-place, stability, etc.?","path":"/blog/comparison-of-sorting-algorithms"}},{"id":"ee06f2d4-4929-5ccd-94a3-83e21b5ac1bd","frontmatter":{"title":"Credit Card Fraud Detection Project Using Machine Learning","description":"This blog will guide you through steps of detecting fraudulent transactions performed on credit cards by developing a machine learning model. Several classification algorithms can perform best and are easily deployable, like support vector machines, logistic regression, etc. In this blog, we use random forest classifier to build fraud detector.","path":"/blog/credit-card-fraud-detection-using-machine-learning"}},{"id":"076ee0c4-12f9-5e2b-98ca-4c4af7de3792","frontmatter":{"title":"Customer Segmentation using Hierarchical Clustering","description":"Customer segmentation is a machine learning application that involves grouping customers based on similarities in their behaviour. This unsupervised learning technique helps companies create customer groups for targeted marketing. One way to group customers is through hierarchical clustering, which can be visualized using dendrograms. In this blog post, we will demonstrate how to implement hierarchical clustering using Python.","path":"/blog/customer-segmentation-using-hierarchical-clustering"}},{"id":"156223cb-b2e1-58de-adaf-bab96e99f2c1","frontmatter":{"title":"Concept of Pointers and Memory in C++ Programming","description":"In this blog, we have discussed critical C++ programming concepts related to dangling pointers, bad pointers, memory leaks, static memory, dynamic memory, reference variable, const and volatile keywords, template, etc. We have also provided various code examples and scenarios of possible bugs to understand each concept in C++.","path":"/blog/critical-concepts-in-cpp-programming"}},{"id":"1f3932ad-6322-56f0-ad27-fdbde2487c6a","frontmatter":{"title":"Crop Yield Prediction Using Artificial Neural Network (ANN)","description":"Artificial Neural Networks (ANNs) have the potential to benefit agriculture by providing accurate predictions of crop yield. Such predictions can be helpful for farmers, allowing them to estimate their profits more precisely. In this blog, we will build an ANN model for crop yield prediction and analyze the impact of rainfall, temperature, and pesticide usage on crop production.","path":"/blog/crop-yield-prediction-using-ann"}},{"id":"f3aec4a6-17c1-5fcc-82da-46746ca5821d","frontmatter":{"title":"Database Indexing in System Design","description":"Database indexing is an excellent way to improve database performance and acts as a handy guide in increasing the performance of the database. An index is nothing more than a reference to data in a table. We should think of a database index in the same way we think of a book index. The aim of creating an index is to make reading and searching queries easier.","path":"/blog/database-indexing-in-system-design"}},{"id":"38c793f0-143e-5c06-965c-22a6ad42f1c1","frontmatter":{"title":"Customer Churn Prediction using Decision Trees","description":"Customer churn is the term used to describe customers who might stop using the company's products or services. Netflix, telecom, or other subscription-based companies use machine learning algorithms to predict the customer churn rate. In this article, we have used a decision tree to build a machine learning model to predict customer churn rate and achieved an accuracy of 83%.","path":"/blog/customer-churn-prediction-using-ml"}},{"id":"f261c131-82b4-5475-9caa-6bb243ca6a71","frontmatter":{"title":"Web Crawler System Design","description":"A web crawler is a system for downloading, storing, and analyzing web pages. It is one of the main components of search engines that compile collections of web pages, index them, and allow users to issue index queries and find web pages that match queries. This blog will focus on system design of web crawler and discussion around various components.","path":"/blog/web-crawler"}},{"id":"1b15075e-e0a6-54a3-be5b-f28d538562ba","frontmatter":{"title":"Database Partitioning in System Design","description":"Data partitioning is a technique of dividing data into independent components. It is a way of splitting data into smaller pieces so that data can be efficiently accessed and managed. Database partitioning is the backbone of modern system design, which helps to improve scalability, manageability, and availability.","path":"/blog/data-partitioning-system-design-concept"}},{"id":"a0b93727-701f-5c04-9cae-4a076a08febc","frontmatter":{"title":"Data Pre-processing of Structured Data in Machine Learning","description":"Nowadays, data collection is one of the most common trends, and every company collects data for various uses. When they record any form of data, it comes with multiple impurities. So data preprocessing techniques are used to remove impurities from data and make it useful for training machine learning models.","path":"/blog/data-pre-processing-for-machine-learning"}},{"id":"b0d9488e-e24e-537f-a4d1-fd7fd5bdd78d","frontmatter":{"title":"Deletion in Binary Search Tree (BST)","description":"Given a binary search tree and a key value. Write a program to delete the given key from the binary search tree and return the updated root node. This is an excellent problem to learn pointer manipulation in binary trees and problem-solving using both iterative and recursive approaches.","path":"/blog/deletion-in-binary-search-tree"}},{"id":"f28d21df-5cf5-5d7d-82c4-891731ee39f5","frontmatter":{"title":"API Rate Limiter System Design","description":"A rate limiter restricts the number of events that a certain user or device can perform within a given time range. It helps us to limit the number of requests a sender can send in a particular period of time. Once the upper limit is reached, the rate limiter blocks further requests. In this blog, we will discuss components and algorithms related to design rate limiter.","path":"/blog/design-api-rate-limiter"}},{"id":"2a602b2c-2056-5101-b05b-14ea8846a2a4","frontmatter":{"title":"Design Facebook Newsfeed","description":"Whenever you open Facebook, the News Feed is the first service that you encounter. It is a continually updating service consisting of posts, photos, videos, comments, and activities of the people and pages you follow. Every Social media platform, such as LinkedIn, Twitter, Youtube, Instagram, etc., has a News Feed service, the main landing page, and displays real-time updates. Many companies also use Social Media platforms for advertising their products and using Machine Learning to offer customized and relevant advertisements to the user to increase their profits. Over the past few years, social media platform such as Facebook has scaled tremendously. News Feed is a vital component of Facebook as it directly affects user engagement and constant interaction. Hence Facebook teams are highly concerned about every use case and aimed to provide real-time services. Without much, let's look into the critical requirement of the Facebook News Feed service.","path":"/blog/design-facebook-newsfeed"}},{"id":"14e5ed2c-82a7-5599-9b31-943367d6b8fc","frontmatter":{"title":"Dropbox System Design","description":"Dropbox is a cloud storage service that allows users to store their data on remote servers. The remote servers store files durably and securely, which can be accessed from anywhere using the internet. These servers are maintained by cloud storage providers. In this blog, we will focus on system design of dropbox and discussion around various components.","path":"/blog/design-dropbox"}},{"id":"684b0859-a1d7-5e30-b6bb-07994e2cac8e","frontmatter":{"title":"Decision Tree: A Tree-based Algorithm in Machine Learning","description":"Decision tree algorithm in machine learning is a hierarchical breakdown of a dataset from root to leaf nodes based on attributes to solve a classification or regression problem. They are non-parametric supervised learning algorithms that predict a target variable's value. We have discussed various decision tree implementations with python.","path":"/blog/decision-tree-algorithm-in-ml"}},{"id":"9d46eaf7-d62f-5ecb-bc1c-53d95594470a","frontmatter":{"title":"Designing Instagram: System Design Interview Question","description":"Instagram is a photo and video-sharing social media platform that allows users to share their creations with others. The original poster can set the visibility of these posts (photos/videos) to private or public. Posts can be liked and commented on by users. Users can follow and see the news feeds of other users (a collection of posts from the users they are following).","path":"/blog/design-instagram"}},{"id":"d1321856-79da-52e1-a6f2-225ae60ec0d9","frontmatter":{"title":"Design Pastebin: System Design Interview Question","description":"Pastebin is a online content hosting service where users can store and share content in the form of text or images over the internet by generating a unique URL so that anyone can access the content via that URL. Users can also update the content if they are logged in. This blog will focus on pastebin system design and discussion around various components.","path":"/blog/design-pastebin-system-design-interview-question"}},{"id":"417d7332-fce9-566e-b1fc-8bd291969c1f","frontmatter":{"title":"Design Key-Value Store","description":"A key-value database is a non-relational database that stores data using a simple key-value mechanism. Data is stored in a key-value database to collect key-value pairs, with a key serving as a unique identifier. Both keys and values can be any object (simple or complex objects). This blog will focus on system design of key value store and discussion around various components.","path":"/blog/design-key-value-store"}},{"id":"fead2126-c846-5999-8d23-62412b1da6b3","frontmatter":{"title":"Design QR Code Generator for a Grocery Store","description":"QR code payment is one of the contactless payment methods to transfer funds from the buyer’s wallet to the seller’s wallet or account. Here QR code is based on a matrix barcode, which can be read by any mobile device with a camera. This blog will focus on how to design QR code payemnt system and discussion around various components.","path":"/blog/design-qr-code-system"}},{"id":"4cec4b04-4064-5c4a-ad04-6ca1d8796326","frontmatter":{"title":"Design Typeahead (Autocomplete) System","description":"As users type their search query, the Typeahead search feature guesses the rest of a word and offers the top suggestions that begin with whatever they have written. Here frequency and recentness of a query are used to sort suggestions. Search autocomplete system is used by many search platforms like Facebook, Google, Instagram, etc.","path":"/blog/design-typeahead-system"}},{"id":"8b77137a-ef7c-5799-a579-c999bd6437fc","frontmatter":{"title":"Twitter System Design","description":"Twitter is a social media platform where users can post and interact with tweets. Users can also subscribe to feeds of other users and receive tweet notifications from those they follow. Tweets are almost 140–280 characters communication. This blog will focus on system design of Twitter and discussion around various components.","path":"/blog/design-twitter"}},{"id":"579ee644-4c0d-56e1-b43d-343335414c1a","frontmatter":{"title":"Design WhatsApp Messenger: System Design Interview Question","description":"Whatsapp is a social messenger platform, which allows users to send messages to each other. It is a messaging system that is widely used throughout the globe. Here in this blog, we’ll be discussing WhatsApp’s generic architecture and which could also be used as a base for designing any such chat application. So let’s get started by discussing the key requirements of our service.","path":"/blog/design-whatsapp"}},{"id":"5bb544d7-2ec2-5981-879b-c424eeb2d81d","frontmatter":{"title":"Design URL Shortening Service like TinyURL","description":"TinyURL is a URL-shortening system that creates shorter aliases for long URLs. Whenever a user visits the short URL, they will be redirected to the original URL. Our goal is to design a highly scalable service that could allow users to create shorter URLs from long URLs. This blog focus on TinyURL system design and discussions around various components.","path":"/blog/design-a-url-shortening-service-like-tiny-url"}},{"id":"a7878677-4ba5-5b35-8851-21da2e54d78e","frontmatter":{"title":"Design Yelp (Nearby Friends Service)","description":"Design nearby friends service like yelp, where users can search for nearby places like restaurants, shopping malls, etc., and add/view reviews of places. Service should store location information so that it delivers a list of places near the user after a query is made. This blog will focus on system design of yelp and discussion around various components.","path":"/blog/design-yelp"}},{"id":"4625fe9b-c83f-5c04-ae96-1cd4d6f5d07d","frontmatter":{"title":"Youtube System Design","description":"YouTube is a frequently used social networking platform for video sharing and advertising. It is a widely used service, our system should be cost-efficient, highly available, scalable, and reliable. It should offer low latency and high throughput. This blog will focus on system design of youtube and discussion around various components.","path":"/blog/design-youtube-system-design-interview-question"}},{"id":"07a887ce-2cf4-5880-ad5a-6dc168c7733d","frontmatter":{"title":"Uber System Design","description":"Uber continues to improve its operations by deploying and developing new services to meet market demand, finding the most efficient routes, detecting any potential fraud, and monitoring data to provide the most efficient real-time services. This blog will focus on uber system design and discussion around various components.","path":"/blog/design-uber"}},{"id":"a1865818-ab1a-5fc9-8dc4-d7c6b0cd0a7f","frontmatter":{"title":"Detect Loop in Linked List (Floyd's Cycle Detection Algorithm)","description":"Given the head of a linked list, write a program to find if linked list has a cycle or not. Return true if there is a cycle or loop in the linked list. Otherwise, return false. A linked list with cycle causes iteration to fail because the iteration will never reach the end. So, detecting a linked list loop is important before applying an iterative approach.","path":"/blog/detect-loop-in-linked-list"}},{"id":"6b90a41e-0cc9-5e3a-8832-63a7db6351c1","frontmatter":{"title":"Do More Of What You Love to Do","description":"Hi Everyone, Myself Gaurav Kumar, and I am a Software Engineer, Data Scientist at KPIT Technologies.","path":"/blog/success-story-in-data-science-gaurav"}},{"id":"db6c53b1-e83d-570a-820f-b0677cb315c0","frontmatter":{"title":"Basic System Design Concepts for Tech Interview","description":"System design is an important topic that tech companies ask about during interviews. On the other hand, it is also important to solve large-scale software problems. This blog will go through fundamental system design concepts important for solving system design questions, learning system design at advanced level, and preparing for interviews.","path":"/blog/basics-of-system-design"}},{"id":"b0bbc366-ff77-58a3-849c-9a30cfa46481","frontmatter":{"title":"Introduction to Distributed System Concepts","description":"Nowadays, almost every large-scale application is based on distributed computing. So understanding distributed system concepts is crucial for designing fault-tolerant, highly scalable, and low-latency services. This blog will introduce concepts of distributed systems, how they are applicable in real-world scenarios and their key characteristics.","path":"/blog/distributed-system-in-system-design"}},{"id":"471ef54b-cda8-5f4f-a70f-7d3fb5ea47be","frontmatter":{"title":"Domain Name System (DNS) - System Design Concept ","description":"Thirty years ago, when the Internet was still in its infancy when you wanted to visit a website you had to know the IP address of that site. That’s because computers are and were only able to communicate using numbers.","path":"/blog/domain-name-system-system-design-concept"}},{"id":"8c5e7408-dcef-5595-9462-4dee77764d84","frontmatter":{"title":"Divide and Conquer Algorithm","description":"In data structures and algorithms, Divide and Conquer is a recursive problem-solving approach that divides the problem into smaller subproblems, recursively solves each subproblem, and combines the subproblem's solutions to get the solution of the original problem. So, there are four steps of the divide and conquer method: divide, conquer, combine and base case.","path":"/blog/divide-and-conquer"}},{"id":"e78793db-770d-511e-abcf-15c4f57d8812","frontmatter":{"title":"Don't hesitate to take the roads less traveled by","description":"Sandesh Kumar, a Software Development Engineer at AWS, shares his journey in computer science, starting from his passion for math and computer science in school. Despite discouragement, he pursued computer science and data structures and algorithms during his time at IIT. Through effective strategies, he regained confidence and excelled.","path":"/blog/dont-hesitate-to-take-the-roads-less-travelled-by-sandesh"}},{"id":"66ccac0a-e3b2-5734-8641-f15b98c4e0a6","frontmatter":{"title":"Dynamic Array Introduction, Implementation and Properties","description":"A dynamic array is a variable-size data structure which increases array size dynamically as we need them. Dynamic arrays overcome a limitation of static arrays, where we cannot adjust the size in the middle of the code execution. It is implemented as a standard library in programming languages like vector in C++ and ArrayList in Java.","path":"/blog/dynamic-array"}},{"id":"d3c8000e-162f-5319-9608-e01633488ad8","frontmatter":{"title":"Divide and Conquer vs Dynamic Programming","description":"Divide and conquer and dynamic programming differ in terms of implementation, analysis, and the nature of the subproblems. Divide and conquer divides the problem into independent subproblems, solves them recursively, and combines them to get the solution. In dynamic programming, problems are divided into dependent subproblems and solved in an order to get the solution.","path":"/blog/dynamic-programming-vs-divide-and-conquer-approach"}},{"id":"a99b7563-ebf7-52f8-9e70-8584920205b3","frontmatter":{"title":"Email Spam and Non-spam Filtering using Machine Learning","description":"In recent years, the quantity of spam emails has decreased significantly due to spam detection and filtering software. In this, We have covered these concepts: 1) Methods to segregate incoming emails into the spam or non-spam categories? 2) Steps to implement a spam classifier using the k-NN algorithm. 3) Real-life use case of Gmail, Outlook, and Yahoo.","path":"/blog/email-spam-and-non-spam-filtering-using-machine-learning"}},{"id":"20cd0b64-2fa4-5a44-a2a6-b1482ec81840","frontmatter":{"title":"Employee Attrition Rate Prediction Using Machine Learning","description":"In this blog, we have demonstrated data analysis of the company's attrition rate and built a machine learning model (logistic regression model) to predict it. We have explored some exciting patterns that lead to employee attrition. We will be using Kaggle's IBM HR analytics Employee Attrition and Performance dataset for this analysis.","path":"/blog/attrition-rate-prediction-using-ml"}},{"id":"69cc89e3-f022-5b3f-8e74-b0d3913ccbfa","frontmatter":{"title":"What is Encapsulation in OOPS?","description":"In OOPS, Encapsulation is one of the basic concepts that bundles data and methods into a single block called class. It is a pathway for restricting direct access to some data and methods (which leads to data hiding). In other words: Encapsulation is about wrapping data and methods into a single class and protecting it from outside intervention.","path":"/blog/encapsulation-in-oops"}},{"id":"75e16923-ca96-5a3e-adf2-6d0d5cfcdc4b","frontmatter":{"title":"Exception Handling in Java Programming","description":"Exception handling is one of the most important features of java programming that allows us to handle runtime errors caused by exceptions. An exception is an event that occurs during the execution of a program and disrupts the expected flow of the program. In this blog, we will learn exception types, classes and how to handle exceptions in java with examples.","path":"/blog/exception-handling-java"}},{"id":"4e98bed4-0f3c-5a1b-8954-2942047bf75a","frontmatter":{"title":"Edit Distance (Levenshtein Distance) Problem","description":"Write a program to find the minimum number of operations required to convert string X to string Y. You have the following three operations permitted on a string: 1) Insert a character 2) Delete a character 3) Replace a character. The edit distance between two strings is the minimum number of operations (insertions, deletions, or substitutions of characters) required to transform one string into the other.","path":"/blog/edit-distance"}},{"id":"14abd291-eb79-5cd2-bc94-42c9815d05da","frontmatter":{"title":"Factory Method Design Pattern","description":"The factory method design pattern is a creational design pattern in which we define a superclass for creating an object but let the subclasses decide which class to instantiate. Therefore, the factory method enables a class to delegate instantiation to its subclasses and eliminates the coupling of concrete products to the client code.","path":"/blog/factory-design-pattern"}},{"id":"97444500-d38b-5648-9067-c875d2730fb5","frontmatter":{"title":"Facade Design Pattern","description":"In object-oriented programming, Facade is a structural design pattern that simplifies the interaction between the client and complex subsystem. For this, we design a facade class that works as an interface between the client and interdependent classes in the subsystem. In other words, the facade class is a wrapper class, which encapsulates the complexity of the subsystem.","path":"/blog/facade-design-pattern-java"}},{"id":"960acc82-de25-53ee-8947-6d5322ca69fc","frontmatter":{"title":"Feature Selection Method in Machine Learning","description":"The best machine learninmodel would have the lowest number of features involved in the analysis keeping the performance high. Therefore, determining the relevant features for the model building phase is necessary. In this session, we will see some feature selection methods and discuss the pros and cons of each.","path":"/blog/feature-selection-techniques"}},{"id":"6a299ff9-1103-5ca2-a629-08d4a81f2322","frontmatter":{"title":"Find a fixed point in a given array","description":"Write a program that returns a fixed point in the given sorted array of distinct integers. A fixed point is an index i such that X[i] = i. If a fixed point exists, the program should return the index of the fixed point. If no fixed point is found, the program should return -1. Note that the integers in the array can be both positive and negative.","path":"/blog/find-a-fixed-point-in-a-given-array"}},{"id":"3f9b84a7-f583-54e8-bbea-f91e4501f1c0","frontmatter":{"title":"Introduction to Loss and Cost Function in Machine Learning","description":"Optimization of error function is the respiratory process for machine learning algorithms. But this error function varies for classification and regression problems. In this blog, we have discussed: 1) Definition and importance of loss function 2) Loss functions used for regression 3) Loss functions used for binary classification 4) Loss functions used for multiple classification, etc.","path":"/blog/loss-and-cost-functions-in-machine-learning"}},{"id":"ccb64ad0-e751-531a-bd69-0b3edda7ae62","frontmatter":{"title":"Find Equilibrium Index of an Array","description":"Write a program to find the equilibrium index of an array. An array's equilibrium index is an index such that the sum of elements at lower indexes equals the sum of elements at higher indexes. Note: This is an excellent coding question to learn time and space complexity optimization using a prefix array and a single loop using variables.","path":"/blog/find-equilibrium-index-of-an-array"}},{"id":"91178a1c-6a2f-50fc-8da5-e829cb4b726c","frontmatter":{"title":"Fenwick Tree (Binary Indexed Tree) Data Structure","description":"A Fenwick tree, also known as a binary indexed tree (BIT), is a data structure that allows for efficient updates and prefix sum calculations on an array. It has a time complexity of O(logn) for both updates and range sum queries. Fenwick trees were first described in a 1994 paper by Peter M. Fenwick titled \"A new data structure for cumulative frequency tables.","path":"/blog/binary-indexed-tree"}},{"id":"b7dab271-1155-5c0a-8753-3e86d17633fe","frontmatter":{"title":"Find all Possible Combinations of K Numbers from 1 to n","description":"Given two numbers, n and K, write a program to find all possible combinations of K numbers from 1 to n. You may return the answer in any order. Note: This is an excellent problem for learning problem-solving using the inclusion and exclusion principle of combinatorics and backtracking. We can apply similar ideas to solve other problems.","path":"/blog/find-all-combinations-of-k-numbers"}},{"id":"a94c58b2-ef78-56b2-bff3-fa3fb04df3b4","frontmatter":{"title":"Find Height of a Binary Tree","description":"Given a binary tree, write a program to find its height. In other words, we are given a binary tree and we need to calculate the maximum depth of the binary tree. The height or maximum depth of a binary tree is the total number of edges on the longest path from the root node to the leaf node. Note: This is an excellent problem to learn problem-solving using DFS and BFS traversal.","path":"/blog/find-height-of-a-binary-tree"}},{"id":"d0e5348b-43a1-5f83-80a0-48cc720a461c","frontmatter":{"title":"Find Middle of the Linked List","description":"Given a singly linked list, write a program to find the middle element of the linked list. We need to return the second middle node if the node count is even. The goal should be to use a single loop and O(1) extra space to find the middle element. Note: This is an excellent problem to learn problem-solving using fast and slow pointers in the linked list.","path":"/blog/find-middle-of-linked-list"}},{"id":"9cf1e810-62e7-5c18-9ea2-434f27016875","frontmatter":{"title":"Find all Leaders in an Array","description":"Given an integer array X[] of size n, write a program to find all the leaders present in the array X[]. An array element is a leader if it is strictly greater than all elements to its right side. So the largest and last element of an array is a leader by default. Note: This is an excellent problem to learn problem-solving using a single loop and variables.","path":"/blog/leaders-in-an-array"}},{"id":"226dd0f6-316a-5587-9bdd-7b08fe5ce204","frontmatter":{"title":"Find Minimum in a Rotated and Sorted Array","description":"A sorted and rotated array of size n is given, write a program to find minimum element in rotated sorted array. Rotation by k times means that the first k sorted elements of the array will move to the last k positions, and the last n - k sorted elements will move to the first n - k positions. Note: We don’t know how many times array is rotated in the given problem.","path":"/blog/minimum-in-sorted-and-rotated-array"}},{"id":"dc0eb49d-96e7-5385-b50e-60eab77534a3","frontmatter":{"title":"Find Next Greater Element for Every Element","description":"Given an array, find the next greater element for every element in the array (NGE). The next greatest element for an element is the first largest element on the right side. For elements for which no next largest element exists, consider the next greater element as -1. We have discussed two stack-based solutions: 1) Traversing from left to right, 2) Traversing from right to left.","path":"/blog/find-next-greater-element"}},{"id":"d9780c08-0224-51b8-bf42-797cb3f4bbff","frontmatter":{"title":"Find Intersection of Two Arrays","description":"Given two integer arrays, X[] and Y[] of size m and n, write a program to find intersection of these two arrays. The intersection is a list of common elements present in both arrays. Suppose m > n, all array elements are distinct and intersection elements can be in any order. Note: This is an excellent problem to learn problem solving using various approaches.","path":"/blog/intersection-of-unsorted-arrays"}},{"id":"2dcedac8-4e17-535c-a9de-e7c046f546a7","frontmatter":{"title":"Find Maximum in First Increasing and then Decreasing Array","description":"You are given an array of n integers that is first increasing and then decreasing. Write a program to find the maximum value in the array. Our goal should be to solve this problem using O(logn) time complexity. Note: This is an excellent problem to learn problem solving using binary search, where we modify binary search to get an efficient solution.","path":"/blog/find-maximum-in-first-increasing-and-then-decreasing-array"}},{"id":"b44b058d-44c9-5752-9765-22b27c5b615e","frontmatter":{"title":"Find Kth Smallest Element in an Array","description":"Given an array and a positive integer k, write a program to find the kth smallest element in the array. This is an excellent problem to learn problem-solving using the max and min heap data structures. The quick-select approach (divide and conquer) is also worth exploring because it helps to optimize time complexity to O(n) on average.","path":"/blog/find-the-kth-smallest-element-in-an-array"}},{"id":"6d91af74-c078-5e99-b858-d512f55eb97c","frontmatter":{"title":"Find maximum j – i such that X[j] > X[i]","description":"Given an array X[] of integers, find the maximum parity index. The parity index is the maximum index difference between two elements (X[i], X[j]) such that, j > i and X[j] > X[i]. In other words, we need to find maximum j - i such that j > i and X[j] > X[i]. Note: This is an excellent problem to learn problem solving using sorting and two pointers approaches","path":"/blog/find-the-maximum-j-i-in-array"}},{"id":"410bdd8b-8faf-5c15-9a13-44c3efd77fa0","frontmatter":{"title":"Find Majority Element in an Array","description":"You are given an array X[] of n elements, write a program to find majority element in an array. A majority element is an element that appears more than n/2 times, so there is at most one such element. Assume that array is non-empty and majority element always exists in the array. Note: This is an excellent problem to learn various approaches.","path":"/blog/find-the-majority-element-in-an-array"}},{"id":"da95c8e1-f990-5af2-a9b0-46b22e48061b","frontmatter":{"title":"Find Row With Maximum Number of 1s","description":"Given a boolean 2D array, where each row is sorted. Find the row with the maximum number of 1s. This is an excellent matrix problem that can be solved in linear time complexity. The best part is — we are using the sorted order property and nested loops to improve the solution over the binary search approach.","path":"/blog/find-row-with-maximum-number-of-1s"}},{"id":"2b515a3b-d7cb-5e29-85a5-a9489ab19057","frontmatter":{"title":"Check whether an array is a subset of another array","description":"Given two unsorted arrays of size m and n, find whether one array is a subset of another array or not. An array Y[] will be a subset of another array X[] if each element of Y[] is present in X[]. Assume that there are no repeated elements in both arrays and n <= m. Note: This is an excellent problem to learn problem solving using various approaches.","path":"/blog/check-whether-array-is-subset-of-another-array"}},{"id":"38b894f9-9b15-53da-a8fb-89511871057c","frontmatter":{"title":"Find Maximum and Minimum Element in an Array","description":"Given an array X[] of size n, write a program to find the maximum and minimum elements while making the minimum number of comparisons. This is an excellent question to learn problem-solving using a single loop and divide and conquer approach. In the efficient single-loop solution, we increment the loop by two to optimize the comparison count.","path":"/blog/find-the-minimum-and-maximum-value-in-an-array"}},{"id":"a9319638-6732-5bc5-bb4e-fc220c996488","frontmatter":{"title":"Top Challenges Faced by Beginners in Machine Learning","description":"Many learners want to master machine learning and don’t know where to start. It seems like a formidable task, especially if one lacks a thorough background. This article will discuss some of the factors that can be obstacles in learning machine learning. Working around these obstacles can help us to develop a long-term interest in this subject.","path":"/blog/top-5-machine-learning-challenges-for-beginners"}},{"id":"a99fc414-cd7a-5f8a-b7c3-7dd1eb73ac00","frontmatter":{"title":"Find First and Last Position of Element in Sorted Array","description":"Given an array of integers sorted in ascending order, the program should find the first and last occurrence of a given element. The goal is to design an algorithm with O(log n) time complexity. Note that this is an excellent question to learn problem-solving using binary search. Here, the binary search needs to be applied twice to solve this problem.","path":"/blog/first-and-last-positions-of-element-in-sorted-array"}},{"id":"872dd9d7-8607-5567-ae80-56f5e55bfdb0","frontmatter":{"title":"Find First Missing Positive in an Array","description":"Given an array that includes both positive and negative numbers, write a program to find the first missing positive integer. This is one of the best problems for learning step-by-step time complexity optimization using various approaches. An in-place hashing solution uses the same input array to process values and generate output.","path":"/blog/first-missing-positive"}},{"id":"1a7ed86e-75c0-5d1b-8400-8fa07c460616","frontmatter":{"title":"Fizz Buzz Problem","description":"Given an integer n, write a program to return string representation of numbers from 1 to n. If number is divisible by 3, we store “Fizz”. If number is divisible by 5, we store “Buzz”. If number is divisible by both 3 and 5, we store “FizzBuzz”. Hint: This is an excellent puzzle to learn coding concepts like conditional statements, loops, etc.","path":"/blog/fizz-buzz-problem"}},{"id":"7e84c72f-d2e6-524a-8313-afcc06fb1406","frontmatter":{"title":"Google use of Machine Learning for disaster management","description":"One of the major harms these disasters cause is damaging the buildings. Manual analysis of such damages would take many weeks, even for experts.","path":"/blog/google-use-of-machine-learning-for-disaster-management"}},{"id":"ff011d37-2d02-504c-baa2-e19fb3810734","frontmatter":{"title":"Flood Fill Algorithm","description":"The flood fill problem is a way to fill a region of connected pixels with a new colour, starting from a given pixel in an image. You are given an image represented by an m x n grid of integers, where the image[i] represents the pixel value at position (i, j). You are also given the coordinates of a starting pixel (x, y) and a new colour to use for the flood fill operation.","path":"/blog/flood-fill-problem"}},{"id":"e8327632-e1b3-5326-8543-1acb19d581f1","frontmatter":{"title":"Introduction to Graph Database","description":"In distributed systems, graph databases help us to efficiently traverse complex hierarchies, identify hidden connections, and uncover inter-relationships between elements. That’s why they are used in various applications, where things are interconnected.","path":"/blog/graph-database-system-design"}},{"id":"3ea57626-c0a0-55b7-b1f4-b66fd7505b68","frontmatter":{"title":"Introduction to Hashing and Hash Table in Data Structure","description":"Hashing is a technique to map (key, value) pairs into the hash table using a hash function. It uses an array of size proportional to the number of keys and calculates an array index from the key using a hash function. We use hashing/hash tables in several real life applications and solve various coding questions efficiently in data structures.","path":"/blog/introduction-to-hashing-and-hash-table"}},{"id":"be603acc-ecbc-5dc7-a4d5-81a0bd534bef","frontmatter":{"title":"Flood Forecasting using Machine Learning Models","description":"Modern techniques like machine learning and neural network can be used to predict the risk of floods before-head. In this article, we have developed a flood forecasting model that takes rainfall data for January to June and predicts the flood possibilities for July, August and September. We have compared the performance of logistic regression, SVM, random forest and ANNs.","path":"/blog/flood-forecasting-using-machine-learning"}},{"id":"9b9c6ccf-7479-5f68-91a5-c97607495699","frontmatter":{"title":"Handling Date and Time in Python","description":"As data scientists, we should know how to handle the date-time data and the standard set of date-time operations we can apply to transform the raw data. Fortunately, we have date-time manipulation libraries specifically for this purpose. In this blog, we will talk about all basic date-time manipulations, explorations, transformations, and applications.","path":"/blog/handling-date-time-python"}},{"id":"fefae956-1b00-5842-af50-806329173f2b","frontmatter":{"title":"Hands-on Methods for Structured Data Pre-Processing","description":"Companies are collecting tons of data, and the need for processed data is increasing. In this blog, we will do hands-on on several data preprocessing techniques in machine learning, like feature selection, feature quality assessment, feature sampling, and feature reduction. We will use different datasets for demonstrating data preprocessing methods.","path":"/blog/structured-data-pre-processing-hands-on"}},{"id":"96dcb402-3581-5503-964f-8e213c7b2952","frontmatter":{"title":"Forecasting Stock Market Price Using Neural Networks","description":"Artificial Neural Networks (ANNs) are used to forecast the stock market price. Based on that, Traders take a decision on whether to buy or sell any stock. In this blog, we will be building a forecasting technique for Amazon stock prices using 1 and 2 hidden-layer neural networks. We will evaluate and compare the performance of ANN with the traditional SVM model.","path":"/blog/forecasting-stock-market-price-using-ann"}},{"id":"64585c05-e44d-53ec-af92-984a848cdea4","frontmatter":{"title":"Having knowledge from multiple domain helps in problem solving","description":"Aditya Vikram, a software engineer at Adobe, shares his background and journey in computer science. He pursued Electrical Engineering at IIT Kanpur and explored competitive programming, algorithms, and data structures throughout his college years. He worked on personal projects and secured a summer internship at Adobe Research, which led to a pre-placement offer.","path":"/blog/computer-science-success-story-aditya"}},{"id":"298f2226-1d92-505b-b7c4-09c15a809b05","frontmatter":{"title":"History of Algorithms with Timeline","description":"Algorithms have a long history, and the word can be traced back to the 9th century. The Persian mathematician Abdullah Muhammad bin Musa al-Khwarizmi often cited as the father of algebra was indirectly responsible for creating the term Algorithm. The critical question is: Why did we use the above algorithms in ancient times?","path":"/blog/history-of-algorithms"}},{"id":"4482a819-e57d-5ca0-b5ee-3bff771a02ab","frontmatter":{"title":"Heapify Operation on Heap Data Structure","description":"We use the heapify operation to fix the violation of heap property at a given node in the heap. Such violations actually happen due to several reasons: 1) After inserting a new element in the heap 2) After removing the max element in a max heap or min element in the max heap 3) After updating some value with the new value.","path":"/blog/heapify-operation-heap-data-structure"}},{"id":"b225e15a-2bc3-53a4-9138-ffe26d347d96","frontmatter":{"title":"How Industries Use The Technology of Machine Learning?","description":"As a machine learning enthusiast, you must have heard the above statement. But have you ever thought that when that future will come?","path":"/blogs/how-industries-use-machine-learning"}},{"id":"f4823599-0aad-513e-8354-140b91c2a003","frontmatter":{"title":"Design Google Docs","description":"Google docs is an online word processor that is part of Google’s free, web-based Google docs editors package. It is a massive system with tons of features. If we think about how google docs works, we can realize that it is much more complex than it seems to be. This blog will focus on system design of google docs and discussion around various components.","path":"/blog/design-google-docs"}},{"id":"4f5c8a4b-554b-5973-bdb4-fe3b192ae93b","frontmatter":{"title":"How to Approach System Design Questions during Interview?","description":"The system design interview is an open-ended conversation. So as a candidate, we need to follow well-defined steps to solve system design questions: 1) Requirements clarifications 2) Capacity estimation 3) Database design 4) Creating high-level design 5) Designing core components 6) Scaling the design 7) Resolving key bottlenecks.","path":"/blog/how-to-approach-system-design-interview"}},{"id":"babbc5d6-0713-5a20-8875-b35607f812a4","frontmatter":{"title":"Difference between Artificial Intelligence and Machine Learning","description":"Artificial intelligence and machine learning are the most famous buzzwords in the technical industries. We generally use them as synonyms, but these tech stacks are different, and machine learning is just a part of artificial intelligence. In this blog, we will discuss the basic comparison between artificial intelligence and machine learning by discussing their industrial applications.","path":"/blog/difference-between-ai-ml"}},{"id":"0397521d-8d24-565c-a893-5a219b29470a","frontmatter":{"title":"How to Develop Algorithmic Thinking in DSA?","description":"Algorithmic thinking is a method for solving data structure and algorithms problems based on a clear definition of the steps logically and repeatedly. The best idea would be to develop this skill independently from learning programming with proper practice and visualization. This could help us learn several problem-solving strategies in coding.","path":"/blog/how-to-develop-algorithmic-thinking-in-data-structure-and-algorithms"}},{"id":"1376b606-f7cf-5ca6-9389-fba3578b1a26","frontmatter":{"title":"Types of Load Balancing Algorithms","description":"Load balancers distribute requests to servers based on various load balancing techniques. These techniques use different algorithms to select servers. There are two types of load balancing algorithms: 1) Static load balancing: round robin, URL hash, etc. 2) Dynamic load balancing: least connection method,  least response time method, etc.","path":"/blog/types-of-load-balancing-algorithms"}},{"id":"065f9f75-7819-5ae8-a2a8-3f3aab144db8","frontmatter":{"title":"How to Choose Correct Database in System Design?","description":"Have you ever been in a dilemma while choosing the most appropriate database for your application? What could be the most viable storage type that could meet the business expectations and offer efficient services? For selecting the database, we should have an understanding of the structure and the functionalities of each kind of database.","path":"/blog/how-to-choose-right-database"}},{"id":"b3bf6740-920d-529c-b9dd-87e4d9abcd31","frontmatter":{"title":"How to Get Started with Competitive Programming?","description":"Competitive Programming is a coding contest involving many participants who compete to design efficient solutions to coding problems in a given time. It is one of the great activities to enhance coding, problem-solving and analytical skills. This blog is a step-by-step guide for beginners to start a competitive programming journey.","path":"/blog/how-to-get-started-with-competitive-programming"}},{"id":"cdcc6f6d-8df0-5a90-9183-87836e00681c","frontmatter":{"title":"How to Gather Requirements and Write Use Cases for a Software?","description":"Requirement gathering is the process of collecting and documenting the needs, expectations, and constraints of stakeholders to develop software. On the other hand, Use cases are used in software development to capture and describe the functional requirements of a system. In this blog, we will discuss how to capture requirements properly and write good use cases for developing good software.","path":"/blog/requirements-gathering-and-writing-use-cases"}},{"id":"98127ccf-ed94-573a-bcbd-716c61e973c9","frontmatter":{"title":"IBM uses machine learning to increase the productivity of solar plants.","description":"One of the famous use-cases of Machine Learning and Artificial Intelligence in today's era is to enhance the productivity of renewable energy resources.","path":"/blog/ibm-uses-machine learning-to-increase-the-productivity-of-solar-plants"}},{"id":"55822f32-f6bd-5120-9af7-4b4169be332c","frontmatter":{"title":"Step by Step Guide to Get Started with Machine Learning","description":"In this blog, we have discussed steps to master machine learning for implementing applications. Here are the steps: 1) Learn python 2) Learn math for ML 3) Learn concept of data, analysis, manipulation, filtering, and visualization and choose any open source dataset 5) Learn basics of ML and choose problem statement 6) Learn deep learning and neural networks.","path":"/blog/how-to-start-machine-learning-journey-a-step-by-step-guidance"}},{"id":"273df604-e458-5ca0-add2-8dc5c22e6acf","frontmatter":{"title":"How Uber uses Machine Learning to Facilitate Surge Price?","description":"Uber ride prices are not constant like public transport. We might have observed such variations while using the cab service. To calculate this variation, Uber uses a Machine Learning-powered Surge Pricing algorithm. In this article, we will build a machine learning model to predict the serge multiplier based on different weather conditions.","path":"/blog/how-uber-use-machine-learning"}},{"id":"70236cea-4601-5439-aacc-d3c9699732db","frontmatter":{"title":"Implement Queue Using Two Stacks","description":"Write a program to implement queue using stack. We should use stack operations like push, pop, top, size, and isEmpty for implementing queue operations like enqueue, dequeue, and front. In this blog, we have discussed two approaches for implementing queue using two stacks: 1) Dequeue O(1) and Enqueue O(n) 2) Enqueue O(1) and Dequeue O(1).","path":"/blog/queue-using-stacks"}},{"id":"18bb856f-9863-58f2-a5f7-be7619b06701","frontmatter":{"title":"Implement Least Recently Used (LRU) Cache","description":"The least recently used (LRU) cache is one of the popular caching strategies, which defines the policy to discard the least recently used items first from the cache and make room for new elements when the cache is full. It is used to organize items in order of their use, which allows identifying items that have not been used for a long time.","path":"/blog/implement-least-recently-used-cache"}},{"id":"4efd3a94-3e0a-53ea-997c-eca248f69466","frontmatter":{"title":"Image Compression Using Principal Component Analysis (PCA)","description":"In this blog, we will build an image data compressor using an unsupervised learning technique called Principal Component Analysis (PCA). We will be discussing image types and quantization, step-by-step Python code implementation for image compression using PCA, and techniques to optimize the tradeoff between compression and the number of components to retain in an image.","path":"/blog/image-compression-using-pca"}},{"id":"d7c9ce99-239c-5042-9d0f-40f533e7c6d4","frontmatter":{"title":"Inorder Successor of a Node in Binary Search Tree (BST)","description":"Given a node x and the root of a binary search tree, write a program to find the in-order successor of node x. The in-order successor of node x is a node that will be visited just after node x during an in-order traversal. In other words, the in-order successor of a node x is the node with the smallest key greater than x->key.","path":"/blog/inorder-successor-in-binary-search-tree"}},{"id":"a9f968ef-e37f-57bc-b704-87c83df0135f","frontmatter":{"title":"Inheritance in OOPS: An Idea of Code Reusability","description":"Inheritance is one of the core principles of object oriented programming (OOP), which helps us derive a class from another class or a hierarchy of classes that share a set of attributes and methods. It is a relationship between a superclass (parent class) and a subclass (child class), where subclass inherits data and behavior from superclass.","path":"/blog/inheritance-in-java"}},{"id":"10745cc5-af84-5363-8b65-c54cc448e7b7","frontmatter":{"title":"Insert Operation in Binary Search Tree (BST)","description":"The root of the binary search tree and a key k is given. Write a program to insert key k into the binary search tree. Note: BST structure will change after the insertion. So we need to perform insertion in such a way that the BST property continues to hold. In this blog, we have discussed recursive and iterative implementations of insertion in BST.","path":"/blog/insertion-in-binary-search-tree"}},{"id":"d2933ceb-d8d8-55c2-83d0-128914b7275e","frontmatter":{"title":"Inorder Predecessor of a Node in Binary Search Tree (BST)","description":"Write a program to find the in-order predecessor of a given node x in a binary search tree (BST). An in-order predecessor of node x is the node that will be visited just before node x in the in-order traversal. If the node x is visited first (leftmost node in BST) then the predecessor of node x is NULL.","path":"/blog/inorder-predecessor-binary-search-tree"}},{"id":"794c5c57-f722-53a8-8049-73a818d37a61","frontmatter":{"title":"Implement Stack using Queues","description":"Write a program to implement a stack using queues. We must use queue operations like enqueue, dequeue, front, size to implement stack operations like push, pop, and top. We have discussed three approaches: 1) Using two queues: O(n) pop and O(1) push 2) Using two queues: O(1) pop and O(n) push 3) Using one queue: O(1) pop and O(n) push.","path":"/blog/stack-using-queues"}},{"id":"af408586-028f-5270-a4bb-a352d359271b","frontmatter":{"title":"Interface in Java","description":"In Java, an interface is a collection of abstract methods and all the implementing classes must provide an implementation for these methods. Just like abstract classes, we use an interface to implement abstraction in Java. It plays a crucial role in scenarios when multiple classes need to follow a common set of rules or provide a specific set of behaviours.","path":"/blog/interface-in-java"}},{"id":"a6f57459-f8e7-5900-9c76-0be71895055e","frontmatter":{"title":"Introduction to APIs for Data Science and Machine Learning","description":"In machine learning and data science, API (Application Programming Interface) is a powerful tool that enables seamless communication and data sharing between applications and servers. APIs are mainly used for data gathering and model deployment In data science and ML. This blog provides a step-by-step explanation of how APIs work.","path":"/blog/api-introduction-for-data-science-and-ml"}},{"id":"0de5b756-32e0-5436-a5f6-7d6cbac68dbe","frontmatter":{"title":"Intersection of Two Sorted Linked Lists","description":"Write a program to find intersection of two sorted linked lists and return the head pointer of the new linked list. Here head pointers of both sorted linked lists are given as input and we shouldn’t do any changes in the structure to generate the output. Note: This is an excellent problem to learn problem-solving using recursion and two pointers in a linked list.","path":"/blog/intersection-of-sorted-linked-lists"}},{"id":"0649f2e6-ca99-5490-af94-dd19fd5195e5","frontmatter":{"title":"What is Algorithm? Properties and Real-life Applications","description":"An algorithm is a step-by-step procedure to transform a given input into the desired output. A good algorithm must be correct, efficient, and easy to implement. Therefore, learning the definition, properties of algorithms, examples of their use in everyday life, and real-life applications is important for building high-performance software.","path":"/blog/introduction-to-algorithms"}},{"id":"db82ec8e-5f6d-5f59-975f-532c0c1c9eac","frontmatter":{"title":"Introduction to Anomaly Detection in Machine Learning","description":"In machine learning, anomaly detection is a process of finding samples behaving abnormally compared to the majority of samples present in the dataset. Anomaly detection algorithms have important use-cases in data analytics and data science fields. For example, fraud analysts use anomaly detection algorithms to detect fraud transactions.","path":"/blog/introduction-to-anomaly-detection"}},{"id":"d7e81628-7ad8-5a90-aa26-1788ba30dfc4","frontmatter":{"title":"Introduction to Big Data (Types, Characteristics and Examples)","description":"In this blog, we have discussed the idea of Big Data, which addresses the challenge of managing vast amounts of complex and diverse data. We discussed what constitutes Big Data, its types, characteristics, examples, use cases, the various technologies used, advantages, and the challenges faced by engineers working with Big Data.","path":"/blog/introduction-to-big-data"}},{"id":"40941265-e17f-5208-881e-2525c03d8c15","frontmatter":{"title":"Introduction to Activation Functions in Neural Networks","description":"An activation function transforms weighted input values to form the output from neurons. It is mainly of two types: Linear and Non-linear activation functions and is used in Hidden and Output layers in ANN. An activation function should have properties like differentiability, continuity, monotonic, non-linear, boundedness, crossing origin and computationally cheaper, which we have discussed in detail.","path":"/blog/activation-functions-in-neural-networks"}},{"id":"cd87c1e7-3139-59d7-b29b-bf8ec8c6242a","frontmatter":{"title":"Binary Search Tree (BST) Introduction and Properties","description":"Binary search tree (BST) is a sorted binary tree, where key stored in each node must satisfy the binary search tree property: 1) Keys in the left subtree ≤ Node key 2) Keys in the right subtree ≥ Node key 3) Both subtrees must be binary search trees. In this blog, we have discussed the key properties, operations and differences of BST with a hash table.","path":"/blog/introduction-to-binary-search-tree"}},{"id":"db684032-3172-5af2-bac7-9144ac79d8d5","frontmatter":{"title":"Introduction to Artificial Neural Networks","description":"Artificial Neural Networks, also known as Neural Networks, is a type of supervised learning algorithm that can be used to solve both classification and regression problems. In this blog, we will discuss the terms used to define a Neural Network, its components, the advantages and disadvantages of Neural Networks compared to other machine learning algorithms, and its use cases.","path":"/blog/introduction-to-artificial-neural-network"}},{"id":"19e88efd-51f1-5299-ae87-bf0126848853","frontmatter":{"title":"Introduction to Binary Tree: Properties, Types, Representation and Application","description":"Binary tree is one of the simplest tree data structures where each node has at most two child nodes. In other words, a node in a binary tree can have 0 or 1 or 2 child nodes. In this blog, we have discussed: 1) Key terminologies 2) Types of binary tree 3) Properties of binary tree 4) Linked and array representation 5) Binary tree applications.","path":"/blog/introduction-to-binary-tree"}},{"id":"00dc8721-88c1-5ebd-9395-51bdd43e3ae7","frontmatter":{"title":"Introduction to Arrays in Data Structure","description":"An array is a sequential collection of elements of same data type and stores data elements in a continuous memory location. Each element can be efficiently located by its index, which can be easily calculated by adding an offset to the base address. This blog has discussed various array concepts like array types, operations, properties, etc.","path":"/blog/introduction-to-arrays"}},{"id":"c43bca1a-d0de-5b6f-bfbe-bedad518fc11","frontmatter":{"title":"Introduction to Data Science for Beginners","description":"These days, companies are collecting huge amounts of data, but the question is: what is the purpose of this data? This is where data science comes into play. Data science is a field that extracts, processes, analyzes, and interprets data to derive various insights from it. In this blog, we will discuss the importance of data science and various key concepts.","path":"/blog/introduction-to-data-science"}},{"id":"ecb714df-a22e-5c7c-a2cc-b22e454c94f7","frontmatter":{"title":"Introduction to Constructor in OOPS (Java)","description":"Constructors are fundamental concepts in OOP because they define how objects are created, initialized, and managed. They promote encapsulation, enable code reusability, facilitate inheritance, and help maintain the integrity and consistency of objects throughout their lifecycle. In this blog, we will discuss all these concepts in detail.","path":"/blog/constructors-in-java"}},{"id":"71165d17-b37e-5aee-ba23-dec18f85c8e5","frontmatter":{"title":"Data Structure Types, Classification and Real-life Applications","description":"A well-designed code using data structure is just like a design of a good house. So mastering algorithms require a good understanding of data structure definition, classification, types, implementation techniques, key operations, etc. We should also explore various real-life applications to understand the use case of data structures.","path":"/blog/introduction-to-data-structures"}},{"id":"cbc8e399-9a9f-5bf6-92a8-64a690be60a0","frontmatter":{"title":"Introduction to Data Visualization In Data Science","description":"Data Visualization is a technique for presenting information using visual elements, making it accessible and easy to comprehend. It plays a crucial role in all various stages of machine learning and data science. To be effective, data visualizations should be aesthetically simple, creative and informative. In this blog, we explore various processes and examples of data visualization.","path":"/blog/introduction-to-data-visualization-in-data-science"}},{"id":"44aa72de-85dd-53ce-9b66-7c14ff45a619","frontmatter":{"title":"Introduction to Database Replication (Types and Advantages)","description":"In distributed systems, database replication is the process of keeping multiple copies of the same data in different servers (replicas) so that if one server goes down, other servers can continue to serve data without any interruption or downtime. Database replication provides several advantages like high performance, availability, and reliability.","path":"/blog/introduction-to-database-replication-system-design"}},{"id":"583b4b86-a604-50f7-aedb-0bd553433d8d","frontmatter":{"title":"Dynamic Programming in Data Structures and Algorithms","description":"Dynamic Programming is a popular problem solving approach in data structures and algorithms, which solve problems by combining subproblem solutions like divide and conquer. But rather than solving the same sub-problem again, DP solves sub-problems once and stores the calculated value in extra memory to avoid the recomputation.","path":"/blog/introduction-to-dynamic-programming"}},{"id":"0a454168-a538-585d-8f13-c60be39f5356","frontmatter":{"title":"Introduction to Forward Propagation in Neural Networks","description":"In Neural Networks, a data sample containing multiple features passes through each hidden layer and output layer to produce the desired output. This movement happens in the forward direction, which is called forward propagation. In this blog, we have discussed the working of forward propagation on the blob datasets and implemented it in Python using vectorization and single-value multiplication.","path":"/blog/forward-propagation-in-neural-networks"}},{"id":"7440d5fb-696d-5db0-9160-1235363c1eb0","frontmatter":{"title":"Introduction to Hash Function in Data Structure","description":"We use hash functions to distribute keys in the hash table uniformly. In other words, a good hash function satisfies the assumption of uniform hashing, where each key is equally likely to hash to any slots in the hash table. This blog has discussed the design and properties of some popular hash functions used in algorithm and data structure.","path":"/blog/introduction-to-hash-functions"}},{"id":"c5998bb7-5bee-5c5f-b82a-e7260c16ae8c","frontmatter":{"title":"Introduction to Hadoop Framework for Big Data","description":"Hadoop is an open-source framework that addresses the analytical and operational needs of Big Data by overcoming the limitations of traditional data analysis methods. With support for highly scalable and fault-tolerant distributed file systems, it allows for parallel processing. It comprises four main components - HDFS, YARN, MapReduce, and Hadoop Common.","path":"/blog/introduction-to-hadoop-framework"}},{"id":"cce65072-d3d7-5037-b48c-5e51f0ca6d08","frontmatter":{"title":"Introduction to Function in Python","description":"Functions are a set of instructions grouped in a block and get executed only when it is called inside our program. In python programming, functions follow specific syntaxes to ensure their validity. In this blog, we have discussed: What are functions in python? How to create and call functions? Various types of function arguments, The anonymous function and most used python in-built functions in ML and Data Science projects.","path":"/blog/introduction-to-function-in-python"}},{"id":"53cb2346-8265-5659-b985-4e70bb2e0c2e","frontmatter":{"title":"Introduction to Jupyter Notebook","description":"Jupyter Notebook is a popular open-source IDE for data science and machine learning practitioners. It supports three programming languages: Julia, Python, and R. In this guide, we cover the installation process for Jupyter Notebook, as well as provide an overview of the basic steps for starting the server, creating notebooks, executing cells, and working with kernels.","path":"/blog/introduction-to-jupyter-notebook"}},{"id":"17116121-18fb-5d76-b48c-99579cbe5ecb","frontmatter":{"title":"Introduction to Machine Learning and Comparison With AI","description":"Machine learning is the science of getting computers to act without being explicitly programmed. In this blog, we have answered these fundamental questions: 1) What is machine learning and how it works? 2) Why do we need machine learning? 3) When did it start? 4) Use cases of machine learning in industry 5) Machine learning vs. Artificial intelligence","path":"/blog/introduction-to-machine-learning-comparison-with-artificial-intelligence"}},{"id":"c1a7b481-dee2-5006-b40a-a325bcc62009","frontmatter":{"title":"How Machine Learns in Machine Learning?","description":"In Machine Learning, a machine learns by using algorithms and statistical models to identify patterns in data. Here the process of learning begins with feeding a large amount of training data to the algorithm. The algorithm then uses this data to make predictions or take actions based on the patterns it has identified. In other words, the algorithm constantly adjusts its parameters to minimize the difference between its predictions and actual outcomes.","path":"/blogs/how-machine-learns-in-machine-learning"}},{"id":"3c17ce4b-756c-53b8-a602-1e76ed9eaf9e","frontmatter":{"title":"Introduction to Heap Data Structure: Properties and Applications","description":"Heap is a complete binary tree structure where each node satisfies a heap property. We learn two types of heap data structure: 1) Max heap, which satisfies the max heap property, and 2) Min heap, which satisfies the min-heap property. We use heap data structures to implement priority queues and solve several coding problems efficiently.","path":"/blog/introduction-to-heap-data-structure"}},{"id":"f3322816-28c6-5493-a25f-87e8669ce8b8","frontmatter":{"title":"Introduction to Machine Learning","description":"Machine learning is the science of getting computers to act without being explicitly programmed. Here computer takes Input Data and Output Data as its input parameters and tries to produce the best suitable function that maps Inputs to Outputs. The machine learns a mapping function that maps the input data to the output using past experiences and the same is discussed in this introduction to machine learning blog.","path":"/blog/introduction-to-machine-learning"}},{"id":"d75676b9-5eb0-52eb-a60f-9422d58a5daa","frontmatter":{"title":"Introduction to Matplotlib Library in Python","description":"Matplotlib is one of Python's most effective visualization libraries for data visualization. It is an open-source library built over NumPy arrays. In this blog, we have discussed: 1) What is Matplotlib 2) Installation of Matplotlib using PIP 3) What is Pyplot in Matplotlib 4) The subplot in Matplotlib's pyplot module 5) Various plots using Matplotlib.","path":"/blog/introduction-to-matplotlib"}},{"id":"c24ce576-de4b-5990-9a96-ae6863cdf7e1","frontmatter":{"title":"Introduction to NumPy Library in Python","description":"Numpy is one of the most essential Python libraries for building machine learning and data science applications. Its ability to perform parallel computing and execute certain functions using C programming makes it lightning-fast. In this blog, we will cover the basics of the Numpy library, including installation and the most commonly used functions for executing mathematical operations.","path":"/blog/introduction-to-numpy-in-python"}},{"id":"662f6563-4115-5d73-bd5d-0481cfe02e7f","frontmatter":{"title":"Introduction to OOPS Concepts in C++","description":"C++ is a powerful programming language that supports the features of OOPS. It is used in game development, embedded systems, high-performance computing, etc. On the other side, many C++ libraries and frameworks are developed using OOPS. So if you want to work in the C++ domain, you need to master OOPS concepts like Classes and Objects, Encapsulation, Abstraction, Inheritance and Polymorphism.","path":"/blog/introduction-to-oops-concepts-in-cpp"}},{"id":"f07e275e-1acf-5894-9586-088f96768bde","frontmatter":{"title":"SOLID Principle Part 3: Liskov Substitution Principle (LSP)","description":"According to the Liskov Substitution principle, an object of a parent/base class must be interchangeable with an object of a child/derived class without changing the program. So the subclass objects should behave in the same way as the superclass objects. In simple words, LSP is all about well-designed inheritance.","path":"/blog/liskov-substitution-principle"}},{"id":"aa6b372b-3392-5d45-8e1d-d875f0c16ee3","frontmatter":{"title":"Introduction to Pandas Library in Python","description":"Pandas is a widely used Python library by data scientists for managing, processing, and analyzing data. This library offers various efficient tools and functions to streamline data manipulation and analysis. In this blog, we will guide you through the installation process and provide an overview of the frequently used basic Pandas functions in machine learning projects.","path":"/blog/introduction-to-pandas"}},{"id":"9b5a300e-4a58-51cf-9d07-c7e7e8db9486","frontmatter":{"title":"Introduction to Scikit-Learn in Machine Learning","description":"Scikit-learn is a open-source machine learning framework available in Python, providing support for supervised and unsupervised learning, data visualization, data analytics and data science. It is built over SciPy, Numpy and Matplotlib libraries and provides solutions for every stage of machine learning model development. In this blog, we will learn the essential concepts, tools, and features related to Scikit-learn useful for beginners in Machine Learning. ","path":"/blog/introduction-to-scikit-learn"}},{"id":"fd1c3859-4510-5228-b0aa-886011c94b62","frontmatter":{"title":"Introduction to Regular Expression in Machine Learning","description":"A regular expression is an expression that holds a defined search pattern to extract the pattern-specific strings. Today, regular expressions are available for almost every high-level programming language. As data scientists or machine learning engineers, we should know the fundamentals of regular expressions and when to use them.","path":"/blog/regular-expressions-in-ml"}},{"id":"6ed7bd87-6410-5231-a4de-6f7f7e46e454","frontmatter":{"title":"Introduction to Seaborn Library in Python","description":"Seaborn is an open-source library built over Matplotlib and makes plots more appealing and understandable. It works excellently with data frames and pandas libraries. In this blog, we have discussed: 1) Advantages of Seaborn over Matplotlib library, 2) Installation process of Seaborn in Python 3) Various Data Plots using the Seaborn library.","path":"/blog/introduction-to-seaborn-library-in-python"}},{"id":"514790fd-9dd7-5759-89fb-de2f6362c347","frontmatter":{"title":"SOLID Principle Part 2: Open Closed Principle (OCP)","description":"In object oriented programming, open closed principle states that: software entities (classes, modules, etc.) should be open for extension but closed for modification i.e. such an entity can extend its behavior without modifying its source code. This principle allows us to use the power of abstraction and inheritance to create such systems.","path":"/blog/open-close-principle"}},{"id":"a0ce534e-3d3d-5e4c-80f0-bb515e7b1c89","frontmatter":{"title":"Bubble Sort, Selection Sort and Insertion Sort Algorithm","description":"Learn the design, implementation, analysis, and comparison of bubble sort, selection sort, and insertion sort. In data structures and algorithms, these are some of the fundamental sorting algorithms to learn problem-solving using an incremental approach with the help of nested loops. All of them have the same worst-case and average-case time complexity.","path":"/blog/introduction-to-sorting-bubble-sort-selection-sort-and-insertion-sort"}},{"id":"25edab1d-79ac-50db-ab19-73447980d1fb","frontmatter":{"title":"Introduction to Stack Data Structure (Operations and Implementation)","description":"The stack data structure is a type of collection that follows the Last In, First Out (LIFO) principle, meaning that the last item added to the stack will be the first one to be removed.Stack is a linear data structure that supports two primary operations: push and pop. When we add an element to the top, it is called a push operation. When we remove an element from the top, it is called a pop operation.","path":"/blog/stack-data-structure"}},{"id":"c3b681cb-f243-5667-8232-17c48caddd6f","frontmatter":{"title":"IP Packet in Networking","description":"IP Header is meta information at the beginning of an IP packet. A packet is a tiny segment of a large message. The data transmitted over networks of machines, such as the Internet, is split into packets.","path":"/blog/ip-packet-in-networking"}},{"id":"a38ac6b9-1f43-5569-8b01-6ac63f3376f0","frontmatter":{"title":"Introduction to SQL for Data Science","description":"Based on Reports, more than 40% of data science jobs require SQL as an essential skill. So, to analyze datasets effectively in data science, one should master RDBMS, data cleaning processes, and SQL commands. The major advantage of using SQL is that SQL queries can be executed easily in Python by establishing connections to the database.","path":"/blog/introduction-to-sql-for-data-science"}},{"id":"53c25e55-f4dc-5edd-89e1-ca4b812dfc24","frontmatter":{"title":"XG-Boost (Extreme Gradient Boosting) Algorithm in ML","description":"Boosting algorithms are popular in machine learning community. In this blog, we will discuss XGBoost, also known as extreme gradient boosting. This is a supervised learning technique that uses an ensemble approach based on the gradient boosting algorithm. It is a scalable end-to-end system widely used by data scientists.","path":"/blog/xg-boost-algorithm-in-ml"}},{"id":"45308d03-9d2e-524e-9ba5-1c324a223f15","frontmatter":{"title":"Trie: An Efficient Data Structure for String Processing","description":"We mainly use trie data structure to process strings efficiently. It is a tree where each node represents a prefix or end of a word. The best thing is that the time complexity of trie operations depends on string length, which is independent of number of strings. Applications of trie: Autocomplete search, longest prefix matching, spell checker, etc.","path":"/blog/introduction-to-trie-data-structure"}},{"id":"150db90c-8d62-5545-9742-a23a96b4b298","frontmatter":{"title":"Time Series Forecasting: Statistical Model to Predict Future Values","description":"Time series forecasting uses statistical models to predict future values using previously recorded observations. It is classified into two parts: 1) Univariate time series forecasting (Involves a single variable) 2) Multivariate time series forecasting (Involves multiple variables). Note: Time Series is a set of observations taken at a specific periodic time.","path":"/blog/time-series-forecasting-using-machine-learning"}},{"id":"add2a2b5-1f80-5670-bc9d-d3d5e9a937cf","frontmatter":{"title":"Difference Between Recursion and Iteration","description":"In data structure and algorithms, iteration and recursion are two fundamental problem-solving approaches. Both involve executing instructions repeatedly until the task is finished. But there are significant differences between recursion and iteration in terms of thought processes, implementation approaches, analysis techniques, code complexity, and code performance.","path":"/blog/difference-between-iteration-and-recursion"}},{"id":"fc17ab72-a6ca-5f48-ac40-eb1119881ba4","frontmatter":{"title":"Inversion Count in an Array","description":"Given an array of n integers, write a program to find the total number of inversion counts. An inversion occurs when there are two elements in the array such that i < j and X[i] > X[j]. Here, the pair (i, j) is called an inversion of X[], and the inversion count represents the count of such inversions present in the array.","path":"/blog/inversion-count-in-array"}},{"id":"dfcc4465-711b-55ee-b35b-27ee9ffc0d5e","frontmatter":{"title":"Journey from a remote village to being software engineer at Mathworks","description":"Dhananjay shares his journey from a small village to pursuing computer science. He was a part of the Super 30 and secured admission to IIT Kharagpur. Initially considering a career in the core, he transitioned to programming after a project sparked his interest. With 3 months left for on-campus placement, he dedicated himself to learning DSA and got a dream job in Mathworks.","path":"/blogs/success-story-in-computer-science-dhananjay-kumar"}},{"id":"7b3d0bfa-a791-5da5-856f-0825124b5c3b","frontmatter":{"title":"Journey From Hindi Medium Schooling to Silicon Valley to AI Leadership","description":"Sandeep Singh, Head of Applied AI and Computer Vision at Beans.ai, shares his career journey from a Hindi-medium school in India to Silicon Valley. He began at Misys in Bangalore, later worked at Oracle and Cisco, and relocated to the US in 2010. He ventured into investment banking before transitioning to AI due to the excitement around Deep Learning.","path":"/blog/computer-science-success-story-sandeep-singh"}},{"id":"31e0a241-a52e-5959-be45-7fb3ebbf8749","frontmatter":{"title":"K-Means Clustering Algorithm in Machine Learning","description":"The K-means algorithm is one of the most widely used clustering algorithms in machine learning. It separates data into k distinct clusters based on predefined criteria. In this article, we discuss how the k-means algorithm works, provide a step-by-step implementation with Python code, cover popular methods for determining the optimal value of k in k-means, and introduce other important concepts.","path":"/blog/k-means-clustering-algorithm"}},{"id":"fefe3e5c-e53f-59ae-b768-3d4ce1820f0c","frontmatter":{"title":"Introduction to Key-Value Database","description":"A key value database is a non relational database (NoSQL) that stores data using a simple key-value mechanism. The structure of key value store is similar to maps or dictionaries, where each key is associated with one value only. The simplicity of this model makes key-value databases fast, easy to use, scalable, portable, and flexible.","path":"/blog/key-value-stores-in-system-design"}},{"id":"c629784d-5744-5ffe-9585-5264a4ffe26a","frontmatter":{"title":"Iterative Binary Tree Traversal Using Stack (Preorder, Inorder and Postorder)","description":"We can easily implement recursive binary tree traversals (preorder, inorder, and postorder) iteratively using a stack. We need to understand the flow of recursive calls in DFS traversal and mimic what the compiler does in the background. So, we need to follow a similar process and use our own stack to simulate the recursive binary tree traversal using iteration or without using recursion.","path":"/blog/iterative-binary-tree-traversals-using-stack"}},{"id":"e6e57406-1f21-50b3-988e-e3fffd62b71c","frontmatter":{"title":"K-Nearest Neighbors (KNN) Algorithm in Machine Learning","description":"K-Nearest Neighbor is a supervised learning algorithm that can be used to solve classification and regression problems. It learns without explicitly mapping input variables to the target variables and that's why considered as non-paramteric learning algorithm. It gets highly affected by three things: the choice of distance metric to find K neighbors, the value of K in K neighbours, and normalization of data samples.","path":"/blog/k-nearest-neighbours-in-ml"}},{"id":"25a26c12-79a6-54e1-a3d7-0b0cdb71f600","frontmatter":{"title":"Latency in System Design","description":"Latency is an essential system design concept that determines how fast the data transfers from the client to the server and back to the client. The lower system latency means better system performance. This blog will focus on how latency impacts the system's performance and measures to improve latency.","path":"/blog/latency-in-system-design"}},{"id":"7dae063a-4b08-5533-8e4a-56f2fbf588f8","frontmatter":{"title":"Kth Largest Element in a Binary Search Tree (BST)","description":"Given the root of a BST and an integer k, write a program to find the kth largest value among all the nodes' values in the binary search tree. Note: This is an excellent problem to learn problem solving using recursive and iterative inorder traversal and data structure augmentation (storing extra information inside BST nodes for solving a problem).","path":"/blog/kth-largest-element-in-bst"}},{"id":"ddcda54f-08fe-5c94-8ebc-480d93a3ca34","frontmatter":{"title":"Level Order Traversal (BFS Traversal) of Binary Tree","description":"Level order traversal accesses nodes in level by level order. This is also called breadth first search or BFS traversal. Here we start processing from the root node, then process all nodes at the first level, then process all nodes at the second level, and so on. In other words, we explore all nodes at the current level before going to nodes at the next level.","path":"/blog/level-order-traversal-of-binary-tree"}},{"id":"8a6cd9e3-60eb-558e-be86-48073f768a0f","frontmatter":{"title":"What is Leader Election in Distributed Systems?","description":"In distributed systems, a leader election algorithm is a process of designating a single process as the organizer of some task distributed among several computers (nodes). Such a process can have some specific abilities which include the capacity to delegate tasks, the ability to edit data, or even the responsibility for managing all system requests.","path":"/blog/leader-election-system-design"}},{"id":"477d1e71-e3dc-52e2-9b4e-83fa9574e52a","frontmatter":{"title":"Left View of a Binary Tree","description":"Given a root node of a binary tree, write a program to find the left view of the given binary tree. The left view of a binary tree is a group of nodes visible when viewed from the left side. In other words, the nodes in the left view will be the first node of each level. Note: This is an excellent problem to learn problem-solving using DFS and BFS traversal.","path":"/blog/left-view-of-binary-tree"}},{"id":"7aae3c51-c9f6-525c-a609-62dd2f970db9","frontmatter":{"title":"Design and Implement Least Frequently Used (LFU) Cache","description":"The least frequently used (LFU) is a cache algorithm used to manage memory within a computer. In this method, the system keeps track of the number of times a block is referenced in memory, and when the cache is full, our system removes the item with the lowest reference frequency. LFU cache get and put operation works in O(1) average time complexity.","path":"/blog/least-frequently-used-cache"}},{"id":"944ddec8-5180-53df-9d22-85bd9d93e47d","frontmatter":{"title":"Difference Between Class and Structure in C++","description":"Classes and structures are fundamental building blocks of object oriented programming C++. Although classes and structures have the same type of functionality, there are a few differences between them based on their definition and use cases. The data members of a class are private by default and the members of a structure are public by default.","path":"/blog/difference-between-class-and-structure-cpp"}},{"id":"99534d83-26a3-55ac-802c-1648ef8576ea","frontmatter":{"title":"Predicting Life Expectancy Using Linear Regression","description":"Using machine learning, we can predict the life expectancy of a person. In this blog, we will explore parameters affecting the lifespan of individuals living in different countries and learn how life span can be estimated with the help of machine learning models. We will also focus on the application of linear regression in predicting life expectancy.","path":"/blog/life-expectancy-prediction-using-linear-regression"}},{"id":"66f3eff6-dbf3-5c3b-986b-c6a409128220","frontmatter":{"title":"Linear Regression Algorithm in Machine Learning","description":"Linear Regression is a supervised machine learning algorithm used to solve regression problems. In this blog, we have discussed: 1) What is linear regression? 2) Various types 3) The loss function for linear regression 4) Ordinary Least Squares (OLS) method 5) Polynomial regression 6) Python implementation of linear regression.","path":"/blog/linear-regression-in-machine-learning"}},{"id":"33d1952f-f89b-51a1-b264-bfe61d0bad4b","frontmatter":{"title":"What is Long Polling in System Design?","description":"Polling is a technique that allows the servers to push information to a client. Long polling is a version of traditional polling that allows the server to send data to a client whenever available. It involves the Client requesting information from the server in the same way that standard polling does, but with the caveat that the server may not respond right away. A complete answer is delivered to the Client once the data is accessible.","path":"/blog/long-polling-in-system-design"}},{"id":"27783ec4-13c1-5ac7-9246-a9614fd9ec39","frontmatter":{"title":"Load Balancers in System Design","description":"A load balancer is a device or software component that acts as an intermediary between clients and a group of servers. Its goal is to evenly distribute workloads to prevent any server from becoming overloaded. So load balancer is one of the critical components in distributed systems to optimize resource usage, maximize performance, and ensure high scalability and reliability.","path":"/blog/load-balancers-in-system-design"}},{"id":"3eb63d43-509d-55ba-9551-0f5fa44dd8b5","frontmatter":{"title":"Longest Substring Without Repeating Characters","description":"Given a string S, write a program to find the length of longest substring without repeating characters. The substring is a continuous subpart of the string and we need to return the largest substring which has all unique characters. Note: This is an excellent problem to learn problem solving and time complexity optimization using sliding window approach.","path":"/blog/longest-substring-without-repeating-characters"}},{"id":"763314bc-02b9-553b-bba5-649a00d9dbb9","frontmatter":{"title":"Love Maths? Computer science is perfect for you!","description":"Tushant, a student at the University of Chicago, shares his research interests in computational complexity and the pursuit of efficient algorithms. His academic journey began with a focus on abstract math and internships in algebraic geometry and number theory. These experiences led him to choose Theoretical Computer Science for his PhD.","path":"/blog/success-story-computer-science-is-perfect-for-you-tushant-mittal"}},{"id":"9b5543b6-737f-52d4-ac20-7e26f10877d3","frontmatter":{"title":"Longest Consecutive Sequence","description":"Given an array of n integers, find the length of the longest consecutive sequence. In other words, we need to find the length of the longest subsequence such that elements in the subsequence are consecutive integers. The consecutive numbers can be in any order. Note: This is an excellent problem to learn problem-solving using sorting and hash table.","path":"/blog/longest-consecutive-sequence"}},{"id":"d27a52af-bb9b-5e84-8ef8-427ac7aa7dd6","frontmatter":{"title":"Machine Learning saved a life","description":"One night, 𝐒𝐜𝐨𝐭𝐭 𝐊𝐢𝐥𝐥𝐢𝐚𝐧 got an emergency call around 1 am with an alert from a third-party HeartWatch app,","path":"/blog/machine-learning-saved-a-life"}},{"id":"d92e9a74-7f91-57e6-8501-a05860290d3e","frontmatter":{"title":"Fundamentals Iteration in Programming","description":"What is iteration in programming? Iteration is executing a sequence of code instructions specified times or until a specific condition is true. We implement iteration using the two most common types of loop: while loop and for loop. The idea is simple: Understanding patterns of iterative algorithms is essential for mastering DSA problem-solving.","path":"/blog/fundamentals-of-loop-in-programming-and-algorithms"}},{"id":"412edfb0-60ec-5cab-9211-3c541aaf1302","frontmatter":{"title":"Drug Discovery Using XGBoost Regressor Model","description":"Machine Learning and Data Science have become vital in developing life-saving applications, such as drug discovery. Using these ML technologies, researchers can reduce the time needed to create new medicines for known and unknown diseases. In this blog post, we provide a step-by-step guide to building an application that addresses the drug discovery problem using Machine Learning in Python. To solve this regression problem, we utilized the XGBoost regressor model, which is a popular CART algorithm in the ML community.","path":"/blog/drug-discovery-using-ml"}},{"id":"2ddb3d88-2c72-50cb-a057-6ff33bc6e164","frontmatter":{"title":"Fundamentals of MapReduce","description":"MapReduce is a batch processing programming paradigm that enables massive scalability across a large number of servers in a Hadoop cluster. It was first published in 2004, and was called “algorithm that makes Google so massively scalable.” This is a relatively low-level programming model compared to old parallel processing systems.","path":"/blog/map-reduce"}},{"id":"b7dec242-aed7-50bd-8338-56abb7d82ac9","frontmatter":{"title":"Make Your System Machine Learning Enabled","description":"There are various ways to make our computers machine learning enabled for implementing ML projects. In this blog, we will try one of the most preferred and easy-to-use methods, i.e., Python3 with Sublime Text 3. Python programming is the most preferred language for ML tasks, and sublime text 3 is the code editor to write ML codes.","path":"/blog/make-system-ml-enabled"}},{"id":"9d78cf9f-86e0-5964-b272-00b5405d6ab5","frontmatter":{"title":"Master-Slave Replication (Single Leader Replication)","description":"In database replication, master-slave replication is also known as active/passive or leader-based replication. There are two types of nodes in this architecture: Master and slave. The single master (leader) node works as the primary database, while one or more slave (follower) nodes maintain copies of the Master’s data.","path":"/blog/master-slave-replication-databases"}},{"id":"18a4171e-4d27-5154-9617-3291dc0259d7","frontmatter":{"title":"Find Maximum Continuous Series of Ones","description":"You are given an array of 1s and 0s and you are given an integer k which signifies the number of flips allowed. Write a program to find the position of zeros which when flipped will produce a maximum continuous series of 1s. Note: This is an excellent problem to learn problem solving using sliding window technique in O(n) time and O(1) space.","path":"/blog/max-consecutive-ones"}},{"id":"b1c4d639-a52c-572b-91da-03785185d2b9","frontmatter":{"title":"Find Maximum Consecutive 1s in an Array","description":"A binary array X[] is given where elements are either 0 or 1. Write a program to find the maximum consecutive ones. The subarray with max continuous 1's can be present anywhere, starting from some index i and ending at some index j. This is an excellent problem to learn problem solving using a sliding window approach and single loop.","path":"/blog/max-consecutive-ones-II"}},{"id":"f4ef438c-34c0-5c52-a91d-a3d6f5670370","frontmatter":{"title":"Median of two sorted arrays of same size","description":"There are two sorted arrays A and B of size n each, write a program to find the median of these two sorted arrays obtained after merging (the new merged array will be an array of length 2n). The median of a sorted array of size n is defined as the middle element when n is odd and the average of the middle two elements when n is even.","path":"/blog/median-of-two-sorted-arrays"}},{"id":"1083ad60-456e-5364-a62d-742280e6f9bb","frontmatter":{"title":"Merge Overlapping Intervals","description":"Given an array of intervals where the start and end points of each interval are provided, write a program to merge all overlapping intervals and return an array of non-overlapping intervals. In other words, the output should be an array of mutually exclusive intervals. Note: This is an excellent problem to learn problem solving using sorting.","path":"/blog/merge-overlapping-intervals"}},{"id":"c05149a0-cecc-577e-a3f0-f98b4f55cefb","frontmatter":{"title":"Logistic Regression Algorithm in Machine Learning","description":"Logistic Regression is one of the most used machine learning algorithms. It is a supervised learning algorithm where target variables should be categorical, such as positive or negative, Type A, B, or C, etc. Although the name contains the term \"regression\",  we can also say that it can only solve classification problems.","path":"/blog/logistic-regression-in-ml"}},{"id":"e1d130a7-af1d-5da7-99f5-dbbcfefbe854","frontmatter":{"title":"Merge Two Binary Tree into a Single Binary Tree","description":"Given two binary trees, write a program to merge them into a single binary tree. We need to merge them such that if two nodes overlap then add them and put them into the new tree at the same position. Otherwise, put the non-NULL node in the new tree. Note: This is an excellent problem to learn problem solving using iterative and recursive preorder traversal.","path":"/blog/merge-binary-tree"}},{"id":"fa2bcd2c-ba0d-5dd8-afc0-b8ed750dd824","frontmatter":{"title":"Method Overloading: Static Polymorphism","description":"In Java, the method overloading allows multiple methods to have the same name with different argument lists. This is a process by which we can perform a single task in various ways. In method overloading, the compiler distinguishes between methods based on the number, types, and order of the parameters. That's why it is also called static or compile-time polymorphism.","path":"/blog/method-overloading-in-java"}},{"id":"b6425f92-f1a1-57c0-a2a0-21cb63f537b6","frontmatter":{"title":"Merge two sorted linked lists such that the merged list is in reverse order","description":"Given two sorted linked lists of size m and n respectively, write a program to merge both such that the resulting list becomes in decreasing order.","path":"/blog/merge-two-sorted-linked-lists-such-that-the-merged-list-is-in-reverse-order"}},{"id":"dee25360-7c57-55e4-b8fc-abf8275d656b","frontmatter":{"title":"Find Minimum Depth of Binary Tree","description":"Given a binary tree, find its minimum depth. The min depth of a binary tree is the number of nodes along the shortest path from the root node down to the nearest leaf node. The path has to end on a leaf node. Note: An excellent problem to learn efficient problem solving using breadth-first search (BFS) when the solution node is nearest to the root node.","path":"/blog/min-depth-of-binary-tree"}},{"id":"288a3d46-c364-56f4-a00c-63b822064b73","frontmatter":{"title":"Merge Sort Algorithm","description":"Merge sort is one of the fastest comparison-based sorting algorithms, which works on the idea of a divide and conquer approach. The worst and best-case time complexity of the merge sort is O(nlogn), and the space complexity is O(n). It is also one of the best algorithms for sorting linked lists and learning the design and analysis of recursive algorithms.","path":"/blog/merge-sort-algorithm"}},{"id":"bd78e2c6-c1e6-5a2a-81a0-30427983572b","frontmatter":{"title":"Message Passing in Object Oriented Programming (OOP)","description":"We use the idea of message passing in both object-oriented programming as well as concurrent programming. In OOPS, message passing is a way for objects to communicate within a program. Similarly, in concurrent programming, we use it to communicate messages between processes or threads. In this blog, we will discuss how message passing works in OOPS.","path":"/blog/message-passing-oops"}},{"id":"bf4f7552-44f1-5369-93a3-5881a5c4ceb5","frontmatter":{"title":"Evaluation Metrics to Check Performance of Regression Models","description":"We evaluate the performance of our regression models in Machine learning using standard metrics. In this article, we will be discussing all the standard evaluation metrics namely MAE, MAPE, MSE, RMSE, R-Squared and Adjusted R-Squared, for regression models used to compare two different models on the same dataset.","path":"/blog/evaluation-metrics-regression-models"}},{"id":"39787088-fe64-53b4-bb4d-7d99c54c77d7","frontmatter":{"title":"Maximum Subarray Sum (Kadane’s Algorithm)","description":"Given an array of n elements, write a program to find the maximum subarray sum. A subarray of array X[] is a contiguous segment from X[i] to X[j], where 0 <= i <= j <= n-1. Note: Max subarray sum is an excellent problem to learn problem-solving using the divide and conquer approach, dynamic programming, and single loop (kadane's algorithm).","path":"/blog/maximum-subarray-sum"}},{"id":"3713baba-5a1a-57d7-b9f7-ae1f90ac883b","frontmatter":{"title":"Evaluation Metrics to Evaluate Classification Models","description":"Classification problems are among the most used problem statements in machine learning. We evaluate classification models using standard evaluation metrics like confusion matrix, accuracy, precision, recall, ROC and the AUC curves. In this article, we will discuss all these popular evaluation metrics to evaluate the classification models along with their inbuilt functions present in Scikit-learn.","path":"/blog/evaluation-metrics-classification-models"}},{"id":"fbaac1d6-68e6-5d02-86a3-f6c051ab6f7a","frontmatter":{"title":"Min Stack Problem","description":"Design and implement a stack that supports the push, pop, top, and retrieval of the minimum element in constant time. In other words, our goal is to implement the MinStack class, which supports push, pop, top, and getMin operations with O(1) time complexity. Note: The pop, top, and getMin operations will always be called on non-empty stacks.","path":"/blog/min-stack-problem"}},{"id":"f1a237ad-90d4-5f2f-9492-ae952c2515dc","frontmatter":{"title":"Minimum Absolute Difference in Binary Search Tree (BST)","description":"Given the root of a binary search tree (BST), write a program to find the absolute minimum difference between the values of any two nodes in the tree. Here node values in the tree can be positive, negative, or zero. Note: This is an excellent problem to learn problem-solving using iterative and recursive inorder traversal of a binary tree.","path":"/blog/minimum-absolute-difference-in-bst"}},{"id":"6f05d2b2-4f5a-52e1-9df2-0a3adbc6cba9","frontmatter":{"title":"Minimum Number of Jumps to Reach End","description":"An array of non-negative integers is given and the aim is to reach the last index in the minimum number of jumps. You are initially positioned at the first index of the array and each element in the array represents your maximum jump length at that position. Note: This is an excellent problem to learn problem solving using dynamic programming.","path":"/blog/minimum-number-of-jumps-to-reach-end"}},{"id":"cc5eddfc-9ca6-5c99-a5e8-1308effd7d13","frontmatter":{"title":"Minimum Coin Change Problem","description":"Suppose we want to make a change for a given value K of cents, and we have an infinite supply of each of coin[ ] = [C​1​​, C​2​​, …, C​m​​] valued coins. Write a program to find the minimum number of coins required to make the change. Note: This is an excellent counting problem to learn problem solving using dynamic programming approach.","path":"/blog/minimum-coin-change"}},{"id":"9a545e99-96c6-5e84-bb6b-745ee0c6a22c","frontmatter":{"title":"Monolithic Architecture vs Microservice Architecture","description":"Monolithic architecture is a traditional approach to software development in which the entire system is packaged and deployed as a single unit. In a microservice architecture, business logic is broken down into lightweight, single-purpose self-sufficient services.","path":"/blog/monolithic-architecture-vs-microservice architecture"}},{"id":"80a34026-213b-5eec-b3c6-80dcb61a9ec8","frontmatter":{"title":"Machine Learning Glossary: Commonly used Terms in Machine Learning","description":"This is a glossary of machine learning terms commonly used in the industry. Some popular machine learning terminologies: neural networks, supervised learning, unsupervised learning, reinforcement learning, regularization, classification, regression, clustering, optimizers, outliers,  bias, variance, underfitting, overfitting, normalization, etc.","path":"/blogs/machine-learning-glossary"}},{"id":"7c5f2297-699c-5e01-83a8-20c6d3f49749","frontmatter":{"title":"Find Most Frequent Element in an Array","description":"Given an array X[] of size n, write a program to find the most frequent element in the array, i.e. the element which occurs the most number of times. If multiple elements have maximum frequency, return the smallest (assume that at least one element is repeated). Note: This is an excellent problem to learn problem-solving using sorting and hash table.","path":"/blog/most-frequent-element-in-array"}},{"id":"d817217c-34f8-5ccf-9dcd-f045a63c5189","frontmatter":{"title":"N-ary Tree Data Structure","description":"We know that a binary tree is a rooted tree in which each node has no more than two children. We can extend this definition to an n-ary tree. If a tree is rooted in which each node has no more than n children, it is called an n-ary tree. In other words, n ary trees are tree data structures with up to n children nodes for each node present in the tree.","path":"/blog/n-ary-tree"}},{"id":"b3ee4c04-2d81-5608-89c4-afb91a89c02a","frontmatter":{"title":"Move all Zeroes to End of Array","description":"Given an array X[] of n elements filled with several integers, some of them being zeroes, write a program to move all the zeros to the end. We need to preserve the relative order of non-zero elements and solve this problem in place using O(n) time complexity. Note: This is an excellent problem to learn problem solving using two pointers approach.","path":"/blog/move-all-the-zeroes-to-the-end"}},{"id":"0fe33598-f0de-5b0e-ab9b-c20d832c0be0","frontmatter":{"title":"Find N Repeated Element in 2N Size Array","description":"In an array of size 2N, there are N + 1 unique elements, and exactly one of these elements is repeated n times. Write a program to return the N-repeated element in the given 2N size array. Note: This is an excellent problem to learn optimization using the mathematical approach. Sometimes mathematical insights into the problem can help us to get efficient solutions.","path":"/blog/n-repeated-element-in-2n-size-array"}},{"id":"c6f4d790-97f9-5938-a14f-71ccf81d0471","frontmatter":{"title":"Music Recommendation System Using Unsupervised Learning","description":"Learn to build a music recommendation system using the k-means algorithm. We will use the audio features from the million song data and cluster them based on their similarities. In this blog, we will be discussing these topics: 1) Methods to build a recommendation system for songs 2) Step-wise implementation 3) Ordering songs for the recommendation, etc.","path":"/blog/music-recommendation-system-using-ml"}},{"id":"1cbd1df8-a0d2-5d10-821f-c59cb5fd8ea2","frontmatter":{"title":"Networking Transport Layer: TCP vs UDP Protocols","description":"Applications that use TCP: Gmail, World Wide Web, etc. Applications that use UDP: Media Streaming application like YouTube, online multiplayer games, etc.","path":"/blog/networking-transport-layer-tcp-vs-udp-protocols"}},{"id":"6c7f158f-0278-5e27-baa1-27005e14661b","frontmatter":{"title":"Music Instrument Recognition Using Neural Networks","description":"In this blog, we have built a neural network model to predict the musical instrument by listening to music from it. We have solved the same problem using two methods with more than 99% of accuracy: 1) Converting audio signals into spectrogram images and then performing prediction, 2) Calculating the MFCC score for audio signals and using it for model building.","path":"/blog/music-instrument-recognition-using-neural-networks"}},{"id":"1c138b52-a1dc-54bc-a562-872dc5e66a3d","frontmatter":{"title":"Naive Bayes Classifier: Supervised Machine Learning Algorithm","description":"Naive Bayes is a popular supervised machine learning algorithm that predicts the categorical target variables. This algorithm makes some silly assumptions while making any predictions. But the most exciting thing is: It still performs better or is equivalent to the best algorithms. So let's learn about this algorithm in greater detail.","path":"/blog/naive-bayes-in-ml"}},{"id":"659c0a52-e5c2-57be-89ea-f683f8c7210a","frontmatter":{"title":"Network Protocol Fundamentals","description":"In computer networking, a network is a group of devices connected in some way to exchange data. Similarly, network protocols define a common format and set of rules for exchanging messages between devices. Some common networking protocols are Hypertext Transfer Protocol (HTTP), Transmission Control Protocol (TCP), and Internet Protocol (IP).","path":"/blog/network-protocols-concept"}},{"id":"0c47964d-5fd9-5c59-ac12-aa0df9d5cf76","frontmatter":{"title":"Design Notification Service","description":"Notification services are widely used in almost every product. They are helpful if we want to be alerted of a price change or availability of a new product feature or if we want to be updated if a new job specification for a job search becomes available. This blog will focus on system design of notification service and discussion around various components.","path":"/blog/notification-service"}},{"id":"a31fdc99-852f-5a60-a85c-3a864b86e3de","frontmatter":{"title":"Introduction to Feature Scaling: Normalization and Standardization","description":"In this article, we will learn about methods used for scaling different attributes present in our data. Normalization and Standardization are two most used techniques available for scaling features and bring them on same range.It avoids the cases of biases towards higher or lower magnitude features.","path":"/blog/need-of-feature-scaling-in-machine-learning"}},{"id":"1f9416fd-8dc2-59c7-be56-38e2119593a1","frontmatter":{"title":"Count Number of Buildings Facing Sun","description":"Given an input array height[] which represents the heights of buildings, write a program to count the number of buildings facing the sunset. Assume that the heights of buildings are distinct. Insight: Here all buildings facing sunlight will be in increasing order. Note: This is an excellent problem to learn problem-solving using a single loop.","path":"/blog/number-of-buildings-facing-sun"}},{"id":"acd30d7c-7e29-506a-842e-fc4016c954b0","frontmatter":{"title":"Operator Overloading in C++","description":"Operator overloading is a compile time polymorphism that allows us to extend the meaning of an operator to operate on a user-defined data type. The main advantage of operator overloading is that we can have different implementations of an operator based on the argument type. Here we will learn how to implement and overload various operators.","path":"/blog/operator-overloading-in-cpp"}},{"id":"a5cebdff-0038-5b1f-8277-69122c9ec288","frontmatter":{"title":"Step by Step Pathway to Implement Machine Learning Projects","description":"Every machine learning project needs to go through these steps: Problem finalization, data gathering, data pre-processing, model selection, data splitting, performance evaluation, and model deployment. In this blog, we have discussed: 1) Steps of implementing machine learning projects 2) How to make ML models production-ready?, etc.","path":"/blog/pathway-for-machine-learning-projects"}},{"id":"570fe738-67c8-5f49-9b9f-8fc250bb60e1","frontmatter":{"title":"Observer Design Pattern","description":"Observer is a behavioural design pattern that establishes a one-to-many dependency between objects. In this pattern, when one object (Subject) undergoes a change in state, all dependent objects (Observers) are automatically notified and updated. This will help us to achieve loose coupling between the subject and its observers by segregating the concerns.","path":"/blog/observer-design-pattern"}},{"id":"150c5f83-6504-5bcd-bab8-e07214272c0a","frontmatter":{"title":"Optical Character Recognition (OCR) using Logistic Regression","description":"Character recognition is a primary step in recognizing whether any text or character is present in the given image using machine learning. Google, Microsoft, and many more technical giants use optical character recognition (OCR) techniques to solve various tasks, including spam classification, automatic reply, number-plate detection, etc.","path":"/blog/optical-character-recognition-using-logistic-regression"}},{"id":"7a3dd571-28a7-53bc-9ed1-702935bb1688","frontmatter":{"title":"Gradient Descent Algorithm in Machine Learning","description":"Gradient descent in machine learning is a basic cost function optimization algorithm. In this blog, we have discussed: 1) Limitations of computations in machine learning. 2) What are optimization algorithms, and why do we need them? 3) What is the problem with multiple minima in the cost function? 4) What is gradient descent and how does it work?","path":"/blog/parameter-learning-and-gradient-descent-in-ml"}},{"id":"0be5eae1-100b-536b-a8fc-c9c3794851ab","frontmatter":{"title":"Peer-to-Peer (P2P) Architecture","description":"In the common client-server architecture, multiple clients will communicate with a central server. A peer-to-peer (P2P) architecture consists of a decentralized network of peers, which are nodes that can act as both clients and servers. Without a central server's need, P2P networks distribute workload among peers, and all peers contribute and consume resources within the network.","path":"/blog/peer-to-peer-networks"}},{"id":"c5f22158-bb5b-5b81-bdc4-36b59913e21d","frontmatter":{"title":"Design Perceptron to Learn AND, OR and XOR Logic Gates","description":"Perceptron is the most fundamental unit of Neural Network architecture in Machine Learning. In this article, we will learn to design a perceptron from scratch in Python to make it learn the properties of AND, OR and XOR logic gates. We will observe the need for multiple layer perceptron (MLP) over single layer perceptron. ","path":"/blog/design-perceptron-to-learn-and-or-xor-gates"}},{"id":"7fd85dca-1839-5454-9f14-8573f3987a6c","frontmatter":{"title":"Problem-Solving Approaches in Data Structures and Algorithms","description":"This blog highlights some popular problem solving techniques for solving coding problems. Learning to apply these strategies could be one of the best milestones in mastering data structure and algorithms and cracking the coding interview. We can categorize these strategies into two categories: Iterative approach and Recursive approach.","path":"/blog/problem-solving-approaches-in-data-structures-and-algorithms"}},{"id":"6098d0ff-93de-5db0-b294-54f51ec79fcc","frontmatter":{"title":"Predicting Personality Using Machine Learning","description":"Machine learning can predict personalities based on social media usage. This is highly used in dating apps and recommendation systems. In this blog, we have discussed: 1) How personality prediction is useful? 2) Big five personality trait model 3) How ML predicts personality based on social media behavior? 4) Steps to implement personality predictor.","path":"/blog/personality-prediction-using-ml"}},{"id":"7128428a-ec3b-5740-ba5b-0f7334276089","frontmatter":{"title":"Time Series Data Pre-processing in Machine Learning","description":"Time Series Preprocessing techniques have a significant influence on data modeling accuracy. In this blog, we have discussed: 1) Definition of time-series data and its importance. 2) Preprocessing steps for time series data 3) Structuring time-series data, finding the missing values, denoising the features, and finding the outliers present in the dataset.","path":"/blog/pre-processing-time-series-data"}},{"id":"2602e142-db09-5e25-bbfe-d6339e8a565f","frontmatter":{"title":"Pre-processing of Text Data in Machine Learning","description":"We need to clean the text data before feeding it to machine learning algorithms. Fortunately, Python has excellent support for NLP libraries (NLTK, spaCyto) to ease text analysis. In this blog, we will learn: 1) Real-time working on the sentiment analysis dataset 2) Techniques for cleaning text data. 3) Exploratory analysis of text data.","path":"/blog/text-data-pre-processing-techniques-in-ml"}},{"id":"093c5fcd-0c46-5a67-ba15-e89665e22d21","frontmatter":{"title":"Principles of Object Oriented Programming (OOP)","description":"There are four fundamental principles of object-oriented programming: Abstraction, Encapsulation, Inheritance, and Polymorphism. These principles provide advantages like modularity, code reusability, feature extensibility, data hiding, etc. In this blog, we will learn how the four OOP principles work together to make a well-designed application.","path":"/blog/principles-of-object-oriented-programming"}},{"id":"a513a6f3-e0d9-5e91-89d5-eefed3386509","frontmatter":{"title":"Principal Component Analysis (PCA) in Machine Learning","description":"Principle component analysis (PCA) is an unsupervised learning technique to reduce data dimensionality consisting of interrelated attributes. The PCA algorithm transforms data attributes into a newer set of attributes called principal components (PCs). In this blog, we will discuss the dimensionality reduction method and steps to implement the PCA algorithm.","path":"/blog/principal-component-analysis-in-ml"}},{"id":"12ae281c-4478-5ad6-b0b4-93769b84fb5f","frontmatter":{"title":"Print a Given Matrix in Spiral Form","description":"Given a 2-dimensional matrix, write a program to print matrix elements in spiral order. We can imagine spiral traversal as an ordered set of matrix segments with horizontal and vertical boundaries, where both boundaries are reduced by one at each step. Note: This is an excellent problem to learn problem-solving using iteration and recursion.","path":"/blog/print-matrix-in-spiral-order"}},{"id":"a49356ba-c7fc-5514-9321-b7cb3455e5a7","frontmatter":{"title":"Forward and Reverse Proxy in System Design","description":"In this blog, we'll be discussing the key differences and advantages of forward and reverse proxies. A forward proxy is placed in front of a client to ensure that the client never communicates directly with the origin server. On the other hand, a reverse proxy is placed in front of an origin server to ensure that no client ever communicates directly with the server.","path":"/blog/proxies-in-system-design"}},{"id":"04aa8020-729d-5aea-9c77-e2c6d4498816","frontmatter":{"title":"Product of array except self","description":"Given an array X[] of n integers, write a program to find product[] array such that product[i] is equal to product of all array elements except X[i]. We need to solve this problem without using division operations. Note: This is an excellent product array puzzle to learn time complexity optimization using prefix array and a single loop.","path":"/blog/product-of-array-except-self"}},{"id":"cc3b4963-b38b-561d-8555-76e6b7378aed","frontmatter":{"title":"Process Management in Operating System (OS)","description":"In operating system, Process management involves executing various tasks such as creating processes, scheduling processes, managing deadlock, and termination of processes. It is the responsibility of the OS to manage all running processes of the system. In this blog, we will learn about process management in OS and its various related algorithms.","path":"/blog/process-management-in-operating-system"}},{"id":"6f408e77-91ea-54af-aacc-21669ad72b6c","frontmatter":{"title":"Proxy Design Pattern","description":"In object-oriented programming, Proxy is a structural design pattern that provides a placeholder for another object to control its access. Here proxy object works as an intermediary between the client and the real object so that the client will interact with the proxy instead of the real object.","path":"/blog/proxy-design-pattern"}},{"id":"813636d9-cbf3-5c9a-b6a8-d45497a999d1","frontmatter":{"title":"Probability For Machine Learning","description":"In this article, we will not be only describing the theoretical aspects of probability but we will give you a sense of where those theoretical aspects will be used in ML.","path":"/blogs/probability-for-machine-learning"}},{"id":"00e9569d-a5b3-5333-9eaf-2f91537cd3e1","frontmatter":{"title":"Put yourself in a position where you have the flexibility to choose your company","description":"Shubham Jain shares his background story, starting from his academic journey in different schools to his decision to pursue electrical engineering at IIT Kanpur. He discusses his motivation for exploring the field of computer science, emphasizes the importance of preparation for placements, and provides guidance on how to approach the process effectively.","path":"/blogs/success-story-in-computer-science-shubham-jain"}},{"id":"cb1100f5-26ea-5d5a-b82e-b1453fcad78e","frontmatter":{"title":"Publisher Subscriber (Pub-Sub) Design Pattern","description":"The publish subscribe pattern, sometimes known as pub sub pattern, is an architectural design pattern that enables publishers and subscribers to communicate with one another. This pattern rely on a message broker to send messages from publisher to subscribers. Messages are sent out by the publisher to a channel that subscribers can join.","path":"/blog/publisher-subscriber-pattern"}},{"id":"b66155bc-806d-5772-b326-68a6e1e324f3","frontmatter":{"title":"PUBG Cheater Detection: Machine Learning Project","description":"To detect whether player is genuine or false, BGMI (PUBG) uses a state-of-the-art machine learning approach to predict the presence of cheaters. It collects players' data, draws meaningful results, and categorizes cheaters into separate categories. They use a supervised learning approach to predict the occurrence of impossible events.","path":"/blog/pubg-cheater-detection-system-using-ml"}},{"id":"33bc4435-5b56-5a7a-bbc5-2fe468230d92","frontmatter":{"title":"Longest Common Subsequence","description":"Given two strings X[] and Y[] of sizes m and n, design an algorithm to find the length of the longest common subsequence (LCS). There can be many possible common subsequences of two strings, but we need to return the common subsequence of the longest length. Note that this is an excellent problem to learn dynamic programming.","path":"/blog/longest-common-subsequence"}},{"id":"c7b86586-d74d-5473-9c18-c3928813f89d","frontmatter":{"title":"Introduction to OOPS in Python","description":"Just like other programming languages, we use OOPS in Python to write modular, reusable, and extensible code. In Python, everything is an object that holds different properties and methods, whereas the class is a blueprint that creates these objects. In this blog, we will discuss the basic OOP concepts in Python: Classes and Objects, types of methods, and types of attributes in Python.","path":"/blog/introduction-to-oops-in-python"}},{"id":"55949843-cb60-5cef-ab04-d747d604ca6f","frontmatter":{"title":"Fundamentals of Data Types and Variables in Python","description":"Python is the most preferred language for developing machine learning and data science applications. It has a large community support that can help debug the errors and resolve all the roadblocks appearing while developing any solution. In this blog, we have discussed various data types like integers, floats, boolean and strings along with their usage in Machine Learning and Data Science.","path":"/blog/basic-python-for-ml-data-science"}},{"id":"5a2b0438-3973-54eb-8866-e3dafc86f409","frontmatter":{"title":"Pyhton Data Structures: Sets and Dictionaries","description":"In python, sets and dictionaries are unordered data structures frequently used in machine learning applications. In this blog, we have explained these concepts: 1) What is set in python? 2) Important operations on sets, 3) Conversion of lists into sets 4) What is dictionary in python? 5) Operations on dictionaries? 6) Comparison of sets and dictionaries.","path":"/blog/sets-and-dictionaries-in-python-for-ml"}},{"id":"1e6ee426-7259-55ac-8644-375b7f28bf00","frontmatter":{"title":"Rat in a Maze","description":"Given a maze[][] of n * n matrix, a rat has to find a path from source to destination. The left top corner maze[0][0] is the source, and the right bottom corner maze[n-1][n-1] is the destination. The rat can move in two directions - right and down. In the maze matrix, 0 means the block is a dead end, and 1 means the block can be used in the path from source to destination.","path":"/blog/rat-in-a-maze"}},{"id":"290ff374-05db-5fcd-a0f7-4dc264739776","frontmatter":{"title":"Introduction to Loop in Python","description":"Loops are the set of instructions that needs to be executed repeatedly until a defined condition is satisfied. In this blog, we have discussed the range function in python working of a loop and the most popular loops: for and while loop in python. The use of continue and break statements in loop increase their usability in Python and building ML Applications.","path":"/blog/loops-in-python-for-ml-data-science"}},{"id":"681e6fa8-1466-55e5-b46b-268b6fe466c5","frontmatter":{"title":"Python Data Structures: Tuples and Lists","description":"Tuples and lists are two most popular python data structures used in Machine Learning and Data Science applications. They are also called compound data types because they can store a mixture of primitive data types like strings, ints, and floats. Tuples are static and immutable while lists are dynamic and mutable, but tuples are memory efficient as compared to lists. We will explore these data structures in detail in this blog.","path":"/blog/python-tuples-lists-for-ml-data-science"}},{"id":"88857f4d-5eab-5507-9d5e-966d499ca1f9","frontmatter":{"title":"Caching Strategy: Read-Through Pattern","description":"In read-through caching, when the application requests data, the cache checks if the data is present (cache hit). If yes, then the data is returned to the application. If the data is not present (cache miss), the cache retrieves the data from the database, stores it and returns it to the application. Here cache system acts as the intermediary between the application and the database.","path":"/blog/read-through-caching-strategy"}},{"id":"3ec520fb-9bef-5cef-b7a4-4ae07f2577f0","frontmatter":{"title":"Quick Sort Algorithm","description":"Quick sort algorithm is often the best choice for sorting because it works efficiently on average O(nlogn) time complexity. It is also one of the best algorithms to learn divide and conquer approach. In this blog, you will learn: 1) How quick sort works? 2) How to choose a good pivot? 3) Best, worst, and average-case analysis 4) Space complexity and properties of quicksort.","path":"/blog/quick-sort-algorithm"}},{"id":"c18a1597-5643-584f-9d75-fca1f129088d","frontmatter":{"title":"Random Forest Algorithm in Machine Learning","description":"Random forest is a supervised learning algorithm in machine learning and belongs to the CART family (classification and Regression trees). It is popularly applied in data science projects and real-life applications to provide intuitive and heuristic solutions. This article will give you a good understanding of how Random Forest algorithm works.","path":"/blog/random-forest-in-ml"}},{"id":"a667c819-2a6c-58e7-ae7c-155f981b9f28","frontmatter":{"title":"Regularization: A Fix to Overfitting in Machine Learning","description":"Regularization is the technique that is used to solve the problem of overfitting in machine learning. In this blog, we have discussed famous machine learning concepts like underfitting, overfitting, accurate fitting, regularization and how it cures overfitting. Mathematical logic behind regularization and difference between L1 and L2 regularization.","path":"/blog/regularization-in-machine-learning"}},{"id":"b9da59ce-4a97-5518-afdb-7fb561787fdf","frontmatter":{"title":"Remove nth node from end of list","description":"The head pointer of a linked list is given. Write a program to remove the Nth node from the end of the linked list and return its head. In other words, when the node is traversed from the end, we have to delete the Nth node from there. Note: This is an excellent problem for beginners to learn problem-solving using two pointers in a linked list.","path":"/blog/remove-nth-node-from-list-end"}},{"id":"5d48e172-33ad-5546-a4e8-4702d293d6bf","frontmatter":{"title":"Reverse a Linked List","description":"A head pointer of a singly linked list is given, write a program to reverse linked list and return the head pointer of the reversed list. We need to reverse the list by changing the links between nodes. Note: This is an excellent question to learn problem-solving using both iteration (Three-pointers) and recursion (Decrease and conquer approach).","path":"/blog/reverse-linked-list"}},{"id":"c2818b84-5fe8-5771-9944-0a15f44cb587","frontmatter":{"title":"How to build Recommender System using Machine Learning?","description":"Recommender System is a system that could predict the future preference for a user based on their previous behavior or by focusing on the behavior of similar users. In this blog, we have discussed: 1) What is a recommender system? 2) Their various types 3) Implementation of content-based recommender system 4) Various use cases in industry.","path":"/blog/recommender-system-using-machine-learning"}},{"id":"abb508f9-8cd2-591c-a159-c99ce64428c2","frontmatter":{"title":"Remove Duplicate from Sorted Array","description":"Given a sorted array, write a program to remove duplicates from the array. We need to remove repeated elements so that there is a single occurrence of each element and return the length of the array containing unique elements. Note: This is an excellent problem to learn the fast and slow pointers approach. We have discussed two O(n) time in-place solutions.","path":"/blog/remove-duplicates-from-sorted-array"}},{"id":"3c286318-9382-5180-a219-43ceb6c1850c","frontmatter":{"title":"Search Operation in Binary Search Tree","description":"We start searching from root node and traverse a path downward in binary search tree. For each node in the path, compare target key k with the node key. If equal, search is successful. If k <  node key, go to the left subtree. Similarly, if k > node key, go to the right subtree. In this blog, we have discussed recursive and iterative implementations of searching in BST.","path":"/blog/searching-in-binary-search-tree"}},{"id":"5b9d3dcf-e168-5ff9-a12b-8ec41521233b","frontmatter":{"title":"Convert Roman Number to Integer","description":"Given a Roman number, write a program to convert Roman number to a corresponding integer value. What are Roman numbers? Roman numbers are the symbols used in a system of numerical notation based on the ancient Roman system. The symbols are I, V, X, L, C, D, and M, which represent integer values respectively for 1, 5, 10, 50, 100, 500, and 1,000.","path":"/blog/roman-to-integer"}},{"id":"00624a37-25e6-500b-b38b-38fd58c894d6","frontmatter":{"title":"Search in a 2D Matrix","description":"You have given row-wise and column-wise sorted 2D matrix and integer k, write a program to search k in the 2D matrix, i.e. find whether k is present or not. Each row is sorted from left to right, and the first integer of each row is greater than the last integer of the previous row.","path":"/blog/search-in-a-row-wise-sorted-2d-matrix"}},{"id":"9115b947-64a8-5188-9c52-d02869f80b5b","frontmatter":{"title":"Rotate Matrix by 90 Degrees","description":"Given an n x n 2D matrix, write a program to rotate the matrix by 90 degrees in the anticlockwise direction. The program should rotate the matrix 90 degrees without using extra space. In other words, we have to perform the rotation by modifying the 2D matrix directly. Note that this is an excellent problem to learn problem-solving using loops and the transpose of a matrix.","path":"/blog/rotate-a-matrix-by-90-degrees-in-an-anticlockwise-direction"}},{"id":"1a059b1a-132a-57a7-bb33-bd15df53ad8d","frontmatter":{"title":"Segment Tree Data Structure (Build and Range Query Operations)","description":"A segment tree is a binary tree data structure such that each node stores information about a range. We use segment trees to efficiently answer multiple range queries on an array like range minimum, range maximum, range sum, etc. Also, it allows us to modify the array by replacing an element or an entire range of elements in logarithmic time.","path":"/blog/segment-tree-data-structure-part1"}},{"id":"e82500dd-b645-588e-97ef-1ad70ceb5d88","frontmatter":{"title":"Segment Tree Part 2 (Point and Range Update, Lazy Propagation)","description":"In this blog, we will learn how to use segment trees for efficient point and range updates. For the point update query, update(idx, val), we need to increment the element at index idx from the original array by val, i.e. arr[idx] = arr[idx] + val. For the range update query, update(l, r, val), we increment all elements from index l to r from the original array by val.","path":"/blog/segment-trees-data-structure-part-2"}},{"id":"83d15a62-df49-527a-b1da-bbc4840b8ab2","frontmatter":{"title":"Server Sent Events: System Design Concept","description":"Whenever we build any web application dealing with real-time data, we need to consider delivering data to the client. While building such a web application type, one needs to consider the best delivery mechanism. In this blog, we have focused on server sent events and discussed a complete insight into its internal working and the underlying features.","path":"/blog/server-sent-events"}},{"id":"d9ac626e-e523-556a-876e-aa4994e4e8ae","frontmatter":{"title":"Sentiment Analysis using Naive Bayes","description":"Sentiment analysis is a technique that comes under natural language processing(NLP) and is used to predict emotions reflected by a word or a group of words. Sentiment analysis is instrumental in brand monitoring, market research, social media monitoring, etc. This blog will discuss naive bayes to predict sentiments using their tweets.","path":"/blog/sentiment-analysis-using-naive-bayes"}},{"id":"54fc786d-16cd-5c60-b005-cd366570124d","frontmatter":{"title":"SOLID Principle Part 1: Single Responsibility Principle (SRP)","description":"The single responsibility principle is one of the popular SOLID principles in software engineering that determines how we should modularize code in object-oriented programming. The idea for this principle is relatively simple: it makes our software easier to implement and prevents unexpected side effects of future changes.","path":"/blog/single-responsibility-principle-in-oops"}},{"id":"eae7ad91-8d74-5d2b-a619-ae57568100ac","frontmatter":{"title":"SOLID Principle Part 4: Interface Segregation Principle (ISP)","description":"The Interface Segregation Principle states that clients should never be forced to depend on methods they do not use. We achieve this by making small and focused interfaces. It would be best to split large interfaces into specific ones focused on a particular set of functionalities so that clients can choose to depend only on functionalities they need.","path":"/blog/interface-segregation-principle"}},{"id":"b8451140-d5dd-5a51-9fe8-f6342dc2e319","frontmatter":{"title":"Movie Review Sentiment Analysis Using Machine Learning","description":"In this blog, you will learn classification of movie reviews into positive and negative review categories using sentiment analysis. We have also discussed: 1) Use case of sentiment analysis? 2) Data analysis for the IMDB movie review dataset 3) Steps of text or data processing, including tokenization, lemmatization, word embedding, etc.","path":"/blog/sentiment-analysis-using-machine-learning"}},{"id":"b6b65929-f0d8-5f03-aaf6-2345df175c92","frontmatter":{"title":"Sort Linked List using Insertion Sort Algorithm","description":"We have given the head of a singly linked list, write a program to sort the list using insertion sort, and return the head of the sorted linked list. To implement this algorithm, we need to understand the idea of insertion sort on array. At each step of the iteration, insertion sort adds one element to the sorted output and grows the partially sorted list size by 1.","path":"/blog/sort-linked-list-using-insertion-sort"}},{"id":"5c499ca4-36c1-50b5-a200-dacdd0b89fdb","frontmatter":{"title":"Singleton Design Pattern in OOPS","description":"Some objects might be common to all parts of the program, and we require a single instance of it. Singleton is a creational design pattern that ensures that a class has only one instance throughout the application. This restricts the instantiation of a class to one object, which is accessible from any part of the application with global access.","path":"/blog/singleton-design-pattern"}},{"id":"2b9e9b81-5806-59db-93d3-181b41d489dd","frontmatter":{"title":"Sort a Stack using Another Stack","description":"Given a stack, write a program to sort a stack in ascending order. We are not allowed to make assumptions about how the stack is implemented. The only functions to be used are push(s, x), pop(s), top(s), isEmpty(s). In this blog, we have discussed two approaches: 1) Sorting stack using temporary stack 2) Sorting stack using recursion.","path":"/blog/sort-stack-using-temporary-stack"}},{"id":"a4f2c289-5ec1-527e-994c-cb52cefeaaad","frontmatter":{"title":"Sort an Array in a Waveform","description":"Given an unsorted array of n integers, write a program to sort array into a wave array. There can be many possible waveforms, but we need to return any one of them. An array A[] is sorted in wave arrangement if A[0] >= A[1] <= A[2] >= A[3] <= A[4] >= ....and so on. Note: This is an excellent problem to learn problem-solving using a single loop.","path":"/blog/sort-an-array-in-a-waveform"}},{"id":"afdc420e-0ad4-5557-a41b-1f43584b1c63","frontmatter":{"title":"Convert sorted array to balanced BST","description":"Write a program to convert a sorted array of integers into a balanced binary search tree. Each node in the tree must follow the BST property, and the height of the left and right subtrees should be as close to equal as possible. Note: This is an excellent problem to learn problem-solving using the divide and conquer approach.","path":"/blog/sorted-array-to-balanced-bst"}},{"id":"7b86eb60-25f6-5f46-a39e-cfa9fe44eed6","frontmatter":{"title":"Sort 0s, 1s and 2s Without using Extra Space","description":"Given an array consisting of 0s, 1s, and 2s, write a program to sort this array of 0, 1, and 2 in ascending order. We need to sort the array in O(n) time complexity without using sorting algorithms or extra space. Note: This is a variation of the Dutch national flag problem and an excellent problem to learn problem solving using three pointers.","path":"/blog/sort-an-array-of-0s-1s-and-2s"}},{"id":"b28976df-2689-50a1-af27-6abfe3fe8169","frontmatter":{"title":"What is the Lower Bound of Comparison Sort?","description":"Sorting algorithms like merge sort, quicksort, insertion sort, heap sort, etc., determine sorted order based on comparison operations. We call such algorithms comparison sort. The tightest lower bound on the number of comparisons performed by comparison based sorting is O(nlogn). In this blog, we have used a decision tree model to prove this.","path":"/blog/lower-bound-of-comparison-sorting"}},{"id":"545f9ebb-99e8-5942-b37a-eed95575aac4","frontmatter":{"title":"Sort String Based on Frequency of Characters","description":"Given a string S[], write a program to sort string S in decreasing order based on the frequency of characters. The frequency of a character is the number of times it appears in the string. If two characters have the same frequency, whichever occurs earliest in S, must come first. In other words, frequency based sorting must be stable.","path":"/blog/sort-characters-by-frequency"}},{"id":"3c7898ba-d115-5440-a214-7f63824c4a33","frontmatter":{"title":"Step by Step Learning Plan for Coding Interview","description":"How to prepare a learning strategy to crack the coding interview? Here are some critical steps: 1) Building motivation 2) Calculating preparation time 3) Understanding coding interview syllabus 4) Identifying learning resources 5) Starting the continuous learning 6) Learning with collaboration 7) Critical progress review 8) Preparing interview strategy","path":"/blog/step-by-step-learning-plan-for-interview-success"}},{"id":"5e6715dd-2660-5395-b1e5-3d1d6e40daf8","frontmatter":{"title":"SQL vs NoSQL Databases: What is the Difference? ","description":"SQL and NoSQL databases have their own advantages and disadvantages. SQL databases are the best choice for consistency, complex query, and ability to handle structured data, while NoSQL databases are the best choice for their scalability, flexibility, and ability to handle unstructured data. So the decision between SQL and NoSQL will depend on the project requirements.","path":"/blog/sql-vs-nosql"}},{"id":"765b32ef-6b12-5a03-8ffe-eaf8c42129e8","frontmatter":{"title":"Steps of Problem Solving in Data Structures and Algorithms","description":"For cracking the coding interview and learning problem solving with data structures and algorithms, programmers must continuously practice the steps of coding problem solving and develop an approach to write correct and efficient code in a given time. In this blog, we have explained well-defined steps for algorithm problem solving.","path":"/blog/steps-of-problem-solving-for-cracking-the-coding-interview"}},{"id":"384421dc-1199-5fba-9a40-3f5b03d0639e","frontmatter":{"title":"Working of Backpropagation in Neural Networks and Deep Learning","description":"During machine learning model training, optimization algorithms update learnable parameters using gradients. The backpropagation algorithm automatically computes partial derivatives of the cost function with respect to weight and bias values. In this article, we will explore the math involved in each step of propagating the cost function backwards through the network, following the reverse topological order, and using the chain rule for derivative calculations.","path":"/blog/backpropagation-in-neural-networks"}},{"id":"934401fd-e466-58aa-b061-519447558289","frontmatter":{"title":"Storage and Redundancy in Distributed Systems","description":"In distributed systems, redundancy is the duplication of critical components (web server, database server, etc.) to increase reliability and availability. This concept provides a backup or failsafe, ensuring that the system continues to operate even few components fail. The term redundancy is used because if everything is working correctly, the duplicate competent does nothing and is redundant.","path":"/blog/storage-and-redundancy"}},{"id":"bcd28361-a909-5ce1-8c37-b793939b870a","frontmatter":{"title":"Strategy Design Pattern","description":"Strategy is a behavioural design pattern that helps us define a family of interchangeable algorithms and encapsulate each one as a separate class. Depending on the specific context, we can select algorithms at runtime. So using the idea of strategy pattern, we can easily add new algorithms without modifying the existing client code.","path":"/blog/strategy-design-pattern"}},{"id":"2c9ae767-5829-5f6d-b3c4-186bea3ddcb1","frontmatter":{"title":"Suffix Tree (A Compressed Version of Trie Data Structure)","description":"Suffix trees are a compressed version of the trie that includes all of a string's suffixes. It can be used to solve many string problems that occur in text editing, free-text searches, etc. Some popular applications of suffix trees are string search, finding the longest repeated substring, finding the longest common substring, data compression, etc.","path":"/blog/suffix-tree-data-structure"}},{"id":"feeb26f0-ad80-5a12-bc0b-b17de5232fb6","frontmatter":{"title":"Guide to Learn Data Structures and Algorithms for Interviews","description":"This is a complete step by step guide to master data structures and algorithms and crack the coding interview. In this blog, we have highlighted: 1) Syllabus for coding interview 2) List of best resources for learning dsa 3) How to prepare learning and coding interview preparation plan? 4) Critical tips to prepare for a dsa interview.","path":"/blog/step-by-step-guidance-to-master-data-structure-and-algorithms-for-coding-interview"}},{"id":"c8f4bb31-4a42-59fc-870a-7a4a7f8e0171","frontmatter":{"title":"Supervised, Unsupervised and Semi-supervised Learning with Real-life Usecase","description":"Based on the nature of input that we provide to a machine learning algorithm, machine learning can be classified into four major categories: Supervised learning, Unsupervised learning, Semi-supervised learning, and Reinforcement learning. In this blog, we have discussed each of these terms, their relation, and popular real-life applications.","path":"/blogs/supervised-unsupervised-and-semisupervised-learning"}},{"id":"93ba5679-4f57-5ad1-902d-e2acd35b1012","frontmatter":{"title":"Swap Linked List Nodes in Pairs","description":"Given the head pointer of a singly linked list, write a program to swap nodes in pairs and return the head of the modified linked list. If the number of nodes is odd, then we need to pairwise swap all nodes except the last node. Note: This is an excellent problem to learn problem solving using both iteration and recursion in a linked list.","path":"/blog/swap-list-nodes-in-pairs"}},{"id":"759856a0-4439-5178-898e-dd5d7c83e2ce","frontmatter":{"title":"That's why your JEE Rank Can't decide your future: Shruti Agrawal","description":"Starting my second year in computer science, unlike most of my department mates who had spent the first year exploring the discipline, I was fairly new to the field has focused on interdisciplinary first-year academics to make my branch change happen.","path":"/blogs/shruti-agrawal-iitk-google-enjoyalgorithms"}},{"id":"e642acc2-e0d0-52c5-b335-1f079c49565e","frontmatter":{"title":"Introduction to Support Vector Machine (SVM) in Machine Learning","description":"SVM, also known as support vector machines, is one of the most popular algorithms in machine learning and data science. Experts consider this one of the best \"Out of box\" classifiers. In this article, we will develop a thorough understanding of SVMs, relating it with SVC and Maximal Margin Classifier along with step-wise implementation.","path":"/blog/support-vector-machine-in-ml"}},{"id":"c8049c80-29d0-5769-9a22-b13aaa27bb63","frontmatter":{"title":"t-SNE (t-Distributed Stochastic Neighbor Embedding) Algorithm","description":"t-SNE (t-distributed stochastic neighbor embedding) is an unsupervised non-linear dimensionality reduction algorithm used for exploring high-dimensional data. In this blog, we have discussed: What is t-SNE, difference between t-SNE and PCA in dimensionality reduction, step-wise working of t-SNE algorithm,  t-SNE python implementation and Mathematical analysis of t-SNE algorithm.","path":"/blog/tsne-algorithm-in-ml"}},{"id":"b2551ea6-9909-5b14-b166-0080cf579f22","frontmatter":{"title":"Journey from remote village to being software engineer at Microsoft","description":"Archana, hailing from a village where educating daughters was questioned, found success in computer science. Starting with Navodaya Vidyalaya, she cleared IIT JEE and joined IIT Kanpur. She enjoyed learning C++ and explored various computer science courses. With a passion for software engineering, Archana secured an internship and a job offer from Microsoft. ","path":"/blogs/success-story-from-a-remote-village-to-iitk-archana"}},{"id":"8597b05c-eb13-5cc3-96b6-8e73ebf7b11b","frontmatter":{"title":"Cost Function and Learning Process in Machine Learning","description":"Machines mimic the learning behavior of humans through past experiences. The process of learning in machine learning is explained in this blog with a basic example of learning single and double parameters and their contour plots. We discussed how machines store these learning once they find the suitable values for the learnable parameters. ","path":"/blog/cost-function-in-machine-learning"}},{"id":"43f3c59c-d80f-57ae-a9bc-7ecb98a8d787","frontmatter":{"title":"Length of Largest Subarray with Zero Sum","description":"Given an array X[] of n integers, write a program to find the length of largest continuous subarray with zero sum. The subarray length starting from index i and ending at index j will be j - i + 1. So in other words, for all j > i, find max (j - i + 1) among all subarrays with zero sum.. Note: This is an excellent question to learn problem-solving using hash table.","path":"/blog/largest-subarray-with-zero-sum"}},{"id":"75b4dbd6-1a37-5476-8a49-5ca76b05ac7d","frontmatter":{"title":"Maximum Difference Between Two Elements in an Array","description":"Given an array A[] of n integers, find out the maximum difference between any two elements such that the larger element appears after the smaller element. In other words, we need to find max(A[j] - A[i]), where A[j] > A[i] and j > i. Note: This is an excellent problem to learn problem-solving using divide and conquer and a single loop.","path":"/blog/maximum-difference-between-two-elements"}},{"id":"742096b1-3065-51b3-b67d-72caa0ba258a","frontmatter":{"title":"Journey from remote village to being software engineer at Silicon Valley Startup","description":"Pankaj Kumar, a senior back-end engineer at Isima, shares his life-changing experience in computer science. Growing up in a remote village in Bihar, India, he overcame numerous challenges and joined the prestigious Super 30 program. In college, he discovered his interest in computer science and implemented various strategies to enhance his learning.","path":"/blog/success-story-in-computer-science-pankaj"}},{"id":"a0bfa3e2-7482-5fbe-91dd-c95db0587931","frontmatter":{"title":"Throttling and Rate Limiting","description":"At its most basic level, a rate limiter restricts the number of events a certain object (person, device, IP, etc.) can do in a given time range. In general, a rate limiter caps how many requests a sender can issue in a specific time window. Rate Limiter then blocks requests once the cap is reached.","path":"/blog/throttling-and-rate-limiting"}},{"id":"2a77b3d6-739b-5d43-97cb-4fb78d335109","frontmatter":{"title":"Throughput in System Design","description":"The throughput of a system is defined as the total units of information a system can process in a given amount of time. It is generally represented as the number of bits transmitted per second or HTTP operations per day. This blog will discuss the important factors that affect throughput in designing distributed systems.","path":"/blog/throughput-in-system-design"}},{"id":"3b14e440-1d0c-581e-82ac-7482a3bfc043","frontmatter":{"title":"Time Complexity Analysis in Data Structures and Algorithms","description":"We have explained these concepts related to complexity analysis in data structures and algorithms: 1) What is time complexity? 2) Why time complexity analysis important? 3) Assumptions for performing analysis of algorithms 4) Steps to analyze time complexity 5) How do we calculate algorithm time complexity in terms of big-O notation? Etc.","path":"/blog/time-complexity-analysis-in-data-structure-and-algorithms"}},{"id":"82ea95c5-eee2-5d6b-a060-02c06bd93dbc","frontmatter":{"title":"Time Complexity Analysis of Recursive Algorithms","description":"In data structures and algorithms, learning the time complexity analysis of recursion is one of the critical steps in mastering recursion. In this blog, we will discuss: 1) How to write recurrence relations of recursive algorithms. 2) Steps to analyze the time complexity of recursion 3) Popular methods of analysis like the recursion tree method and the master theorem.","path":"/blog/time-complexity-analysis-of-recursion-in-programming"}},{"id":"0e57d55f-9827-5cd2-a192-72c9ab863dad","frontmatter":{"title":"Tips and Motivation to Master Problem Solving","description":"We all want to develop problem-solving skills in math, programming, computer science, data structures and algorithms, and other fields. However, as we move forward, we may face various challenges. Sometimes we handle these situations smartly, but sometime we may get stuck. In this blog, we will present solutions and motivation to tackle some of these scenarios.","path":"/blog/tips-and-motivation-to-master-problem-solving"}},{"id":"618bff04-4797-5f11-b05b-634466b3cd8a","frontmatter":{"title":"Top Reasons for Failure in Data Structures and Algorithms","description":"Students and professionals fail to crack coding interviews due to these learning challenges: 1) Popular myths about DSA 2) Lack of continuous learning 3) Topics dependencies 4) Complex explanations 5) Memorizing solutions 6) Thinking efficient solution 7) How to write correct code? 8) Fear of math 9) Lack of interview skills 10) Poor doubt resolution.","path":"/blog/top-10-learning-challenges-in-data-structure-and-algorithms"}},{"id":"ff5b6dde-6861-5fbc-91f3-6cc1be8948d5","frontmatter":{"title":"Time Complexity Analysis of Loop in Programming","description":"There are several for and while loop patterns in programming: loop running constant or linear time, loop growing exponentially, loop running on a specific condition, two nested loops, three nested loops, etc. So to design an efficient algorithm and optimize code further, we should learn to analyze time complexity of loop in terms of big-O notation.","path":"/blog/time-complexity-analysis-of-loop-in-programming"}},{"id":"e21cc888-037b-5b51-a0f5-80154f0689dd","frontmatter":{"title":"Top Misconceptions in Machine Learning","description":"We sometimes overemphasize the capabilities of machine learning. Here are some popular misconceptions: 1) ML, DL, and AI are the same 2) Machine learning can predict the future 3) Machine learning can solve any problem 4) One machine learning algorithm will be sufficient 5) More features in the data, better will be the machine learning model, etc.","path":"/blog/top-ten-misconception-in-machine-learning"}},{"id":"fb99217d-edba-5435-a9c2-8459fa11af39","frontmatter":{"title":"Top-down vs Bottom-up approach in Dynamic Programming","description":"Understanding differences between top down (memoization) and bottom up approach (tabulation) of dynamic programming will help us make critical decisions during problem-solving. One idea is common to both approaches: They use extra memory to store solutions to sub-problems, avoid recomputation and improve performance.","path":"/blog/top-down-memoization-vs-bottom-up-tabulation"}},{"id":"0bdadffc-6e55-5234-b039-5ca107b87e8b","frontmatter":{"title":"Total Number of Possible Binary Search Trees with n Keys","description":"Write a program to find the number of structurally unique binary search trees (BSTs) that have exactly n nodes, where each node has a unique integer key ranging from 1 to n. In other words, we need to determine the count of all possible BSTs that can be formed using n distinct keys.","path":"/blog/total-number-of-binary-search-trees-with-n-keys"}},{"id":"34426d51-9ade-5839-ace2-b5912a87b4d6","frontmatter":{"title":"Rain Water Trapping Problem","description":"Given n non-negative integers representing an elevation map where the width of each bar is 1. Write a program to compute how much water it can trap after raining. This is a famous interview problem to learn time and space complexity optimization using various approaches. Two pointers approach provides an efficient solution using O(n) time and O(1) space.","path":"/blog/trapping-rain-water"}},{"id":"162f4c2f-9bf9-57ae-9785-7b6443986fb8","frontmatter":{"title":"Find all Triplets that Sum to Zero","description":"Given an array X[] of n distinct elements, write a program to find all the unique triplets in the array whose sum is equal to zero. For example, if triplets with zero sum in the array are (X[i], X[j], X[k]), then X[i] + X[j] + X[k] = 0. Hint: This is an excellent problem to learn problem-solving and optimization using hashing and two pointers approach.","path":"/blog/triplet-with-zero-sum"}},{"id":"d83b9712-fbf2-5703-84e3-358069aaab62","frontmatter":{"title":"Topic Modelling using Unsupervised Learning: LDA and LSA","description":"LDA and LSA are two unsupervised learning techniques used for topic modelling that are discussed in this blog. Topic modelling is a technique in which we assign topics to raw text data across various documents. As the dataset is vast and unlabelled, assigning topics manually is impossible, and the need for an unsupervised learning technique emerges.","path":"/blog/topic-modelling-using-lda-lsa"}},{"id":"3393e365-b2c9-52b3-b30c-7fff6f198e16","frontmatter":{"title":"Try it out. No matter you will pass or fail, but you will definitely learn","description":"This article is about Aman's journey from childhood to his role as the CTO of the Augmented Reality startup, Dybo. Aman shares his background, education and passion for computers. He discusses his experiences with programming, the Super 30 program, and his college journey at BITS Pilani. Aman also talks about the challenges faced during the startup's execution.","path":"/blog/tech-startup-success-story-aman"}},{"id":"227c0cda-4e86-56d1-96d6-4ab6f1090271","frontmatter":{"title":"Types of Graph in Data Structures","description":"The first step in approaching any graph problem is understanding the types of graphs you are working with. In this blog, we have discussed the definitions, properties, and applications of various graph types, such as directed and undirected graphs, dense and sparse graphs, weighted and unweighted graphs, cyclic and acyclic graphs, connected and disconnected graphs, and more.","path":"/blog/types-of-graphs-in-data-structures"}},{"id":"5ad230aa-40cf-5049-b743-1bb062ed9e31","frontmatter":{"title":"Exploratory Data Analysis (Univariate, Bivariate, and Multivariate Analysis)","description":"Exploratory data analysis can be classified as Univariate, Bivariate, and Multivariate analysis. Univariate refers to the analysis involving a single variable; Bivariate refers to the analysis between two variables, and Multivariate refers to the statistical procedure for analyzing the data involving more than two variables.","path":"/blog/univariate-bivariate-multivariate-analysis"}},{"id":"fd7ae0ea-04ab-54d0-b566-e1e20a6fe02b","frontmatter":{"title":"Check whether two strings are anagram of each other","description":"Given two strings, str1 and str2, of size m and n, write a program to check whether two strings are an anagram of each other or not. A string str1 is an anagram of str2 if characters of str1 can be rearranged to form str2. Note: This is an excellent string problem to learn problem-solving and optimization using direct address table.","path":"/blog/valid-anagram"}},{"id":"f3de8413-ab64-5a6e-a09a-1404ccd11f0f","frontmatter":{"title":"Predicting Cancer Using Support Vector Classifier Model","description":"Cancer classification is one area where machine learning can deliver a robust predictive model based on given observations to identify the cancer possibility. In this article, we have built a cancer classification model using ml to predict the presence of malignant (cancer-causing cells) or benign cells using a support vector classifier model.","path":"/blog/cancer-classification-using-machine-learning"}},{"id":"38ba976a-2b92-5083-88a6-fbf6f2cf80ad","frontmatter":{"title":"Soil Fertility Prediction Using Machine Learning","description":"Experts have tried several ways to predict soil fertility using machine learning methods. But classification algorithms have proven sufficient accuracy to deal with such a problem. ML algorithms like k-NN, DTs, SVM, and random forests have been used for different case studies. In this blog, we have implemented this using gradient boosting.","path":"/blog/soil-fertility-prediction-using-ml"}},{"id":"47e59398-3326-5abd-9977-f5700b743405","frontmatter":{"title":"Check Array is a Valid Mountain or Not","description":"Given an array X[] of n integers, return true if it is a valid mountain array. The array X[] is a mountain array if and only if n >= 3 and there exists some i with 0 < i < n - 1 such that: X[0] < X[1] <...X[i-1] < X[i] and X[i] > X[i+1] > ...> X[n - 1]. In other words, we call the array mountain array when the array is strictly increasing and then strictly decreasing.","path":"/blog/valid-mountain-array"}},{"id":"c6079090-746f-5d22-ade2-0bb94cdc4cbb","frontmatter":{"title":"Validate Binary Search Tree (BST)","description":"Given the root of a binary tree, write a program to check whether tree is a valid binary search tree (BST) or not. To check valid bst, we verify bst property at each node: All node values in the left subtree are less than node’s value, all node values in the right subtree are greater than node’s value, and both subtrees are also binary search trees.","path":"/blog/validate-binary-search-tree"}},{"id":"7df33393-6cd3-598d-937d-f876bf49a9d6","frontmatter":{"title":"Metrics in Software Development","description":"In this article, we will try to answer the above two questions by understanding different situations that we might encounter during software development.","path":"/blog/metrics-in-software-development"}},{"id":"7c8181d0-952f-5dda-8e30-414b0786c0bc","frontmatter":{"title":"WebSockets in System Design","description":"Web Socket is a communications protocol which provides full-duplex communication channels over a single TCP connection. This is also a vital component behind multiplayer games or applications that rely on real-time data transfer. In this blog, we have explained: 1) What is WebSocket in system design? 2) How does it work?","path":"/blog/web-sockets-in-system-design"}},{"id":"9ff673ad-7269-5913-a810-c8d372d37bdf","frontmatter":{"title":"Introduction to Object Oriented Programming in Java","description":"Learning oops is essential for modern software development as it introduces features like inheritance, encapsulation, abstraction, and polymorphism. Besides reducing code complexity, oops provide advantages like modularity, reusability, extensibility, data hiding, etc. This blog has covered a fundamental overview of oops concepts in java.","path":"/blog/introduction-to-oops-in-java"}},{"id":"93edd01f-4321-51b7-a6fb-27981fafda4d","frontmatter":{"title":"Fundamentals of Recursion in Programming","description":"Recursion means solving the problem using the solution of smaller sub-problems. This blog will explain these critical concepts: 1) What is recursion? 1) How recursion works in programming? 2) Advantages and disadvantages of recursion 3) Steps to solve problems using recursion? 4) Difference between recursion and iteration.","path":"/blog/recursion-explained-how-recursion-works-in-programming"}},{"id":"4cf61006-03d6-5ce7-a184-5ca8e955fe80","frontmatter":{"title":"Which Problems can be Solved Using Dynamic Programming?","description":"There could be two popular categories of problems that can be solved using dynamic programming: 1) Optimization problem: Here we need to find an optimal solution (minimum, longest, shortest, etc.) from a large solution space 2) Counting problem: Here we need to count different ways to find all occurrences of a combinatorial pattern.","path":"/blog/what-common-problems-solved-using-dynamic-programming"}},{"id":"e347e6a3-9e21-5ea1-ac6b-6296d6978314","frontmatter":{"title":"Activation Functions for Output Layer in Neural Networks","description":"When designing the architecture of neural networks, we need to decide the number of nodes to include in the output layer and choose the appropriate activation function. For regression tasks, the linear activation function is the most suitable option. On the other hand, for classification tasks, we have a choice between softmax and sigmoid activation functions.","path":"/blog/how-to-choose-activation-function-for-output-layer"}},{"id":"21110110-89bb-5ef6-b129-a091e9fd4685","frontmatter":{"title":"Which offset is used to fit the least square line of linear regression","description":"This is one of the basic questions asked in the interview related to linear regression.","path":"/blogs/vertical-offset-vs-perpendical-offset"}},{"id":"5793931e-eb7d-5adc-a463-9fb5270a5c53","frontmatter":{"title":"Activation Function for Hidden Layers in Neural Networks","description":"Hidden layers are responsible for learning complex patterns in the dataset. The choice of an appropriate activation function for the hidden layer can change the performance and time required for convergence. Here we have discussed in detail about three most common choices for hidden layer activation functions: ReLU, Sigmoid and Tanh.","path":"/blog/activation-function-for-hidden-layers-in-neural-networks"}},{"id":"b3829072-0479-548c-89a5-bc1b39e6c57f","frontmatter":{"title":"Why Data Structures and Algorithms Important for Machine Learning?","description":"In this blog, we have explained the top five reasons to learn data structures and algorithms for data science and machine learning. Some popular DSA concepts used in machine learning are array, vector, matrices, linked list, tree, graph, stack, queue, hashing, sets, dynamic programming, greedy algorithm, randomized algorithms, etc.","path":"/blog/why-data-structures-and-algorithms-for-machine-learning"}},{"id":"df12e590-645c-5825-ba8d-afa8261c8434","frontmatter":{"title":"Why Data Structures and Algorithms are Important?","description":"There can be several reasons to learn data structures and algorithms: 1) An algorithm is a technology which helps us to improve performance by a huge margin, 2) Data structures are at the core of several library functions and APIs, 3) DSA is important for cracking the coding interview for top tech companies, 4) Algorithms are beautiful.","path":"/blog/why-should-we-learn-data-structure-and-algorithms"}},{"id":"ae572959-d820-5f8a-b5b5-188dc9623cee","frontmatter":{"title":"Why do we need to learn different sorting algorithms?","description":"Why sorting algorithms are important in data structure? There are various reasons: 1) Sorting helps us to learn both iterative and recursive problem-solving approaches, 2) Sorting is one of the best ideas for learning time complexity analysis, code optimization techniques, etc. 3) We can solve several coding problems efficiently by sorting the input data.","path":"/blog/why-should-we-learn-sorting-algorithms"}},{"id":"26675aa6-41ce-5faf-a6d5-a570e2758a02","frontmatter":{"title":"Why do we need to learn Object Oriented Programming?","description":"Modern software consists of millions of lines of code and operates on terabytes of data. So we need a way to organize a large codebase to make it easier to understand, explain, reuse, extend and maintain. That's why we need object-oriented programming (OOP). OOP has been one of the most important programming paradigms used in the last few decades.","path":"/blog/why-should-we-learn-oops-concepts-in-programming"}},{"id":"229219f9-b848-5508-a09e-d1e4df79440b","frontmatter":{"title":"Wine Quality Prediction Using k-NN Regressor","description":"Prediction of wine quality can be made easy with machine learning and data science techniques. In this blog, we have discussed: 1) Why do we need a machine learning model for wine quality assessment? 2) Factors that affect wine quality 3) Various ML models to predict wine quality 4) Implementation of predicting wine quality using k-NN regressor","path":"/blog/wine-quality-prediction"}},{"id":"00537070-3583-58d9-b164-115c1ac8c56d","frontmatter":{"title":"Word Vector Encoding in NLP (Make Machines Understand Text)","description":"Unlike humans, machines don’t understand words and their semantic context. So, we convert processed text into a format that the machine can understand using vector encoding. In this blog, we will learn: 1) Word embedding 2) Techniques to embed words (One-hot encoding, Word2Vec, TF-IDF, etc) 3) Implementation of all these embeddings.","path":"/blog/word-vector-encoding-in-nlp"}},{"id":"17f527bf-e624-566a-9f91-4b92895bc7ad","frontmatter":{"title":"Why do we call it Supervised Learning?","description":"It is called supervised learning because algorithms that learn from the training dataset can be thought of as a guide supervising the learning process.","path":"/blog/why-do-we-call-it-supervised-learning"}},{"id":"7e8f272f-a923-5af6-bb32-0d9774d63946","frontmatter":{"title":"Designing Workflow in a Distributed System","description":"How does 1-click-buy work on Amazon? How e-commerce platforms show the status of order? What happens when we cancel an order after placing an order or after item is shipped or delivered? How is all the activity related to an order tied to just one order Id? This blog will lay out key insights on designing a workflow for such distributed systems.","path":"/blog/workflow-in-distributed-system"}},{"id":"7d53234d-9cb0-528c-8c15-cb30e26511ed","frontmatter":{"title":"Caching Strategy: Write-Through Pattern","description":"The idea of write-through caching is similar to read-through caching but there is one key difference: Here cache provider is responsible for handling write operations. So, whenever an application wants to write some data, it will first write directly on the cache, then at the same time, data will be updated to the main data source by the cache system.","path":"/blog/write-through-caching-strategy"}}]}}}