Articles

Covariance πŸ‡ΊπŸ‡Έ

Covariance is a fundamental statistical measure that quantifies the degree to which two random variables change together. It indicates the direction of the linear relationship between variables...

Correlation πŸ‡ΊπŸ‡Έ

Correlation is a statistical measure that quantifies the strength and direction of the linear relationship between two variables. It is a fundamental concept in statistics, enabling researchers and analysts to understand how one variable may predict or relate to another. The most commonly used corre...

Joint Distributions πŸ‡ΊπŸ‡Έ

A univariate distribution describes a single random variable. A joint distribution describes several random variables simultaneously and contains the information needed to reason about dependence, conditional behavior, and functions of multiple variables...

Negative Binomial Distribution πŸ‡ΊπŸ‡Έ

A discrete random variable X follows a negative binomial distribution if it represents the number of trials required to achieve a specified number of successes in a sequence of independent Bernoulli trials. The negative binomial distribution is often denoted as $X \sim \text{NegBinomial}(r, p)$, whe...

Binomial Distribution πŸ‡ΊπŸ‡Έ

A discrete random variable X follows a binomial distribution if it represents the number of successes in a fixed number of Bernoulli trials with the same probability of success. The binomial distribution is denoted as $X \sim \text{Binomial}(n, p)$, where n is the number of trials and p is the proba...

Geometric Distribution πŸ‡ΊπŸ‡Έ

A discrete random variable X follows a geometric distribution if it represents the number of trials needed to get the first success in a sequence of Bernoulli trials. The geometric distribution is denoted as $X \sim \text{Geometric}(p)$, where p is the probability of success on each trial...

Poisson Distribution πŸ‡ΊπŸ‡Έ

A discrete random variable X follows a Poisson distribution if the events occur independently and at a constant average rate. The Poisson distribution is denoted as $X \sim \text{Poisson}(\lambda)$, where $\lambda$ is the average rate (or mean) of events occurring in a given interval...

Log Normal Distribution πŸ‡ΊπŸ‡Έ

A continuous random variable X follows a log-normal distribution if its natural logarithm is normally distributed. The log-normal distribution is useful in modeling continuous random variables that are constrained to be positive. It is denoted as $X \sim \text{LogNormal}(\mu, \sigma^2)$, where $\mu...

Beta Distribution πŸ‡ΊπŸ‡Έ

A continuous random variable $X$ follows a beta distribution when its support is the interval $[0,1]$ and its shape is governed by two positive parameters. The beta distribution is denoted as $X \sim \text{Beta}(\alpha, \beta)$, where $\alpha$ and $\beta$ are shape parameters. A shifted and scaled b...

Exponential Distribution πŸ‡ΊπŸ‡Έ

The exponential distribution is a continuous probability distribution that models the time between events in a Poisson point process. The exponential distribution is denoted as $X \sim \text{Exp}(\lambda)$, where $\lambda$ is the rate parameter...

Uniform Distribution πŸ‡ΊπŸ‡Έ

A continuous random variable X follows a uniform distribution over an interval $[a, b]$ if it has a constant probability density over that interval. The uniform distribution is denoted as $X \sim \text{Uniform}(a, b)$...

Normal Distribution πŸ‡ΊπŸ‡Έ

A continuous random variable $X$ follows a normal distribution, denoted as $X \sim \mathcal{N}(\mu,\,\sigma^{2})$, when it has the familiar symmetric bell-shaped density. Its support is the entire real line, so extreme values are possible but receive increasingly small probability in the tails. The ...

Gamma Distribution πŸ‡ΊπŸ‡Έ

A continuous random variable X follows a gamma distribution if it is used to model the time until an event occurs a specific number of times. The gamma distribution is a two-parameter family of continuous probability distributions and is often denoted as $X \sim \text{Gamma}(\alpha, \beta)$, where ...

Asynchronous Programming πŸ‡ΊπŸ‡Έ

Asynchronous programming is a technique for achieving concurrency without forcing one operation to block progress while it waits for another to finish. Instead of requiring each task to complete before the next can make progress, asynchronous code can suspend waiting work and continue with other rea...

Mpi πŸ‡ΊπŸ‡Έ

The Message Passing Interface (MPI) is a standardized, portable interface for message passing across a wide range of parallel-computing systems. It provides library routines for building parallel applications whose processes communicate by explicitly sending and receiving data. The MPI standard defi...

Hardware πŸ‡ΊπŸ‡Έ

Parallel computing uses multiple hardware execution resources to make progress on more than one operation at a time. Those resources may exist inside one CPU core, across several cores or processor sockets, on a GPU, or across multiple networked machines. The useful performance gain depends not only...

Designing Parallel Programs πŸ‡ΊπŸ‡Έ

Designing a parallel program means restructuring a computation so that useful work can proceed concurrently without making coordination costs dominate. A good design does more than create many tasks: it exposes enough parallelism, keeps processors busy, limits communication and synchronization, pres...

Multithreading πŸ‡ΊπŸ‡Έ

Multithreading is the use of multiple threads within a process so that work can proceed concurrently. A thread is a unit of execution that the operating system can schedule. Threads in the same process share an address space and many process resources, while each thread has its own execution state, ...

Multiprocessing πŸ‡ΊπŸ‡Έ

Multiprocessing runs work across multiple processes. Each process normally has its own virtual address space, so processes are more isolated from one another than threads, which typically share a process's memory. This isolation reduces accidental shared-state interference and improves fault isolati...

Evaluating Performance πŸ‡ΊπŸ‡Έ

Evaluating a parallel program means more than asking whether it runs faster with more processors. Good performance analysis looks at how much faster it becomes, how efficiently it uses additional resources, where time is lost, and whether the behavior remains stable as the workload or machine size g...

Gpu Programming πŸ‡ΊπŸ‡Έ

GPUs (Graphics Processing Units) are throughput-oriented processors designed to apply similar operations across large numbers of data elements in parallel. They were originally built for graphics workloads, where millions of pixels or vertices must be processed, but the same architecture is also eff...

Basic Terminology πŸ‡ΊπŸ‡Έ

Let's start with the terms used throughout these notes. Some sound similar but describe different things: how tasks are ordered, whether they run at the same time, and what happens while they wait. These ideas apply across programming languages; later notes explain how individual languages implement...

Selinux πŸ‡ΊπŸ‡Έ

SELinux stands for Security-Enhanced Linux...

Task State Analysis πŸ‡ΊπŸ‡Έ

Task-state analysis is a way to understand what processes and threads are doing by looking at their runtime states...

System Startup πŸ‡ΊπŸ‡Έ

The system startup process is everything that happens between pressing the power button and reaching a usable login prompt or graphical desktop...

Nfs πŸ‡ΊπŸ‡Έ

NFS stands for Network File System...

Running Executables πŸ‡ΊπŸ‡Έ

When you type a command such as...

Firewall πŸ‡ΊπŸ‡Έ

A firewall controls network traffic entering, leaving, or passing through a system...

Containers and Docker πŸ‡ΊπŸ‡Έ

Containers have fundamentally changed the way software is built, shipped, and run. If you've spent time administering Linux systems, managing packages, configuring services, and troubleshooting dependency conflicts, you already understand the pain that containers were designed to solve. A container ...

Inotify πŸ‡ΊπŸ‡Έ

Inotify is a Linux kernel subsystem that provides a mechanism for monitoring file system events. It allows applications to watch files and directories for changes such as creation, deletion, modification, and access. Rather than repeatedly polling the file system to detect changes, inotify delivers ...

Commands πŸ‡ΊπŸ‡Έ

Let's talk about some seriously useful tricks that'll make your command-line life much easier. Ever find yourself thinking "I know I ran that command yesterday, but what was it again?" or "There has to be a faster way to do this!" Well, you're in luck, the terminal has some fantastic features to hel...

Services πŸ‡ΊπŸ‡Έ

A service is a background program that provides a function to the system, users, or other programs...

Logical Volume Management πŸ‡ΊπŸ‡Έ

Storage devices such as HDDs, SSDs, USB drives, and virtual disks provide raw space. Before that space can be used conveniently, it usually needs to be divided, organized, formatted, and mounted...

Utilities πŸ‡ΊπŸ‡Έ

We will discuss various tools that can be used on Linux systems for tasks such as taking screenshots, recording screens, preparing bootable sticks, and detecting malware. It provides brief explanations of each tool and includes installation and usage instructions...

Cron Jobs πŸ‡ΊπŸ‡Έ

Cron is a powerful utility in Unix-like operating systems that automates the execution of scripts or commands at specified times, dates, or intervals. It is used for tasks such as system maintenance, backups, updates, and more...