Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/spamegg1/abstract-thinking
Abstract thinking patterns and problem decomposition / solving strategies
https://github.com/spamegg1/abstract-thinking
abstraction axiomatic-thinking decomposition meta-learning modalities modeling paradigms patterns problem-solving recursion reification relations semantics structures syntax temporal thinking
Last synced: about 1 month ago
JSON representation
Abstract thinking patterns and problem decomposition / solving strategies
- Host: GitHub
- URL: https://github.com/spamegg1/abstract-thinking
- Owner: spamegg1
- License: cc0-1.0
- Created: 2024-01-01T12:13:22.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-05-18T20:26:13.000Z (6 months ago)
- Last Synced: 2024-05-18T21:29:20.253Z (6 months ago)
- Topics: abstraction, axiomatic-thinking, decomposition, meta-learning, modalities, modeling, paradigms, patterns, problem-solving, recursion, reification, relations, semantics, structures, syntax, temporal, thinking
- Homepage:
- Size: 1.22 MB
- Stars: 12
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Elements of Abstract Thinking
![can-of-worms](images/worms.jpg)
Welcome to the world of ***abstract nonsense!***
## Motivation
![dont-know-1](images/dontKnow1.png)
![dont-know-2](images/dontKnow2.png)
I've been trying to figure out the underlying reasons why many are struggling with mathematics and computer science, *even when they have great resources and they study the subjects.*
### The Usual Suspects
> ***It soon became clear that the unconscious instincts for logic and language which had enabled me to succeed were not shared by the large majority of my students.***
>
> - Susanna Epp (author of [Discrete Mathematics with Applications, 5th edition](https://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp-ebook/dp/B07M87BWRC))![abstract-thinking-1](images/abstractThinking.png)
I don\'t accept the general / genetic explanation that "they're just not smart enough."
![dont-know-3](images/dontKnow3.png)
![dont-know-4](images/dontKnow4.png)
It seems there is something else going on. Even after finishing courses and passing tests / exams, or, *going through the motions*, students say "I don't feel like I've understood it."
### Journey
The journey went like this:
1. Students taking programming language theory, especially parts that are *rich in recursive thinking*, struggled.
2. First I falsely diagnosed the issue to be *recursion* and suggested studying it earlier.
3. That didn't help much.
4. I noticed the issue goes beyond recursion, and is more about having a poor mathematical background in general.
5. I suggested taking Mathematics for Computer Science earlier.
6. Some students could not make it past even Chapter 1, section 1 of Math for CS.
7. I suggested a much gentler, easier resource (Susanna Epp's book).
8. Students still struggled with that.### The ever-elusive *maturity*
Students are told to "go get some [*maturity*](https://en.wikipedia.org/wiki/Mathematical_maturity) and [intuition](https://en.wikipedia.org/wiki/Logical_intuition)" but
1. it's not clear *what they are*,
2. nobody explains exactly *how to get them*.### The usual advice
The general advice is to "keep doing it and eventually you'll start getting it", also known as *learning by osmosis*. Unfortunately I've seen examples where some students didn't get it even after 1-2 years of practice. The [research says](https://maa.org/node/789691) that *"...experience alone is a poor teacher. Many learners don't know the quality of their comprehension..."*
Another common advice is to take Calculus first, to gain enough maturity for Discrete math and proofs. I've seen students who successfully completed 3 Calculus courses and then fail at even the most basic problems in Discrete Mathematics after months of study. (Once again, these students are not stupid, or lazy.)
The rare advice is to seek help from books such as [How to solve it](https://www.amazon.com/How-Solve-Mathematical-Princeton-Science-dp-069111966X/dp/069111966X/), [Book of proof](https://www.people.vcu.edu/~rhammack/BookOfProof/), [The Little Prover](https://mitpress.mit.edu/9780262527958/the-little-prover/) or [The heart of mathematics](https://www.amazon.com/Heart-Mathematics-Invitation-Effective-Thinking/dp/1118156595). This is good advice, and sometimes works, but some of these resources either assume a decent mathematical background and maturity already, or are too verbose / poorly translated, or too difficult for starters.
### Insights
The belief (and hope) is that math / CS "teaches you how to think." True, maybe? :thinking: But they require you to know how to think *a little*. What if you don't know how to think *at all ?* So we got a *recursive knowledge scaffolding* problem.
The issue is that math / CS subjects do not (usually) make abstract thinking *explicit*. Instead this thinking is *implicit* and "baked into" the subjects in subtle ways. They cover the "surface content" of the topics in an explicit fashion.
But unlike what the general advice says, the deeper, implicit thinking patterns go unnoticed by many students even after hundreds of hours of practice, instead of "automatically and subconsciously being picked up by your brain".
There does not seem to be any clear reason or pattern. Should we believe the "unconscious instinct" explanation and admit defeat?
### Not taught in school
According to [a Stanford prof](https://www.youtube.com/watch?v=LtRWu9DErgU), the most important thing is problem decomposition, and ***nobody teaches it:***
![problem-decomposition](images/notTaught.png)
(He is also dealing with the questions "is it innate?" and ["can it be taught?"](https://www.youtube.com/watch?v=lgZ7Cxt5uIU))
Some students tend to agree:
![cognitive-skills](images/notTaughtInSchool.png)
### :bug: Opening :bug: a :bug: can :bug: of :bug: worms
The culprit seems to be the lack of abstract thinking skills, ***whatever the hell that is!***
Also the lack of problem solving skills, which are deeply connected to abstract thinking (breaking down a problem, modeling it, understanding the problem space, conceptualizing a solution...)
One more major issue, in my opinion, is the lack of metacognitive skills. Students are not aware of their thought processes. Metacognition itself can be abstract.
There is simply no way around this. Abstract thinking *HAS TO BE LEARNED.* And I believe *it can be taught,* even if it's just by making it a bit more explicit and not much else!
***And here we are...***
## What this is
- A loose collection of the common abstract patterns and ways of thinking found everywhere, which
- are *implicit*, *intrinsic* and *invisible*,
- *underlie* all the subjects we study;
- plus metacognitive skills.
- It's ***an extremely rough draft for now***, hopefully it will be fleshed out later, with lots of examples.
- So, there are probably many references to things you don't know.
- This is about ***abstract thinking within the context of mathematics and computer science.***
- There are similarities to the scientific method:
- observations, hypotheses, evidence, testing
- but they are not the focus.## What this is *not*
- This is not about abstract thinking in the [broadest sense](https://en.wikipedia.org/wiki/Abstraction#As_used_in_different_disciplines):
- in science, art, music, literature,
- in politics, religion,
- in military, business,
- in decision making, etc.
- This is not comprehensive, or hierarchical / strictly organized:
- thinking patterns are tied to each other in a messy tangled web,
- it's near impossible to make them hierarchical.
- Hence, "elements."
- This is not a coverage of the Math / CS topics that are mentioned.
- It could be *embedded* into a math / CS curriculum *while* those topics are being taught;
- giving much clearer understanding.***So... here we go!***
***First, the human side of things:***
## Our physical senses and the world
### Pattern recognition
[Link to the Patterns section](./patterns.md)
- Humans are [pattern recognition machines](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4141622/).
- So much so, that [we see patterns even where there are none](https://en.wikipedia.org/wiki/Pareidolia).
- Patterns can be found in anything: [syntax](symbolic.md), [semantics](semantic.md), [structures](structure.md), problems, [solutions](solve.md), [domains](model.md)...### Connections to the physical world
[Link to the Physical world section](physical.md)
### Spatial-visual thinking
[Link to the visual thinking section](visual.md)
## Our subconscious stuff
### Intuition and intuitive thinking
[Link to the Intuition section](intuit.md)
- Our brains
- take subconscious shortcuts,
- pick up on implicit things, and
- make invisible connections.- Connection to wishful thinking (see [problem solving](solve.md)).
### Implicit and Explicit knowledge, Contextual thinking
[Link to the Implicit and Explicit knowledge section](implicit.md)
- Assumptions and background knowledge are
- unavoidable,
- necessary and
- always present everywhere.## The meta stuff in our heads
### Metacognition
[Link to the Metacognition section](metacog.md)
- Being aware of one's own thought processes, taking control of it.
### Meta-knowledge
[Link to the Meta-knowledge section](metaknow.md)
- Knowledge can have a recursive nature. So you can get stuck:
- "I don't know what I don't know", or
- "I can't figure out why I can't figure things out."***Now the more technical side of things:***
## The logical stuff
### Syntax: symbolic thinking and symbol manipulation
[Link to the Symbolic thinking section](symbolic.md)
- Ubiquitous for humans (language, writing, numbers etc.)
- Symbols = syntax = formal = mechanical = unintuitive### Semantics: domains and predicates
[Link to the Semantic thinking section](semantic.md)
- We have patterns / models in our brains through the [physical world](physical.md) and our senses,
- with which we assign meaning / interpretation to things.
- Worlds = semantics = informal = meaningful = intuitive = interpretation
- Humans can never agree on worlds and interpretations,
- keep fighting over which is "right".### Critical Thinking
[Link to the Critical thinking section](critical.md)
- It boils down to: ***NEGATION!***
- Fruitful interaction with [axiomatic thinking](axiom.md): negate the axioms!
- Power of negation: [Non-Euclidean geometry](https://www.youtube.com/watch?v=lFlu60qs7_4)### Reasoning
[Link to the Reasoning section](reason.md)
- Making or removing assumptions
- Very difficult for humans! (Messes up the implicit models in our heads.)
- Modus ponens: the heart of reasoning
- Connections to [rule-based](rulebased.md) and [axiomatic thinking](axiom.md)
- Deductive,
- Inductive,
- Abductive, and
- Fuzzy reasoning### Axiomatic thinking
[Link to the Axiomatic thinking section](axiom.md)
- Realizing the syntax, capturing syntax in a precise way
- Minimal assumptions that are taken for granted as a starting point,
- because they are self-evident
- Similarities to [reductionist / atomic thinking](atomic.md)## Many ways of thinking
### Structural thinking
[Link to the Structures section](structure.md)
- Realizing the [semantics](semantic.md), capturing semantics in a concrete way
- Connections to [modeling](model.md) and [axiomatic thinking](axiom.md)
- Many types of structures:
- algebraic,
- topological,
- relational,
- logical,
- order
- Combined, rich, complex structures:
- analytical,
- geometric,
- ergodic / stochastic
- Connection to [systems thinking](system.md)### Temporal thinking
[Link to the Temporal thinking section](temporal.md)
- chronological, state-based and event-based
- discrete vs. continuous
- static vs. dynamic
- mutating state
- connections with timeless, stateless thinking, and [rule-based thinking](rulebased.md)### Reductionist (atomic) thinking
[Link to the Atomic thinking section](atomic.md)
- Break into smaller parts,
- then even smaller,
- then even smaller than that,
- until the smallest parts are self-evident,
- and keep track of the connections.
- The whole *equals* the sum of the parts.
- This works with wishful thinking (see [problem solving](solve.md)).
- Similarities to [axiomatic thinking](axiom.md)### Recursive thinking
[Link to the Recursive thinking section](recursive.md)
- Self-reference and self-similarity (fractals)
- This is found in nature, biology recurs.
- See fractal broccoli picture :broccoli:
- Notoriously difficult for humans!
- It's "anti-temporal" or "reverse-chronological" thinking,
- but humans are story-oriented creatures.
- Connection with [structural thinking](structure.md):
- self-similar structures (fractals)### Rule-based thinking
[Link to the Rule-based Thinking section](rulebased.md)
- Completely controlled world that:
- obeys rules,
- is built gradually from earlier stages,
- offers strict guarantees (invariants).
- Stratification, predicativity## The many joys of world building
### Modalities
[Link to the Modalities section](modality.md)
- Switching between "thinking styles" (or *modes*):
- some problems are better conceived / modeled in certain ways than others.### Paradigms
[Link to the Paradigms section](paradigm.md)
- Changing the focal point through which the world is viewed and expressed.
- Switching between "expression styles":
- some solutions are better expressed in certain ways than others.### Domain modeling
[Link to the Modeling section](model.md)
- Parts of:
- [structural](structure.md),
- [reductionist](atomic.md),
- [axiomatic](axiom.md), and
- [rule-based](rulebased.md) thinking.
- A family of models correspond directly to axioms they satisfy.
- Possible [worlds and interpretations](semantic.md)
- Domain general and domain specific knowledge### Relations and connections
[Link to the Relations section](relation.md)
## The abstract stuff
### Abstraction
[Link to the Abstraction section](abstract.md)
### Composition and decomposition
[Link to the Decomposition section](decompose.md)
- Strong connections to [Domain Modeling](model.md) and [Problem Solving](solve.md)
### Higher-order and categorical thinking
[Link to the Categorical thinking section](categoric.md)
## The big, complex, combined stuff
### Systems thinking
[Link to the Systems section](system.md)
### Meta-thinking
[Link to the Meta thinking section](meta.md)
### Unified theory of everything
- Different fields are deeply connected.
[Link to the Deep Connections section](unified.md)
## Problem solving
[Link to the Problem Solving section](solve.md)
- Basically, *Applied Abstract Thinking*.
- [The essentials of problem solving](https://www.youtube.com/watch?v=6DxTQiJuAoc)