In this subject you will be introduced to the steps involved in designing and creating software solutions for a range of practical problems. To enable you to design and implement solutions, you will be introduced to methods for analysis of task definitions, algorithm design, and the writing of program source code. To develop your problem-solving skills, a variety of problems, with increasing complexity, will be presented for your practice. The Python programming language will be used as the program language for implementing software solutions. The strengths of Python, in particular its support of rapid prototyping of ideas, will be exploited to facilitate the development of your problem-solving skills and effective software development practice.