This course follows the Introduction to Computer Programming course (CIT102) and is dedicated to implementing the most common data structures (such as lists, stacks, files, or others) and frequently used algorithms (such as search, classification, image processing, or others) using a high-level programming language (Python will be used for examples and exercises). The principles of software design and analysis of the complexity of algorithms will be discussed. At the end of this course, the student is fully prepared to take the PCEP - Python certified entry-level Python programmer from the Python Institute and with some additional preparation, the PCAP - Certified Associate in Python Programming.