## The Efficiency of an Algorithm

We need to analyze algorithms to choose the most efficient algorithm to implement.  One important aspect we look at is the running time of an algorithm, which often depends on the size of input.  (See Chapter 2-2 of Introduction to Algorithms.) Size of Input Examples in measuring the input size…

## Imperative and Functional Insertion Sort in OCaml

I wrote the insertion algorithm in both imperative and functional styles in OCaml!  I talk about the fun and challenges of each style below: Imperative Insertion Sort I strictly follow the pseudocode on p.18 of the book Introduction to Algorithms.  The pseudocode is in imperative style so all I need…

## Pseudocode, Insertion Sort and Loop Invariant

Pseudocode In Chapter 2 of Introduction to Algorithms, the authors introduce pseudocode.  Pseudocode is a way to describe algorithms.  Pseudocode is not computer code and is not typically concerned with issues of software engineering (e.g., data abstraction, modularity, and error handling).  The pseudocode conventions in this book are: Syntax/format: Indentation…

## Introduction to Algorithms

What is an algorithms? From chapter 1 of Introduction to Algorithms, an algorithm is any well-defined procedure that transforms a set of input to a set of output with desired properties.  It is a tool for solving a computational problem, which specifies the desired input/output relationship. Input → Algorithms → Output The…

## Implementing Communication Styles for Effective Discussions

I came across this great article on dev.to titled ‘Communication styles – Working effectively as a team’, which is inspired by this tweet .  I recommend reading both sources but I offer a summary below.  Then I explain how to use this information to increase effectiveness of most discussions. Communication…

## Imperative Programming in OCaml

Imperative Vs Functional Programming So far, what I’ve done in OCaml is functional, i.e., I declare functions and the output value of a function depends only on the arguments that are passed to the function.  The data structures covered are mostly immutable (not able to change).  In contrast, with imperative…

## Data Structures in OCaml

In this post I continue going through Chapter 1 of Real World OCaml.  I learnt that: Errors may be caught at compile time or at run time.  Compile-time errors are preferred to runtime errors, because it’s better to catch errors as early as possible in the development process.  An e.g….

## Moving on to Real World OCaml

After finishing the first 4 chapters of OCaml from the very beginning, I feel I am ready to move on to other learning resources that assume more programming background.  After all, I can write the Fizzbuzz test now, right?  Real World OCaml and the OCaml tutorials also have the advantage…

## Learning About Lists in OCaml

In Chapter 4 of OCaml from the very beginning, I learned about lists: A list is a collection of elements of the same type.  The type of the list is (the type of the element(s)) list E.g., a list of integers has the type int list. To define a list,…