The Baeldung logo
  • The Baeldung LogoCS Sublogo
  • Start Here
  • About ▼▲
    • Full Archive

      The high level overview of all the articles on the site.

    • About Baeldung

      About Baeldung.

Core Concepts

Learn about the most fundamental concepts, such as data structures, math, logic, and programming paradigms.

  • Probability and Statistics (15)
  • Project Management (15)
  • Optimization (13)
  • Scheduling (11)
  • CPU (11)
  • Object-Oriented Programming (11)
  • Compilers and Linkers (10)
  • Virtualization (9)
  • Geometry (8)
  • Testing (7)
  • Databases (6)
  • Matrix (6)
  • Formal Languages (6)
  • Recursion (6)
  • Dynamic Programming (6)
  • Cache (5)
  • Distributed Systems and Programming (4)
  • Design Patterns (4)
  • Threads (4)
  • Regression (4)
  • Linked List (4)
  • Stack (3)
  • Buffer (3)
  • Cryptography (3)
  • HTTP (3)
  • Prime Numbers (3)
  • Hashing (3)
  • Heap (2)
  • URL (2)
  • Entropy (2)
  • Array (2)
  • Naive Bayes (2)
  • Training (2)
  • NP-Complete (2)
  • Queue (2)

>> How to Read Barcodes

>> Best Open-Source Mixed Integer Optimization Solver

>> Priority Inversion

>> What and Where Are the Memory Stack and Heap?

>> The Bounded-Buffer Problem

>> Algorithm for Online Outlier Detection in Time Series

  • Probability and Statistics

>> OS-Specific Software

>> Practical Examples of the Big O Notation

>> What is Smoke Testing?

>> Serialization vs. Marshaling

>> Virtual Memory: Second Chance Replacement

>> What Is Ad Hoc Testing?

>> The Ostrich Algorithm

>> What Is Mob Programming?

>> Software Metrics: Lines of Code

>> Real-Time Systems

>> Differences Between Raster and Vector Graphics

>> Federation in Computing

>> Database Sharding vs. Partitioning

>> What Is Demand Paging?

>> Scheduling: Highest Response Ratio Next

>> UML State Diagrams Explained

>> Software Testing: Severity vs. Priority

>> What Is an Entity Relationship Diagram?

>> The Spiral Model: An Overview

>> How to Create a URL Shortener

>> Bitwise Shift Operators

>> The Elgamal Cryptography Algorithm

>> Finding a Matrix Determinant

>> File Access: Sequential vs. Direct vs. Indexed

>> Address Binding in Operating Systems

>> Explaining the Context Design Pattern

>> Data Storage: What Does CRUD Means?

>> What Are Videos Technically?

>> Introduction to Quantum Computing

>> Differences Between Abstraction and Encapsulation

>> Recognizable vs. Co-recognizable vs. Decidable Languages

  • Formal Languages

>> What Is Software Prototyping?

>> What Is Pair Programming?

>> SOAP vs. WSDL

>> Boxing and Unboxing

>> Software Quality

>> Factory Method vs. Factory vs. Abstract Factory

>> User Thread vs Kernel Threads

>> Infix, Prefix, and Postfix Expressions

>> What Is the Belady’s Anomaly?

>> What Is Reverse Engineering in Computer Science?

>> Capability Maturity Model

>> What Is XML?

>> Differences Between Data and Information in Computing

>> Software Engineering: V-Shaped Model

>> What Is Cyclomatic Complexity?

>> From Recursion to Iteration – Factorial Function Example

>> What Are Serialization and Deserialization in Programming?

>> Extreme Programming

>> Scheduling: Completion Time vs. Response Time

>> Maintainability Killers

>> The Stable Marriage Problem

>> What Is an API Endpoint?

>> What Is Reactive Programming?

>> Scheduling: Earliest Deadline First

>> OOP: Inheritance vs. Aggregation

>> What Is an ORM? How Does It Work? How Should We Use One?

>> Interfaces vs. Base Classes: the Similarities and Differences

>> What Is Software Diversity?

>> What Is Functional Decomposition?

>> Difference Between Fundamental Matrix and Essential Matrix

>> XOR Swap

>> Modulus Division

>> How Does External Fragmentation Happen?

>> Dependency Injection vs. Service Locator

>> What Are Regular Languages?

>> What Is Referential Transparency?

>> What Is Agile Programming?

>> Deprecated vs. Depreciated vs. Obsolete in Software Development

>> How to Check if a Line Segment Intersects a Rectangle?

>> Recursion: Direct vs Indirect

>> Software Engineering: SCRUM vs. XP

>> Different Types of System Calls

>> Circular Buffer

>> Enumerators vs. Constants

>> What Is the Difference Between Keyword and Reserved Word?

>> Conditionals

>> What Is Cosine Similarity?

>> Front-End vs. Back-End Development

>> Software Engineering: The Waterfall Model

>> Bugs and Debugging in Programming

>> How Many Bytes Does One Unicode Character Take?

>> CPU Scheduling: Arrival, Burst, Completion, Turnaround, Waiting, and Response Time

>> KISS Software Design Principle

>> Private vs. Protected Access Modifiers

>> Off-by-One Error

>> Differences Between Homography and Affine Transformation

>> What Are Low-Code and No-Code Development?

>> Unit vs. Integration Testing

>> DRY Software Design Principle

>> State Pattern vs. Strategy Pattern

>> Class vs. Object in OOP

>> Granularity: Coarse-Grained vs. Fine-Grained

>> What Are Handlers in Programming?

>> What Are Coroutines?

>> Compiler, Linker, Assembler, and Loader

>> Information Theory

>> Error Handling

>> Explanation of BASE Terminology

>> Memory Management: Inverted Paging

>> Preemptive and Non-Preemptive Scheduling

>> The 3Sum Problem

>> Introduction to Gibbs Sampling

  • Probability and Statistics

>> Software Engineering: White-Box vs. Black-Box Testing

>> Statistical Independence

  • Probability and Statistics

>> How Do Threads Share Resources?

>> Bayes’ Theorem

  • Probability and Statistics

>> System Call vs. System Interrupt

>> The XP’s Commandments of Simple Code

>> How Do DMA Controllers Work?

>> Differences Between a Data Type and a Data Structure

>> Probability: Joint vs. Marginal vs. Conditional

  • Probability and Statistics

>> Headless Software

>> Lookup Table in Databases

>> Combinatorial Optimization

>> Finding the Digital Root

>> Why Use a Surrogate Loss

>> Calculating the Average of a Set of Circular Data

>> How to Calculate the Angle from Rotation Matrix

>> Optimization: Local vs. Global Optima

>> Zombie Processes in Operating Systems

>> DLL Hell Problem

>> Random Variables

  • Probability and Statistics

>> Calculating the Odds of a Team Winning a Sports Match Given Full History

  • Probability and Statistics

>> Differences Between Simulation and Emulation

>> Consensus Algorithms in Distributed Systems

  • Blockchain

>> Differences Between CPU and GPU

>> Optimization: Objective Functions, Decision Variables and Constraints

>> Finding Neighbors of a Matrix Cell

>> Differences Between Sequential and Random Writes of Memory

>> Static vs. Dynamic Linking

>> Differences Between Firmware and Operating System

>> Vanilla Software and Programming

>> Ad-hoc Programming

>> Programming Languages: Lexicon vs. Syntax vs. Semantics

>> What’s a Buffer?

>> Differences Between Directories and Folders

>> Difference Between API and SDK

>> Differences Between Definition, Declaration, and Initialization

>> The Direct Linear Transform

>> Stateful vs. Stateless in Programming

>> Language Processors Explained

>> Cache-Friendly Code

>> The XOR Operation

>> What Is Constrained Optimization?

>> How to Project a 3D Point Onto a 2D Plane?

>> Orthogonality in Computer Programming

>> If-Else and Switch

>> What Is the Difference Between User Variables and System Variables?

>> How Many Threads Is Too Many?

>> What Is “Energy” in Image Processing?

>> Deep Dive Into Optimization

>> Caching: Cold Cache vs. Warm Cache

>> What Is the Difference Between Signed and Unsigned Variables?

>> Remote Procedure Calls vs. Local Procedure Calls

>> Deterministic and Stochastic Optimization Methods

>> I/O Management

>> Recursion and Looping

>> Computer Boot Process Explained

>> Correcting Fisheye Images

>> Differences Between NTFS, FAT32 and exFAT

>> Type Safety in Programming Languages

>> Why Is Using Global Variables Considered a Bad Practice?

>> The Mahalanobis Distance

>> Private Bytes, Virtual Bytes, and Working Set

>> Fast Fourier Transform (FFT)

>> Sampling From the Exponential Distribution

  • Probability and Statistics

>> Fuzzy Logic Explained

>> What’s a Hypothesis Space?

>> Converting Floats into Fractions

>> Differences Between Scalability and Elasticity

>> Disparity Map in Stereo Vision

>> Interpolation and Regression: Similarities and Differences

>> Basic Services of an Operating System

>> Introduction to Resource Description Framework (RDF)

>> How to Calculate the Runtime Percentage Improvement

>> What Are Callback Functions?

>> 32-Bit vs. 64-Bit Operating Systems

>> Fast Algorithms for Solving a System of Linear Equations

>> Intersection Over Union for Object Detection

>> Memory-Mapped vs. Isolated I/O

>> Differences Between APIs and ABIs

>> Pre-increment vs. Post-increment in a Loop

>> Determining the Most Distant Pair of Points

>> Abstract Methods vs. Virtual Methods

>> Differences Between a Deep Copy and a Shallow Copy

>> The Call Stack

>> Lambda Functions

>> Memory Allocation

>> Robust Estimators in Robust Statistics

  • Probability and Statistics

>> Transfer Learning vs Domain Adaptation

>> Antipatterns: Magic Numbers

>> What Are Rings in Operating Systems?

>> How to Test if a Number Is a Fibonacci Number

>> What Is Depth in a Convolutional Neural Network?

>> Centralized Computing vs. Distributed Computing

>> What Is the Difference Between Natural Cubic Spline, Hermite Spline, Bézier Spline and B-Spline?

>> Supported Memory by 32 and 64-Bit Machines

>> Pseudo-Polynomial vs. Polynomial Complexity

>> Virtual Memory Address

>> What Is the Maximum Length of a URL in Different Browsers?

>> Introduction to Curve Fitting

>> What Is a Random Walk?

>> An Introduction to the Hidden Markov Model

>> Multi-Verse Optimizer

>> Master Theorem for Asymptotic Analysis

>> The Monty Hall Problem

>> Basics of Polynomial Interpolation

>> Looking for a CS Technical Editor for Baeldung (not open)

>> Tabulation vs. Memoization

>> The Importance of Central Limit Theorem

  • Probability and Statistics

>> Why Are Floating Point Numbers Inaccurate?

>> Fundamentals of Sandboxing

>> What Is Selection Bias and How Can We Prevent It?

>> Context-Free Languages

  • Formal Languages

>> Guide to the “Cpu-Bound” and “I/O Bound” Terms

>> Unit Testing vs Test-Driven Development

>> Cache Miss, TLB Miss, Page Fault

>> Differences Between Core and CPU

>> Types of Operating Systems

>> From Recursive to Iterative Functions

>> Streaming Median

>> Tail vs. Non-Tail Recursion

>> Circle Line-Segment Collision Detection Algorithm

>> Generating Permutations with Repetition

>> Q-Learning vs. Dynamic Programming

>> Languages for Data Structures

>> The Difference Between a Framework and a Library

>> File Structures

>> Imperative and Declarative Programming Paradigms

>> Internal Fragmentation vs. External Fragmentation in Paging

>> How Many Principal Components to Take in PCA?

>> Statically Typed vs Dynamically Typed Languages

>> High-Level Languages vs. Low-Level Languages

>> Fastest Algorithm to Find Prime Numbers

>> Segmented Paging vs. Paged Segmentation

>> Files and File Systems

>> Memory Management

>> Clean Code – Formatting

>> Intuitive Explanation of the Expectation-Maximization (EM) Technique

  • Probability and Statistics

>> An Algorithm for Inflating and Deflating Polygons

>> Advanced CPU Designs

>> Introduction to Cache Memory

>> Instructions and Programs

>> Extended Euclidean Algorithm

>> Docker and Containers vs. Virtual Machines

>> The Difference Between an Argument and a Parameter

>> Guide to the CPU

>> Choosing the best q and p from ACF and PACF plots in ARMA-type modeling

  • Probability and Statistics

>> Binary Trees vs. Linked Lists vs. Hash Tables

  • Hashing

>> Sine Cosine Algorithm

>> Finding Three Elements in an Array Whose Sum Is Closest to a Given Number

>> Arithmetic Logic Unit

>> Program Counter and Instruction Register

>> Greedy vs. Heuristic Algorithm

>> What Is a Loop Invariant?

>> LL vs. LR Parsing

  • Formal Languages

>> Introduction to ASCII Code

>> How to Find an Area of Overlapping Rectangles

>> Compiled vs. Interpreted Programming Languages

>> Registers and RAM

>> What Does “Busy Waiting” Mean in Operating Systems?

>> Introduction to Assembly Language

>> What Is Thrashing?

>> Full, Para, and Hardware-Assisted Virtualization Compared

>> Runtime vs. Compile Time

>> Grey Wolf Optimization Algorithm

>> State Machines: Components, Representations, Applications

  • Formal Languages

>> Dijkstra vs Floyd-Warshall Algorithms

>> The Most Efficient Way to Implement an Integer Based Power Function

>> Finding the Next Smaller Element for Each Element in an Array

>> Algorithms to Check If a Number Is a Power of 2

>> Job vs. Task vs. Process

>> Technical Debt

>> RISC vs. CISC

>> What Is the Difference Between Trap and Interrupt?

>> Process Scheduling

>> Expression vs. Statement

>> Microservices and Cross-Cutting Concerns

>> Intuition Behind Gradient Descent Algorithm

>> Code Smells

>> The Difference Between Virtual Memory and Swap Space

>> Compile Time vs. Load Time vs. Execution Time

>> Time Complexity vs. Space Complexity

>> Difference between Big-O and Little-o Notations

>> Primality Test: Miller-Rabin Method

>> Physical vs. Virtual Memory

>> Process vs. Thread

>> Why Do We Need Virtual Memory?

>> What Is a Chipset?

>> Fermat Primality Test

>> Difference Between Cohesion and Coupling

>> What Is a Heuristic Function?

>> BIOS vs. CMOS vs. UEFI

>> What’s the Difference Between User and Kernel Modes?

>> Refactoring

>> What Is an OS Kernel?

>> Pairing Socks From a Pile Efficiently

>> The Difference Between a Method and a Function

>> Deadlock, Livelock and Starvation

>> Virtual Memory

>> Polynomial Addition and Multiplication Using Linked List

>> Ackermann Function

>> Semaphore vs. Mutex

>> Alternatives of Ten – Binary, Octal, Hexadecimal

>> A Guide to Semantic Versioning

>> What Does It Mean to Program to Interfaces?

>> How to Improve Naive Bayes Classification Performance?

  • Probability and Statistics

>> Ugly Duckling Theorem

>> Understanding BDD

>> The Difference Between a Port and a Socket

>> Inter-Process Communication

>> Gradient Descent Equation in Logistic Regression

>> Correlated Features and Classification Accuracy

  • Probability and Statistics

>> Dynamic Linking vs. Dynamic Loading

>> Find Local Minimum in N x N Matrix

>> Using Min/Max Within an Integer Linear Program

>> Difference Between REST and HTTP

>> Process Lifecycle

>> How to Determine if a List of Polygon Points Are in Clockwise Order

>> Fundamentals of Distributed Systems

>> GIT vs. SVN

>> Haversine Formula

>> Object-Oriented vs Functional Programming

>> Sum of Digits in Factorial

>> The Pigeonhole Principle

>> REST vs SOAP

>> The General Concept of Polymorphism

>> Time Complexity of Inserting into a Heap

>> CRC Vs Checksum

>> Fundamental Difference Between Hashing and Encryption Algorithms

  • Hashing

>> Clean Code: Naming

>> Matrix Multiplication Algorithm Time Complexity

>> Time Complexity of Euclid’s Algorithm

>> Greedy Algorithm to Find Minimum Number of Coins

>> Finding the Most Significant Bit

>> The Difference Between Lower Bound and Tight Bound

>> Remove Duplicates From a Linked List

>> Maximizing Profit for Given Stock Quotes

>> Understanding Forecast Accuracy: MAPE, WAPE, WMAPE

>> How Does FIFO Page Replacement Work?

>> What Is an Idempotent Operation?

>> Maximum Single-Sell Profit

>> Graph Auto-Layout Algorithm

>> How to Reverse a Linked List

>> Clean Code: Comments

>> Generating Dependency Graphs With Text

>> How to Calculate the Area of a 2D Polygon?

>> What’s the Difference Between a Word and a Byte?

>> What the Correlation Coefficient Actually Represents

>> What Is a Mutex?

>> Understanding Randomness

>> How to Prove That a Problem Is NP-Complete?

>> Object-Orientation in the Real World

>> Deep Dive into Hashing

  • Hashing

>> What Is the Difference Between Gradient Descent and Gradient Ascent?

>> Finding XOR of All Numbers in a Given Range

>> When Not to Use Regular Expressions?

  • Formal Languages

>> Regular Expressions

  • Formal Languages

>> Boolean Algebra: Basic Laws

>> Introduction to RAID

>> Why Does the Cost Function of Logistic Regression Have a Logarithmic Expression?

>> Linear Regression vs. Logistic Regression

>> First-Order Logic

>> How Compilers Work

>> Propositional Logic

>> Virtualization vs Containerization

>> Function Parameters: Call by Reference vs Call by Value

>> SAT and 3-SAT – Cook-Levin Theorem

>> The Liskov Substitution Principle

>> Cache Write Policy

>> A Simple Explanation of Naive Bayes Classification

  • Probability and Statistics

>> Computer Science Definition of Entropy

>> Maximum Value of an Integer: Java vs C vs Python

>> Introduction to Virtualization

>> Process Control Block

>> Euclidean Distance vs Cosine Similarity

>> Types of Queues

>> Fibonacci: Top-Down vs Bottom-Up Dynamic Programming

>> Constituency Parsing vs Dependency Parsing

>> An Introduction to Amortized Analysis

>> Functional Programming

>> Longest Palindromic Subsequence With Dynamic Programming

>> Implement Stack Using Two Queues

>> What Is a Monitor in Computer Science?

>> Understanding Space Complexity

>> Greedy Approach vs Dynamic Programming

>> Predicates in Computer Science

>> Longest Increasing Subsequence Using Dynamic Programming

>> Logarithmic Time Complexity

>> P, NP, NP-Complete and NP-Hard Problems in Computer Science

>> What Is a Closure – Different Types of Scopes

>> Code Coverage

>> Two’s Complement

>> An Introduction to the Theory of Asymptotic Notations

  • ↑ Back to Top
The Baeldung logo

Categories

  • Algorithms
  • Artificial Intelligence
  • Core Concepts
  • Data Structures
  • Graph Theory
  • Latex
  • Networking
  • Security

Series

About

  • About Baeldung
  • The Full archive
  • Editors
  • Terms of Service
  • Privacy Policy
  • Company Info
  • Contact
The Baeldung Logo