Explore the differences between disaster recovery and backup.
This is the standard author on the site. Most articles are published by individual authors, with their own profiles, but when multiple people have a strong contribution, we publish collectively here.
Here's what I've written (so far):
Baeldung on Computer Science
- Algorithms (46)
- Machine Learning (42)
- Networking (35)
- Programming (34)
- Artificial Intelligence (27)
- OS (25)
- Math and Logic (25)
- Data Structures (20)
- Trees (17)
- Software Architecture (16)
- Deep Learning (15)
- Security (14)
- Core Concepts (14)
- Sorting (12)
- Latex (11)
- Computer Vision (10)
- Graphs (8)
- Data Science (6)
- Searching (5)
- Graph Traversal (5)
- Concurrency (5)
- Graph Theory (4)
- Path Finding (2)
- Web (1)
Explore referential transparency in programming.
Learn what is the IP address 0.0.0.0 and how to use it.
Learn about the Agile approach, its values and principles, and the differences between Agile and waterfall models.
A quick and practical guide to the Ramsey Theory.
Learn about maximum likelihood estimation.
Learn how to convert a finite state machine into a regular expression.
Learn about perfect graphs.
Discover definitions of common anti-patterns, how to recognize them, and strategies for how to actively avoid them.
A quick and practical guide to Firefly algorithm.
Learn about system calls and their types.
Study sparse coding neural networks.
Learn about front-end and back-end development and their differences.
Learn about the ways to define and measure the quality of service in networking.
Explore HTTP flood attacks and prevention strategies.
Explore the differences between circuit and packet switching techniques.
Learn the differences between the GET and POST methods.
Take a closer look at the divide and conquer-based efficient sorting algorithm known as Merge sort.
Explore the differences between known-plaintext and chosen-plaintext cryptographic attacks.
Learn about the artificial bee colony metaheuristic.
Learn about the KISS software principle, why we should use it, and how to apply it to our programs.
Explore web crawling and web scraping, two concepts of data mining used to understand website data and collect website data.
Learn some popular techniques for preprocessing image data before training.
Explore affine transformation and homography, two essential techniques used to align and correct geometric distortion in images.
Learn about the DRY software principle and its advantages.
Learn about the remote code execution vulnerability.
Learn about smart contracts.
Explore the main principles and applications of Space Carving.
Dive deep into the architecture of load balancers.
Learn about the virtuality continuum and the differences between AR, VR, and MR.
Explore exceptions and how to handle them.
Explore the K-Way Merge and Two Way Merge algorithms.
Learn about data lakes which harnesses the strength of big data technology and combined with the nimbleness of self-service.
Explore the concept of multi-task learning.
Learn about adware.
Learn more about Tabu Search.
Explore main processes that together constitute the software production pipeline and their differences.
Learn more about the difference between static and dynamic routing.
Introduction to one-hot encoding.
Introduction to feature selection methods in machine learning.
Explore concepts of marginal, joint, and conditional probabilities.
Explore the concepts of translation invariance and translation equivariance.
Learn more about Combinatorial Optimization Problems
Learn why we need surrogate loss functions as well as see examples of their effectiveness.
A quick and practical guide to calculating the odds of a team winning a sports match.
Learn about Swarm Intelligence!
Learn about Virtual Private Networks.
Introduction to Particle Swarm Optimization.
Learn how the pigeonhole sorting algorithm works and when it’s appropriate to use it.
Explore the Viola-Jones algorithm.
Learn how to split table cells horizontally, vertically, and diagonally in LaTeX.
Explore several terminologies that are used to describe network performance.
Learn how to insert pages from an existing PDF file into your LaTeX document.
Learn about different methods of sending information about real-time events between applications.
Learn how to wrap text in a LaTeX table.
Explore the difference between an API and an SDK.
Learn how to count words in a LaTeX document.
Learn about stateful and stateless programming.
Learn about programming language processors and their differences.
Learn why activation functions are an essential part of neural network architectures.
Learn how to show URLs in LaTeX.
Learn about Content-Based Image Retrieval and its differences from Text-Based Image Retrieval.
Lear how AI plays chess.
Learn about the channels of a Convolutional Neural Network (CNN) and how to modify input images.
Learn how to implement a dictionary of a natural language.
Learn how to define loops in LaTeX.
Learn about port scanning types and methods.
Learn how to insert SVG images into LaTeX documents.
Learn how to insert images into LaTeX documents.
Learn how to add hyperlinks to LaTeX documents.
Learn about web caching, CDNs and their advantages.
Learn about the main tasks of object recognition.
Learn several techniques for positioning figures in a LaTeX document.
Explore how they differ from basic SVMs.
Understand how numbers are represented in binary and learn the differences between signed and unsigned variables.
Learn how CDNs work, their advantages, and the types of content they can serve.
A quick and practical guide to Harris corner detection.
Learn why the heapsort algorithm is not stable.
Learn the differences between Hashing and Message Authentication Codes (MACs), and how they can be used together.
Explore three interesting sort algorithms that don’t use comparisons.
Learn about the Gabor convolution filters, commonly used in image processing.
Learn how Fibonacci search works.
Explore every step of the booting process.
Explore different methods for programmatically correcting fisheye images.
Explore the differences between a message broker and an enterprise service bus.
Explore three major file systems that are widely used nowadays.
Learn how to win a Gomuku game with AI strategy.
Explore in detail the type safety issues in computer programming.
Explore the Heapsort algorithm.
Learn about the difference between binary, discrete and continuous input data.
Learn about different types of gradient descent optimization methods.
Learn about global variables.
Explore the problems related to the Curse of Dimensionality.
Learn how to use the Fuzzy algorithm to search in texts.
Learn about the difference between Multi-layer Perceptron and Deep Neural Network
Learn how Fast Fourier Transform works.
Explore the silhouette values for clustering.
Explore node impurity in Decision Trees.
Learn about the difference between the Model-free vs. Model-based Reinforcement Learning
Learn the differences between sparse and missing data.
Explore the concept of disparity, and learn about its importance in stereo vision.
Learn about the concepts of interpolation and regression
Learn about MapReduce, a widely used algorithm due to its capability of handling big data effectively and achieving high levels of parallelism in cluster environments.
Learn about the difference between TLS and DTLS.
Learn about Resource Description Framework (RDF).
Explore the callback functions.
Explore differences between 32-bit and 64-bit operating systems.
Learn how to sort a bibliography by order of appearance in a LaTeX document
In this tutorial, we analyze the advantages and disadvantages of Naïve Bayes (NB) and Support Vector Machine (SVM) classifiers applied to text classification.
Learn about the difference between self-signed CA and a self-signed certificate
Learn about Intersection over Union.
Learn about Unified Resource Identifiers.
Explore the most efficient ways to sort linked lists.
Learn about the Ant Lion Optimizer which gives us a meta-heuristic algorithm for optimization problems
Learn about the differences between cloud computing and distributed computing.
Learn about the Dragonfly Algorithm by describing its different steps and the mathematical model
Learn about lambda functions and their use in programming.
Learn the main concepts of Robust Statistics and the most common estimators of the central tendency and the statistical dispersion
Learn where Genetic Algorithms are used.
A quick and practical comparison of Markov Chains and Hidden Markov Models
Learn about the reparameterization trick in variational autoencoders
Learn about common autoencoder types.
Learn about training and validation loss ad how to interpret them in Deep Learning
Learn about Virtual Memory Address concept.
Learn about the training, validation, and testing aspects of neural networks
An overview of the Q-learning and SARSA algorithms.
Learn about the differences between Backpropagation (BP) and Stochastic Gradient Descent (SGD).
Explore the Master Theorem to compute the runtime of the algorithm.
Join the Baeldung editorial team.
Learn why n-tier architects are essential in software design
Learn about Central Limit Theorem and why it’s useful.
Explore the Moth Flame Optimization algorithm.
Learn how floating-point numbers are represented in a computer and what limitations they have.
Explore the different concepts and architectures used to sandbox applications.
Learn about the CPU-bound and I/O bound operations.
Learn about the ensemble learning method in machine learning.
Learn the difference between 127.0.0.1 and localhost
Explore Prim’s algorithm for finding the Minimum Spanning Tree in graphs.
A quick and practical guide to Stratified Sampling in Machine Learning.
Learn the difference between a heuristic and an algorithm.
Explore the Minimax algorithm’s functionality and the domains where it’s usually applied.
Learn about packet transmission time and how we can approximately calculate it
Learn how programming languages use different data structures.
Learn about layered architecture design.
Explore the Principal Component Analysis.
Learn the difference between statically and dynamically typed languages.
Have a look at real-world examples of tree structures, in the areas of game development, databases, and machine learning.
Learn how to create a segment tree.
Learn what routing tables are and how they are used.
Learn about good practice for code formatting.
A quick and practical guide to detecting patterns in time series.
Learn the difference between distributed systems and distributed computation.
Learn how to find the majority value of an array.
Learn about “Request Timed Out” and “Destination Host Unreachable” error messages and how to diagnose them.
Learn the difference between arguments and parameters.
Explore the concept of relaxing edges and its importance in various shortest path algorithms.
Learn the difference between binary trees, linked lists and hash tables.
Learn about available free AI engines and how they work.
Explore hash tables and self-balancing binary search trees.
Learn about the loop invariant property and why it is important for proving algorithms.
Explore the differences between LL and LR parsers.
An overview of ASCII code
A comparison of external and internal sorting algorithms
Learn the basic features and common operations of a stack
Learn how to find rectangles’ overlapping area fast.
Explore the differences between compiled and interpreted programming languages.
Learn about busy waiting and what it is used for.
Read a brief overview of Assembly language.
Explore the basic operations of a BST that contains strings as keys.
Learn what the Calculate Receptive Field is and how to calculate it.
Understand the concept of thrashing in Operating Systems.
Learn about the time complexity of Merge Sort.
Explore the main concepts of sockets and their operational behavior.
Learn the key differences between Dijkstra and Floyd-Warshall algorithms.
Learn about algorithms that can be used to merge two binary search trees.
Learn about the difference between Job, Task, and Process
Understand Dijkstra’s algorithm and its time complexity.
Learn some basic similarities and differences between statements and expressions
Compare bridge, station, router, and access points.
A quick explanation of compile/load/execution time terms.
Learn about the difference between Propagation Delay and Transmission Delay and how to calculate them.
Explore the data structure called a priority queue.
Learn about physical and virtual memory and why we need these two separate entities
Learn about the difference between Quicksort and Heapsort
A quick and practical comparison of threads and processes.
Learn about sorting algorithms and when to apply them.
Explore some commonly used open-source libraries for neural networks.
A quick and practical comparison between user and kernel modes.
Learn where the binary trees are used
Explore the definition of the kernel in OS.
Learn about basic concurrency problems.
Learn about Client and Server network modeling.
Learn about the Saga architecture pattern to implement distributed transactions in a microservice-based application.
Learn about the definition and types of text similarity.
Learn about the differences between mutexes and semaphores.
In this tutorial, we’ll introduce and explain the CAP theorem.
Learn about the definitions and techniques of topic models, word embeddings, and WordVec.
Compare two different IP address types – IPv4 and IPv6.
In this tutorial, we’ll introduce one of the algorithms of finding the lowest common ancestor in a directed acyclic graph. Also, we’ll talk about its time complexity.
Explore computer system processes and various mechanisms of communications between them.
Explore various aspects of linking and loading in a computer application.
Learn about strong and weak supervision learning.
In this tutorial, we’ll create a simple algorithm to determine the polygon points’ orientation. Furthermore, we’ll revise and use some formulas for the area computation.
Learn about the epoch concept in neural networks.
Learn about q-learning, a reinforcement learning technique.
Explore several advanced data structures.
In this tutorial, we’ll learn how to find a cycle starting node in a linked list.
Learn about computing the number of different Binary and Binary Search Trees.
Learn about the mathematical idea behind the Pigeonhole Principle
Learn how to find the range of IP addresses given a subnet mask.
Understand the different between CRC and Checksums
Learn about hashing and encryption algorithms.
Have a look at the similarities and differences between the Heap and Binary Search Tree (BST) data structures.
Learn how SVM is applied for the multiclass classification problem
Learn about possible process synchronization problems to better understand how to use semaphores effectively
Learn what augmenting paths are in the context of maximum matchings and maximum flows
Learn how to find the total number of nodes in a K-Ary Tree using the number of leaves.
Have a look at how to determine the height of a balanced Binary Search Tree.
A quick and practical introduction to sentiment analysis.
Learn one of the main aspects of Graph Theory — graph representation.
Learn how to sort an array of points in clockwise order.
Learn the basics of firewalls, and explore how they’re used in network security.
Learn how to measure the area of general 2D polygons
Learn how to reconstruct a tree from its depth-first traversals.
A quick and practical overview of Binary Search Tree validation.
Get familiar with the concept of a Secure Shell.
A quick and practical overview of F-1 Score for Multi-Class Classification.
A quick and practical comparison of epoch and iteration in neural networks.
Learn how to prove the NP-Completeness of the problem.
Take a deep dive into the Domain Name System.
Learn the concept of Virtual Area Local Networks.
Learn how inputs normalization helps model training of neural networks
Find out what learning curves are and how to use them to evaluating your Machine Learning models.
A quick and practical introduction to the Classification Model evaluation.
Learn about Dynamic Host Configuration Protocol (DHCP)
Learn about Redundant Array of Independent Disks (RAID) to achieve high performance and better reliability in a computer system.
Learn how to sort elements in binary trees and their complexity.
See how to solve the game Towers of Hanoi programmatically and what complexity it requires.
A quick and practical introduction to data races.
A quick and practical introduction to detecting cycles in a directed graph.
Learn the difference between virtualization and containerization.
Explore the definitions of asynchronous programming and multithreaded programming
Explore two important conceptual definitions for supervised learning – features and labels in a dataset.
Explore the concepts of pass by value and pass by reference.
Explore the problem of finding the diameter of a graph.
Explore the main conceptual and technical differences between Big Data and Data Mining.
Explore various write policies used in caches.
A quick and practical guide on when to apply data normalization.
Explore the information-theoretic explanation of the difference between labeled and unlabeled data.
Study the theoretical foundations of the problem of emotion detection in texts.
A comprehensive overview of Naive Bayes Classification.
A comprehensive introduction to Entropy.
Explore the differences between these three top languages in relation to the maximum possible integer value.
Explore common prerequisites to the study of machine learning.
Learn how the Go-Back-N protocol works for both the sender and the receiver side to ensure reliable data transfer.
Explore the differences between directed and undirected graphs.
Learn when it’s advisable to use neural networks and when we should avoid using neural networks and favor other techniques instead
Learn how virtualization is used to divide computer resources.
Learn about process control blocks that allow computer systems to execute multiple programs simultaneously.
Study two important measures of distance between points in vector spaces: the Euclidean distance and the cosine similarity.
Explore the strategy of divide and conquer, with the use of recursion.
Learn about different types of approaches to spam detection.
Learn how to compute numbers in the Fibonacci Series with a recursive approach and with two dynamic programming approaches.
Learn how to apply feature scaling during the data transformation phase to improve Machine Learning results.
A quick and practical guide to binary search trees.
Learn the core concepts of the functional programming paradigm and how it compares to OOP.
Learn how different dimensions are used in convolutional neural networks.
Learn how to solve the Lowest Common Ancestor problem of two nodes in a binary tree.
Study two fundamental components of Convolutional Neural Networks – the Rectified Linear Unit and the Dropout Layer.
Study the nonlinear activation functions most commonly used in backpropagation algorithms and other learning procedures.
Learn how to implement a Stack data structure using two Queues.
Learn about the ABA problem; how it happens, what problems it can cause, and how to fix it.
Explore the differences between linear and nonlinear problems, and how the former are inadequate in dealing with complex nonlinear problems.
Learn how to implement a prefix tree data structure.
Explore the concept of a monitor and then learn about its implementation in Java.
Explore a simple definition of connected component followed by a couple of simple and easy to understand examples
Explore the concept of B-trees and B+trees/
A quick and practical explanation of differences between tree depth and height.
Learn how to analyze an algorithms space complexity
Learn how to detect cycles in an undirected graph using Depth-First Search (DFS).
Learn the key differences between Greedy Approach and Dynamic Programming.
Learn about the differences between genetic algorithms and neural networks.
Learn how to store a graph in memory.
A quick and practical example of solving Binary Gap using recursion.
Learn the dynamic programming approach for the longest increasing subsequence programming problem.
Understand clustering algorithms that may apply when we don’t know how many clusters there will be
Explore depth-first traversal methods and learn about their applications in the real world.
Explore the use of logarithmic time complexity in computer science.
Explore the famous problem in computer science.
Explore common data structures that are useful in programming.
Learn about closures, one of the most important topics when preparing for an interview.
Learn what code coverage term means and analyze various ways to measure it.
Explore the concept of two’s complement that allows computers to have one set of circuits – adders – that do two jobs: Addition and subtraction.
Learn when you’d use Prim’s or Dijkstra’s algorithms