151-9904-00L Applied Compositional Thinking for Engineers
|Semester||Spring Semester 2021|
|Lecturers||E. Frazzoli, A. Censi, J. Lorand|
|Periodicity||yearly recurring course|
|Language of instruction||English|
|Abstract||This course is an introduction to applied category theory specifically targeted at persons with an engineering background. We focus on the benefits of applied category theory for thinking explicitly about abstraction and compositionality. The course will favor a computational/constructive approach, with concrete exercises in the Python.|
|Objective||In many domains of engineering it would be beneficial to think explicitly about abstraction and compositionality, to improve both the understanding of the problem and the design of the solution. However, the problem is that the type of math which could be useful to engineers is not traditionally taught.|
Applied category theory could help a lot, but it is quite unreachable by the average engineer. Recently many good options appeared for learning applied category theory; but none satisfy the two properties of 1) being approachable; and 2) highlighting how applied category theory can be used to formalize and solve concrete problems of interest to engineers.
This course will fill this gap. This course's goal is not to teach category theory for the sake of it. Rather, we want to teach the "compositionality way of thinking" to engineers; category theory will be just the means towards it. This implies that the presentation of materials sometimes diverges from the usual way to teach category theory; and some common concepts might be de-emphasized in favor of more obscure concepts that are more useful to an engineer.
The course will favor a computational/constructive approach: each concept is accompanied by concrete exercises in the programming language Python.
Throughout the course, we will discuss many examples related to autonomous robotics, because it is at the intersection of many branches of engineering: we can talk about hardware (sensing, actuation, communication) and software (perception, planning, learning, control) and their composition.
|Content||## Intended learning outcomes|
# Algebraic structures
The student is able to recognize algebraic structure for a familiar engineering domain. In particular we will recall
the following structures: monoid, groups, posets, monoidal posets, graphs.
The student is able to translate such algebraic structure in a concrete implementation using the Python language for the purpose of solving a computational problem.
# Categories and morphisms
The student is able to recognize categorical structure for a familiar engineering domain, understand the notion of object, morphism, homsets, and the properties of associativity and unitality.
The student is able to quickly spot non-categories (formalizations in which one of the axioms fails, possibly in a subtle way) and is informed that there exist possible generalizations (not studied in the course).
The student is able to translate a categorical structure into a concrete implementation using the Python language.
The student is able to recognize the categorical structure in the basic algebraic structures previously considered.
The student is able to use string diagrams to represent morphisms; and to write a Python program to draw such a representation.
# Products, coproducts, universality
# Recognizing and using additional structure
The student is able to spot the presence of the following structures: Monoidal structure, Feedback structure (Trace),
Locally posetal/lattice structure , Dagger/involutive structure.
# Functorial structure.
The student is able to recognize functorial structures in a familiar engineering domain.
The student can understand when there is a functorial structure between instances of a problem and solutions of the problem, and use such structure to write programs that use these compositionality structures to achieve either more elegance or efficiency (or both).
# The ladder of abstractions
The student is able to think about scenarios in which one can climb the ladder of abstractions. For example, the morphisms in a category can be considered objects in another category.
# Compact closed structure.
The student knows co-design theory (boolean profunctors + extensions) and how to use it to formalize design problems in their area of expertise.
The student knows how to use the basics of the MCPD language and use it to solve co-design problems.
# Rosetta stone
The student understands explicitly the connection between logic and category theory and can translate concepts back and forth.
The student understands explicitly the constructive nature of the presentation of category theory given so far.
The student is able to understand what is an "equational theory" and how to use it concretely.
The student understands the notion of substructural logics; the notion of polycategories; and linear logic. Mention of *-autonomous categories.
The student can translate the above in an implementation.
# Monadic structure
The student is able to recognize a monadic structure in the problem.
# Operads and operad-like structures.
|Lecture notes||Slides and notes will be provided.|
|Literature||B. Fong, D.I. Spivak, Seven Sketches in Compositionality: An Invitation to Applied Category Theory (https://arxiv.org/pdf/1803.05316)|
A. Censi, D. I. Spivak, J. Tan, G. Zardini, Mathematical Foundations of Engineering Co-Design (Own manuscript, to be published)
|Prerequisites / Notice||Algebra: at the level of a bachelor’s degree in engineering.|
Analysis: ODEs, dynamical systems.
Familiarity with basic physics, electrical engineering, mechanical engineering, mechatronics concepts (at the level of bachelor's degree in engineering).
Basics of Python programming.