# I Bought a Kindle Paperwhite and I Love It: Here Are the Reasons Why

Note: In the rest of the article, the term Kindle refers to Kindle Paperwhite (10th gen).

# Being a ScholarX Mentee: A Step Worth Taking as a Research Student

Interacting with people with similar goals like ourselves is a fruitful experience because it is easy to connect with others and we get to learn a lot from those interactions. A few weeks ago, I had the opportunity to join the ScholarX mentoring program as a mentee where I met…

# Lock-based vs Lock-free Thread Synchronization

Parallel programming has become an inevitable skill that all programmers should master. Threads running in parallel typically use shared resources for several reasons such as communication and coordination. Thread synchronization is a technique to avoid race conditions when these shared resources are manipulated concurrently by multiple threads. …

# Performance Comparison Between Selection, Insertion, and Bubble Sorts

In the first three articles of the sorting algorithms series, we discussed selection sort, insertion sort, and bubble sort. We also did theoretical performance analysis using amortized time complexities. The following table summarizes their time complexities.

# Introduction to Bubble Sort

In the first two articles of the sorting algorithms series, we looked at Selection Sort and Insertion Sort. Bubble sort is another simple sorting algorithm that is easy to understand and implement. The idea is to compare the adjacent elements and swap them if they are in incorrect order. …

# Introduction to Insertion Sort

In the previous article, we looked at selection sort. Insertion sort is a simple sorting algorithm that is very similar to selection sort. Given an array of elements to be sorted, insertion sort works as follows:

• Divide the array into two subarrays: sorted and unsorted subarray (similar to that of…

# Introduction to Selection Sort

Selection sort is one of the basic sorting algorithms which is easy to understand and implement. The idea is simple: given an array of elements to be sorted,

• Divide the array into two subarrays: sorted and unsorted subarrays
• In each iteration, find the maximum/minimum element in the unsorted subarray and…

# Karatsuba Algorithm for Multiplying Two Integers

All of us learned how to multiply two numbers when we were kids. In case we have forgotten (😄), let’s look at how to multiply two numbers 19 and 95.

# Basic Linux Commands for Beginners

For a new user, the Linux environment is not as user-friendly as Windows. It would take some time to become familiar with the terminal and terminal commands. I remember myself struggling to even traverse through the directories and doing a google search for everything.

Here is a list of some…

# Taxonomy of Cache Misses

Introduction to Cache Memory

Majority of the modern-day computers have three levels of cache memories namely L1, L2, and L3 caches. Often, L1 and L2 caches reside on-chip while L3 cache resides off-chip. These cache memories play an important role in creating the illusion of having a fast main memory…