This course provides a complete overview of the use and design of common algorithmic structures and their performance as implemented in many different programming languages. The course will include an in-depth presentation of basic and advanced algorithms and areas such as Big O notation. Formal algorithms are developed by students in both Python and R and then compared analytically to determine effectiveness and efficiency. The course will also discuss the computability and speed of algorithms and the trade-off analysis required to select the best algorithm for the complex computational problem at hand. The course concludes with the application and management of algorithms and algorithmic thinking in real world science, technology, and engineering scenarios and products.