Selection Sort in Python
Sorting, although a basic operation, is one of the most important operations a computer should perform. It is a building block in many other algorithms and procedures, such as searching and merging. Knowing different sorting algorithms could help you better understand the ideas behind the different algorithms, as well as...
Programming Language Processors
Nowadays, most programs are written in a high-level language such as C, Java, or Python. These languages are designed more for people, rather than machines, by hiding some hardware details of a specific computer from the programmer. Simply put, high-level languages simplify the job of telling a computer what to...
Mathematical Proof of Algorithm Correctness and Efficiency
When designing a completely new algorithm, a very thorough analysis of its correctness and efficiency is needed. The last thing you would want is your solution not being adequate for a problem it was designed to solve in the first place. In this article we will be talking about the...
Theory of Computation: Finite State Machines
A Finite State Machine is a model of computation, i.e. a conceptual tool to design systems. It processes a sequence of inputs that changes the state of the system. When all the input is processed, we observe the system's final state to determine whether the input sequence was accepted...