This is the entry course to Computer Science for students with prior programming experience. It focuses on the quality of processes used when developing software, and the quality of the software product produced using those processes. The course provides an introduction to fundamental software development techniques and processes, such as reading, writing, and documenting programming code, decomposing problems, testing, debugging, using recursion and handling unexpected errors. It also addresses efficient ways to organize and manipulate data, including sorting and searching algorithms, and writing software that uses and implements common abstract data types such as lists, stacks, queues, dictionaries and trees. The course will be taught using the Python programming language.