Live data from Hacker News

The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction

justinmath.com

51–60 of 74 posts

Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction

#51
post #8

This is presumably about math problems, but I always approach programming problems this way. One issue I have with math problems is that sometimes I wish I could immediately go down one level of abstraction and see something like a physics or programming problem that applies that specific or related problem I'm working on. I haven't found a resource like this yet.

have you tried Rosetta Code? https://rosettacode.org/wiki/Rosetta_Code Not a guide, per se, but it has many implementations of a wide variety of math and programming concepts, implemented in a large number of different programming languages.

This is cool. It's pretty close to what I meant, but each task is completely siloed without any meta information, so it's good if you wanted to look for something very specific but not good if you are thinking about or exploring a problem space.... For example, on the page for factorial it might be nice if they linked to other kinds of combinatorial problems.

Although I bet that ChatGPT might already know a lot of this kind of thing. I haven't had the chance to use LLMs in this specific context yet.

Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction

#52
post #36

> What a lot of math learners fail to understand is that grinding through concrete examples imbues you with intuition that you will not get if you jump directly to studying the most abstract ideas. I feel that's more a lesson for a lot of math teachers to understand. I remember some frustrating linear algebra, calculus and computational complexity courses where the lector basically threw some formulas onto the blackb…

Adding, not disagreeing, but at some point, those abstract concepts like dot products become concrete on their own when you get into things like SIMD programming.

Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction

#53
post #36

> What a lot of math learners fail to understand is that grinding through concrete examples imbues you with intuition that you will not get if you jump directly to studying the most abstract ideas. I feel that's more a lesson for a lot of math teachers to understand. I remember some frustrating linear algebra, calculus and computational complexity courses where the lector basically threw some formulas onto the blackb…

Adding, not disagreeing, but at some point, those abstract concepts like dot products become concrete on their own when you get into things like SIMD programming.

Yeah, but to arrive at that point, you'd have to have understood dot products already.

It's one thing to take two float arrays, multiply them componentwise and sum the results. It's another thing to understand why this operation constitutes the dot product in R^n vector spaces.

Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction

#55
post #36

> What a lot of math learners fail to understand is that grinding through concrete examples imbues you with intuition that you will not get if you jump directly to studying the most abstract ideas. I feel that's more a lesson for a lot of math teachers to understand. I remember some frustrating linear algebra, calculus and computational complexity courses where the lector basically threw some formulas onto the blackb…

> > What a lot of math learners fail to understand is that grinding through concrete examples imbues you with intuition that you will not get if you jump directly to studying the most abstract ideas.

> I feel that's more a lesson for a lot of math teachers to understand.

That's certainly true, but the teachers who teach that way were probably once students who tried to learn that way (I was one on both counts, though I got better), and it'll be better for them as teachers if they learn the lesson as students.

Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction

#56
post #54

With history classes in high school I wish they bumped up the abstraction level a little sooner. All those dates and names of important figures, almost completely useless information imho.

> All those dates and names of important figures, almost completely useless information imho.

As someone with an amateur's interest in history, I suspect that it's useless in the same way that learning words from a dictionary, or memorising multiplication tables, is useless. Learning words from a dictionary gives you no facility with a language, but you can't build much facility with a language if you don't know its words. Similarly, multiplication tables are useless for doing mathematics, but I think that it is good, both for the practice of math and in the real world, to have some basic number sense. (This is perhaps more contentious. My opinion is certainly shaped by the fact that I was among probably one of the last generations to be taught this skill, and am glad that I have it, but don't really know what it's like to grow up in a world where the skill is regarded as completely irrelevant.)

That's not to say that history classes don't lean too much on the names-and-dates approach. After all, it's easier for the teacher, both for preparing lessons and for evaluations—it's a lot easier to decide unambiguously whether a student has a date correct than if, say, that student has correctly understood the historical significance of some important event.

Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction

#57
post #3

That's the same principle which makes it wise to first do some copy pasting before you abstract stuff into a common library. Gathering some (more than two) concrete use cases before you factor out the common functionality makes much better library functions. A common sign of prematurely deduplicated code is a common function with lots of boolean flags and other knobs to tweak its behaviour for every use case added af…

The ideal heuristic is to only deduplicate towards more orthogonality.

Suppose you started from first principles and navigated down the ontology tree taking one of the shortest paths (well, shortest-ish since it's a hard problem that'll burn up too much time otherwise.) Would you encounter your deduplicated function on the way? If not, it's making it worse.

Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction

#58
post #35

Earlier quoted context omitted.

I blame bootcamp culture driven between 2010 and 2020. Students learning DRY on day 1 and then applying it to the max before intuitively understanding the problems DRY solves. I encounter people trying to establish standards and abstract patterns on the first pass of code...

Sports are good at distinguishing drills from practice. Practice is meant to look almost like real play. Drills are something you do so practice goes better, and to narrow your window of harm in practice. I put, for instance, TDD in the drills category. I don’t think you should live in TDD. nor do I think you should avoid TDD because someone said they thought it wasn’t a viable lifestyle choice. You should do it for…

DRY... Don't Repeat Yourself

DAMP... Do Always More Pasting

Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction

#59
post #4

Ironically, this post would benefit from showing some examples.

100%. And why is it so hard to have math education based on good concrete contextualized examples, vs just rules and problem sets? Understanding the “why” behind the math is often lacking… and math doesn’t always need to be applied, that’s ok— but if it can be, it is so much easier to understand

Because math is the tool while physics and engineering are the application.

So, now instead of one concept you have two unfamiliar concepts--one of which is far removed from your pedagogy.

It sucks, but there just aren't that many straightforward applications of abstract math classes.

Re: The Need to Grind Concrete Examples Before Jumping Up a Level of Abstraction

#60
post #58
post #35

Earlier quoted context omitted.

Sports are good at distinguishing drills from practice. Practice is meant to look almost like real play. Drills are something you do so practice goes better, and to narrow your window of harm in practice. I put, for instance, TDD in the drills category. I don’t think you should live in TDD. nor do I think you should avoid TDD because someone said they thought it wasn’t a viable lifestyle choice. You should do it for…

DRY... Don't Repeat Yourself DAMP... Do Always More Pasting

Hah!

Descriptive And Meaningful Prose

Just have your test say what it does. Don’t play code gold and get clever. Tests for different features should be able to die separately. No coupling.

Post reply on HN