# Welcome!

I am an senior undergraduate computer science major at the University of Wisconsin-Madison .

## Dynamic Programming

Introduction Dynamic programming is closely related to divide & conquer and has far-ranging applications. They share the same idea of dividing a bigger and complicated question into smaller and easy-to-solve sub-problems of the same type. So both of them are based on recursion. The difference: In divide & conquer, sub-problems share the same type with … Continue reading Dynamic Programming

## Divide & Conquer

Introduction Divide and conquer is a basic but powerful technique that is widely used in many algorithms. As you might speculate from its name, the principle of divide and conquer is to recursively divide a complicated problem into a few simple sub-problems of the same type (divide), until they become simple enough and we can … Continue reading Divide & Conquer

## Introduction to Algorithm

In computer science, an algorithm is a sequence of well-defined instructions to solve a problem, usually within a finite amount of time and space. And it is an essential and indispensable part of computer science, theoretically and practically. Here’s a rough schedule of what will be discussed in this topic: Basic Graph Algorithms Breadth-first search … Continue reading Introduction to Algorithm