Algorithm theory and complexity introduction