Optimization for Engineering Design - Algorithms and Examples