Artificial Learning Algorithm Design Techniques