×
Home Discussions Write at Opengenus IQ
×
  • DSA Cheatsheet
  • HOME
  • Track your progress
  • Deep Learning (FREE)
  • Join our Internship 🎓
  • RANDOM
  • One Liner

Erick Lumunge

Erick is a passionate programmer with a computer science background who loves to learn about and use code to impact lives positively.

Nairobi •
241 posts •
Software Engineering

LLVM - An Overview

This article serves as an introduction to LLVM, it answers the question, what is LLVM and why we need intermediate code in the process of code compilation.

Erick Lumunge
Compiler Design

MCQs on Compiler Design

This is a listing of 50+ Multiple Choice Questions on Compiler Design.

Erick Lumunge
Compiler Design

Code Generation from AST to LLVM IR

In this article, we will learn how to transform an AST(Abstract Syntax Tree) into an LLVM IR(Intermediate Representation).

Erick Lumunge
Compiler Design

Create AST nodes using LLVM

In this article, we learn how to build a class hierarchy that represents different AST nodes in a programming language whereby the node type has a class where the name of the class represents a syntax element of the programming language.

Erick Lumunge
Compiler Design

Machine dependent optimizations

Code optimization in compiler design is grouped into two major optimization techniques. These are machine-independent and machine-dependent. In this article, we learn about optimization involving the underlying machine.

Erick Lumunge
Compiler Design

Control flow in Intermediate Code Generation

During the construction of the front end of a compiler, we implement statements using control flow. We translate the statements by inheriting a label next that marks the first instruction after the code for this statement.

Erick Lumunge
Compiler Design

Types and Declarations in Intermediate Code Generation

In this article, we learn about types and the storage layouts for names declared within a procedure or class which are allocated at run time when the procedure is called or an object is created.

Erick Lumunge
Compiler Design

Evaluation Orders for SDDs

In this article, we learn about evaluation orders fpr syntax-directed definitions. Dependency graphs are used to determine an evaluation order for instances of attributes in a parse tree.

Erick Lumunge
Compiler Design

Syntax-Directed Translation Schemes

In this article, we learn about syntax-directed translation schemes, a complementary notation to syntax-directed definitions.

Erick Lumunge
Compiler Design

Applications for Syntax-Directed Translation

In this article, we learn about the main application of Syntax-directed Translation which is the construction of syntax trees.

Erick Lumunge
Compiler Design

Syntax Directed Definitions

SDDs specify values of attributes by associating the semantic rules of a programming language with the grammar productions. In this article, learn about SDDs, different types of attributes, and how SDDs are evaluated in a parse tree.

Erick Lumunge
Theory of Computation

The Halting problem

We learn about the halting problem in computability theory. It is as follows, Given an algorithm and its initial input, we determine if the algorithm when executed in this input will ever stop/halt. If it does not halt, it runs forever in an infinite loop.

Erick Lumunge
Theory of Computation

Recursive and Recursively Enumerable Languages

In this article, we learn about the properties of recursive and recursively enumerable languages in terms of union, intersection, and complements and compare the two languages.

Erick Lumunge
Theory of Computation

Non Deterministic Turing Machines

We learn about non-deterministic turing machines - a generalization of the standard deterministic turing machine from a uniquely determined sequence of computation steps to several possible sequences of computational steps.

Erick Lumunge
Theory of Computation

Types of Turing Machines

A Turing Machine is a mathematical model of a computation defining an abstract machine. In this article, we learn about the different variations/types of Turing machines.

Erick Lumunge
Theory of Computation

Turing Machines and Church-Turing Thesis in Theory of Computation

A Turing machine is a mathematical model of a computation that defines an abstract machine. In this article, we learn about Turing machines, how they are defined formally and informally, and the Church-Turing thesis.

Erick Lumunge
Linux

nohup command in Linux

We use the nohup command to keep a process from being killed when the kernel sends the SIGHUP signal to the process when the terminal is closed. In this article, we learn about this command through examples.

Erick Lumunge
Software Engineering

Gated check in

A gated check-in is a software integration pattern used to avoid breaking a build. It triggers an automated build before code is checked in, if the build fails, it is not checked in until all issues are fixed, otherwise, it is merged to the main branch.

Erick Lumunge
Software Engineering

Types of System Testing

System testing is the third phase of software testing in the software testing hierarchy, other phases are unit testing, integration testing, and acceptance testing. We learn about system testing, the process, the different types, and the reasons to perform system testing.

Erick Lumunge
Software Engineering

Nightly / Daily build

A nightly build is an automatic build that takes place when nobody is around, usually at night or during lunch. It is automated by a script that ensures no bugs were introduced and all dependencies are available.

Erick Lumunge
Software Engineering

Functional testing

In functional testing, we test software to ensure that it fulfills all functional requirements as specified in the business document. In this article, we learn about functional testing, why we test, the process of testing, types of testing, and some of the tools used for functional testing.

Erick Lumunge
Software Engineering

Black box vs White box testing

Testing software is the fifth phase in the Software Development Life Cycle-SDLC. We test software to ensure safety, security, product quality, no bugs are present, usability, etc. In this article, we learn about black box and white box testing.

Erick Lumunge
Linux

md5sum and sha256sum commands in Linux

MD5(message-digest algorithm) and SHA-256 are hashing algorithms that take in a message and produce a fixed-length digest/hash we can use to verify the integrity of a file or directory. We learn about md5sum and sha256sum commands in Linux.

Erick Lumunge
Linux

tmux in Linux

A terminal multiplexer allows us to manage multiple terminal windows and sessions. In this article, we learn about tmux, installation, sessions, windows, synchronization, and more.

Erick Lumunge
Linux

Swap space in Linux

Swap space is virtual memory allocated on the hard disk that is used to hold inactive memory pages when RAM is depleted. In this article, we learn all about swap space and how to create a swap file in Linux.

Erick Lumunge
OpenGenus IQ © 2025 All rights reserved â„¢
Contact - Email: team@opengenus.org
Primary Address: JR Shinjuku Miraina Tower, Tokyo, Shinjuku 160-0022, JP
Office #2: Commercial Complex D4, Delhi, Delhi 110017, IN
Top Posts LinkedIn Twitter
Android App
Apply for Internship