Programming – Programming Fundamental


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

  1. Basic Concept
  2. Data Structure
    1. Primitive Data Structure
    2. Advance Data Structure
  3. Algorithm Design
    1. Algorithm Development Step
    2. Basic Concept in Designing Algorithm
    3. Searching
    4. Sorting
    5. Greedy
    6. Divide and Conquer
    7. Dynamic Programming
    8. Graph Algorithm
    9. String Manipulation
  4. Design Pattern
    1. Basic Concept in Design Pattern
    2. Creational Pattern
    3. Structural Pattern
    4. Behavioral Pattern
    5. Concurrency Pattern


  1. Programming Language Paradigm
  2. Notation and Pseudocode

Basic Concept

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

  1. Designing A Good Program
  2. Variables and Constants
  3. Operators
  4. Condition Analysis
  5. Repetition
  6. Array
  7. Structure and Object
  8. Function and Procedures

Data Structure

[x] Primitive Data Structure

  1. Stack
  2. Queue
  3. Linked List
  4. Tree
  5. 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

  1. Problem Definition
  2. Development of a Model
  3. Specification of Algorithm
  4. Designing an Algorithm
  5. Analysis of Algorithm
  6. Checking the Correctness of Algorithm
  7. Implementing Algorithm
  8. Program Testing

[x] Basic Concept in Designing Algorithm

  1. Big Oh Notation

[x] Searching

  1. Binary Tree Search
  2. Sequential Search

[x] Sorting

  1. Bubble Sort
  2. Cocktail Sort
  3. Comb Sort
  4. Gnome Sort
  5. Odd-Even Sort
  6. Merge Sort
  7. Quick Sort
  8. Selection Sort
  9. Shell Sort

[x] Greedy

[x] Divide and Conquer

[x] Dynamic Programming

[x] Graph Algorithm

[x] String Manipulation

  1. 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

  1. Brief Introduction to Object-Oriented Programming
  2. Delegation
  3. Template

[x] Creational Pattern

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

  1. Abstract Factory
  2. Builder
  3. Factory Method
  4. Lazy Initialization
  5. Multiton
  6. Object Pool
  7. Prototype
  8. Resource Acquisition is Initialization
  9. Singleton

[x] Structural Pattern

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

  1. Adapter or Wrapper or Translator
  2. Bridge
  3. Composite
  4. Decorator
  5. Facade
  6. Flyweight
  7. Front Controller
  8. Module
  9. Proxy

[x] Behavioral Pattern

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

  1. Blackboard
  2. Chain of Responsibility
  3. Command
  4. Interpreter
  5. Iterator
  6. Mediator
  7. Memento
  8. Null Object
  9. Observer or Publisher/Subscriber
  10. Servant
  11. Specification
  12. State
  13. Strategy
  14. Template Method
  15. Visitor

[x] Concurrency

  1. Active Object
  2. Balking
  3. Binding Properties
  4. Double-Checked Locking
  5. Event-Based Asynchronous
  6. Guarded Suspension
  7. Join
  8. Lock
  9. Messaging Design Pattern (MDP)
  10. Monitor Object
  11. Reactor
  12. Read-Write Lock
  13. Scheduler
  14. Thread Pool
  15. Thread-Specific Storage


Programming language tutorial ground