Programming Fundamental

Preface

The Programming Fundamental, a section in this site dedicated for fundamental of programming. This page will discussing about data structure, algorithm design, and design pattern.

This page is a metapage. It means deeper and more focused article will be written in other place and their entry will be indexed here. Browse following catalog to search what you want.

Table of Content

Basic Concept

Data Structure

Primitive Data Structure

Advance Data Structure

Algorithm Design

Algorithm Development Step

Basic Concept in Designing Algorithm

Searching

Sorting

Greedy

Divide and Conquer

Dynamic Programming

Graph Algorithm

String Manipulation

Design Pattern

Basic Concept in Design Pattern

Creational Pattern

Structural Pattern

Behavioral Pattern

Concurrency Pattern

Article

Programming Language Paradigm

Notation and Pseudocode

Basic Concept

The basic concept, things every programmer should have or know.

Designing A Good Program

Variables and Constants

Operators

Condition Analysis

Repetition

Array

Structure and Object

Function and Procedures

Data Structure

[x] Primitive Data Structure

Stack

Queue

Linked List

Tree

Graph

[x] Advance Data Structure

Algorithm Design

This section will collect all articles related to algorithm design pattern and the topic covered here will use C++.

[x] Algorithm Development Step

Problem Definition

Development of a Model

Specification of Algorithm

Designing an Algorithm

Analysis of Algorithm

Checking the Correctness of Algorithm

Implementing Algorithm

Program Testing

[x] Basic Concept in Designing Algorithm

Big Oh Notation

[x] Searching

Binary Tree Search

Sequential Search

[x] Sorting

Bubble Sort

Cocktail Sort

Comb Sort

Gnome Sort

Odd-Even Sort

Merge Sort

Quick Sort

Selection Sort

Shell Sort

[x] Greedy

[x] Divide and Conquer

[x] Dynamic Programming

[x] Graph Algorithm

[x] String Manipulation

KM Search

Design Pattern

This section will focusing on Software Design Pattern. By default C++ programming language will be used.

In software engineering, a design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. A design pattern is not a finished design that can be transformed directly into source or machine code. It is a description or template for how to solve a problem that can be used in many different situations. Patterns are formalized best practices that the programmer must implement themselves in the application. Object-oriented design patterns typically show relationships and interactions between classes or objects, without specifying the final application classes or objects that are involved. Patterns that imply object-orientation or more generally mutable state, are not as applicable in functional programming languages.

[x] Basic Concept in Design Pattern

Brief Introduction to Object-Oriented Programming

Delegation

Template

[x] Creational Pattern

Deal with object creation mechanism, trying to create objects in a manner suitable to the situation.

Abstract Factory

Builder

Factory Method

Lazy Initialization

Multiton

Object Pool

Prototype

Resource Acquisition is Initialization

Singleton

[x] Structural Pattern

Ease the design by identifying a simple way to realize relationship between entities.

Adapter or Wrapper or Translator

Bridge

Composite

Decorator

Facade

Flyweight

Front Controller

Module

Proxy

[x] Behavioral Pattern

Identify common communication pattern between objects. By doing so, these patterns increase flexibility in carrying out this communication.