Welcome to the world of abstract nonsense!
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.
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)
I don't accept the general / genetic explanation that "they're just not smart enough."
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."
The journey went like this:
- Students taking programming language theory, especially parts that are rich in recursive thinking, struggled.
- First I falsely diagnosed the issue to be recursion and suggested studying it earlier.
- That didn't help much.
- I noticed the issue goes beyond recursion, and is more about having a poor mathematical background in general.
- I suggested taking Mathematics for Computer Science earlier.
- Some students could not make it past even Chapter 1, section 1 of Math for CS.
- I suggested a much gentler, easier resource (Susanna Epp's book).
- Students still struggled with that.
Students are told to "go get some maturity and intuition" but
- it's not clear what they are,
- nobody explains exactly how to get them.
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 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, Book of proof, The Little Prover or The heart of mathematics. 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.
The belief (and hope) is that math / CS "teaches you how to think." True, maybe? 🤔 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?
According to a Stanford prof, the most important thing is problem decomposition, and nobody teaches it:
(He is also dealing with the questions "is it innate?" and "can it be taught?")
Some students tend to agree:
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...
- 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.
- There are similarities to the scientific method:
- This is not about abstract thinking in the broadest sense:
- 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:
- Humans are pattern recognition machines.
- So much so, that we see patterns even where there are none.
- Patterns can be found in anything: syntax, semantics, structures, problems, solutions, domains...
Link to the Physical world section
Link to the visual thinking section
-
Our brains
- take subconscious shortcuts,
- pick up on implicit things, and
- make invisible connections.
-
Connection to wishful thinking (see problem solving).
Link to the Implicit and Explicit knowledge section
- Assumptions and background knowledge are
- unavoidable,
- necessary and
- always present everywhere.
Link to the Metacognition section
- Being aware of one's own thought processes, taking control of it.
Link to the Meta-knowledge section
- 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:
Link to the Symbolic thinking section
- Ubiquitous for humans (language, writing, numbers etc.)
- Symbols = syntax = formal = mechanical = unintuitive
Link to the Semantic thinking section
- We have patterns / models in our brains through the physical world 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".
Link to the Critical thinking section
- It boils down to: NEGATION!
- Fruitful interaction with axiomatic thinking: negate the axioms!
- Power of negation: Non-Euclidean geometry
- 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 and axiomatic thinking
- Deductive,
- Inductive,
- Abductive, and
- Fuzzy reasoning
Link to the Axiomatic thinking section
- 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
Link to the Structures section
- Realizing the semantics, capturing semantics in a concrete way
- Connections to modeling and axiomatic thinking
- Many types of structures:
- algebraic,
- topological,
- relational,
- logical,
- order
- Combined, rich, complex structures:
- analytical,
- geometric,
- ergodic / stochastic
- Connection to systems thinking
Link to the Temporal thinking section
- chronological, state-based and event-based
- discrete vs. continuous
- static vs. dynamic
- mutating state
- connections with timeless, stateless thinking, and rule-based thinking
Link to the Atomic thinking section
- 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).
- Similarities to axiomatic thinking
Link to the Recursive thinking section
- Self-reference and self-similarity (fractals)
- This is found in nature, biology recurs.
- See fractal broccoli picture 🥦
- Notoriously difficult for humans!
- It's "anti-temporal" or "reverse-chronological" thinking,
- but humans are story-oriented creatures.
- Connection with structural thinking:
- self-similar structures (fractals)
Link to the Rule-based Thinking section
- Completely controlled world that:
- obeys rules,
- is built gradually from earlier stages,
- offers strict guarantees (invariants).
- Stratification, predicativity
Link to the Modalities section
- Switching between "thinking styles" (or modes):
- some problems are better conceived / modeled in certain ways than others.
- 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.
- Parts of:
- structural,
- reductionist,
- axiomatic, and
- rule-based thinking.
- A family of models correspond directly to axioms they satisfy.
- Possible worlds and interpretations
- Domain general and domain specific knowledge
Link to the Abstraction section
Link to the Decomposition section
- Strong connections to Domain Modeling and Problem Solving
Link to the Categorical thinking section
Link to the Meta thinking section
- Different fields are deeply connected.
Link to the Deep Connections section
Link to the Problem Solving section
- Basically, Applied Abstract Thinking.
- The essentials of problem solving