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 art, music, literature,
- in science,
- in politics,
- in religion,
- in military,
- in business, 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.
- The idea is that this could be embedded into a math / CS curriculum while those topics are being taught; giving much clearer understanding.
So... here we go!
- 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
-
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.