## Algorithmic Thinking (Part 2)

Start Date: 12/13/2020

 Course Type: Common Course

#### About Course

Experienced Computer Scientists analyze and solve computational problems at a level of abstraction that is beyond that of any particular programming language. This two-part class is designed to train students in the mathematical concepts and process of "Algorithmic Thinking", allowing them to build simpler, more efficient solutions to computational problems. In part 2 of this course, we will study advanced algorithmic techniques such as divide-and-conquer and dynamic programming. As the central part of the course, students will implement several algorithms in Python that incorporate these techniques and then use these algorithms to analyze two large real-world data sets. The main focus of these tasks is to understand interaction between the algorithms and the structure of the data sets being analyzed by these algorithms. Once students have completed this class, they will have both the mathematical and programming skills to analyze, design, and program solutions to a wide range of computational problems. While this class will use Python as its vehicle of choice to practice Algorithmic Thinking, the concepts that you will learn in this class transcend any particular programming language.

#### Course Introduction

Algorithmic Thinking (Part 2) In this course, you will study the concept of algorithm complexity in a general framework. We will use it to analyze systems of classical algorithms and introduce the concepts of indexing, traversals, and recursion. We will use the computer science tools of the formulae of abstract mathematics to study the algorithms themselves. We will discuss the huge variety of algorithms that are used in industry today. You will learn how to think more systematically about algorithms and their complexity. You will also learn to think more fluently on the machine learning front. After completing this course, you will be able to: - construct an index of contemporary algorithms to analyze as a function of their complexity - use the formulae of abstract mathematics to analyze algorithms - understand algorithms by applying them to a large variety of problems - recognize the use of recursion and traversals in a classical algorithm - understand the concepts of indexing, traversals, and recursion introduced in a classical algorithmWelcome & The Formulae of Abstract Mathematics Indexing & Recursion Trees & Solving Problems Simplified Programming & Summary Evaluation Algorithmic Thinking (Part 1) In this course, you will study the concept of algorithm complexity in a general framework. We will use it to analyze systems of classical algorithms and introduce the concepts of indexing, traversals, and recursion. We will use the computer science

#### Course Tag

Algorithms Python Programming Algorithmic Efficiency Dynamic Programming

#### Related Wiki Topic

Article Example
Unified structured inventive thinking Engineering and science are mostly based on an algorithmic-type of problem solving developed by applied mathematicians. Inventing is not an algorithmic process; it is a result of unrestricted creative thinking—inspiration. Lacking in algorithmic processes, inventive-type problem solving methodology has eluded much of academia. Many methodologies have been developed and marketed for filling this gap. Though they may or may not involve algorithms, they often entail structured methodology. USIT has structure, but no algorithms.
Algorithmic paradigm An algorithmic paradigm, algorithm design paradigm, algorithmic technique, or algorithmic strategy is a generic method or approach which underlies the design of a class of algorithms. It is an abstraction higher than the notion of an algorithm, just as an algorithm is an abstraction higher than a computer program. Examples of algorithmic paradigms include the greedy algorithm in optimization problems, dynamic programming, prune and search, and divide and conquer algorithms. More specialized algorithmic paradigms used in parameterized complexity include kernelization and iterative compression. In computational geometry, additional algorithmic paradigms include sweep line algorithms, rotating calipers, and randomized incremental construction.
Algorithmic art Algorithmic art, also known as "algorithm art", is art, mostly visual art, of which the design is generated by an algorithm. Algorithmic artists are sometimes called algorists.
Distributed algorithmic mechanism design Distributed algorithmic mechanism design (DAMD) is an extension of algorithmic mechanism design.
Algorithmic logic Algorithmic logic is one of many logics of programs.
Algorithmic art Algorithmic art, also known as computer-generated art, is a subset of generative art (generated by an autonomous system) and is related to systems art (influenced by systems theory). Fractal art is an example of algorithmic art.
Algorithmic trading Algorithmic trading has been shown to substantially improve market liquidity among other benefits. However, improvements in productivity brought by algorithmic trading have been opposed by human brokers and traders facing stiff competition from computers.
Algorithmic probability In algorithmic information theory, algorithmic probability, also known as Solomonoff probability, is a mathematical method of assigning a prior probability to a given observation. It was invented by Ray Solomonoff in the 1960s.
Algorithmic logic The formalized language of algorithmic logic (and of algorithmic theories of various data structures) contains three types of well formed expressions: "Terms" - i.e. expressions denoting operations on elements of data structures,
Statistical thinking Statistical thinking is a recognised method used as part of Six Sigma methodologies.
Computational thinking As far as a physical facility, in Central New Jersey, there is a small institution, named Storming Robots, offering technology programs to Grade 4 to 12 with an emphasis on Algorithmic and Computational Thinking via robotics projects throughout the school year. Students may follow its road map starting from Grade 4 until they graduate to college.
Algorithmic probability Solomonoff invented the concept of algorithmic probability with its associated invariance theorem around 1960, publishing a report on it: "A Preliminary Report on a General Theory of Inductive Inference." He clarified these ideas more fully in 1964 with "A Formal Theory of Inductive Inference," Part I and Part II.
Algorithmic art "Algorist" is a term used for digital artists who create algorithmic art.
Algorithmic cooling Algorithmic cooling can be discussed using classical and quantum thermodynamics points of view.
Algorithmic logic The following diagram helps to locate algorithmic logic among other logics.
Algorithmic composition Algorithmic composition is the technique of using algorithms to create music.
Algorithmic Lovász local lemma In theoretical computer science, the algorithmic Lovász local lemma gives an algorithmic way of constructing objects that obey a system of constraints with limited dependence.
Algorithmic Traders Association The Algorithmic Traders Association is a professional organization and resource center for the discussion of algorithmic trading strategy, methods, software, and technical analysis.
Algorithmic trading A third of all European Union and United States stock trades in 2006 were driven by automatic programs, or algorithms. As of 2009, studies suggested HFT firms accounted for 60-73% of all US equity trading volume, with that number falling to approximately 50% in 2012. In 2006, at the London Stock Exchange, over 40% of all orders were entered by algorithmic traders, with 60% predicted for 2007. American markets and European markets generally have a higher proportion of algorithmic trades than other markets, and estimates for 2008 range as high as an 80% proportion in some markets. Foreign exchange markets also have active algorithmic trading (about 25% of orders in 2006). Futures markets are considered fairly easy to integrate into algorithmic trading, with about 20% of options volume expected to be computer-generated by 2010. Bond markets are moving toward more access to algorithmic traders.
Algorithmic skeleton In computing, algorithmic skeletons (a.k.a. Parallelism Patterns) are a high-level parallel programming model for parallel and distributed computing.