4CA10 (2023-2) Principles of design and programming