Am I understanding this correctly that dynamic programming == breaking a problem into smaller (reoccurring) sub-problems and using caching to improve performance?
It’s slightly more nuanced than that, but you’ve got the basic idea.
That is conceptually how dynamic programming works, but in practice the way you build the cache is from the bottom up rather than from the top down. It’s a bit like how you can implement computation of the Fibonacci sequence in a top-down manner using a recursive function with caching, but it is a lot more efficient to instead build it in a bottom-up manner.
The caching is kind of mandatory as the sub-problems interact.
“Daemon”, for a process that is detached from your terminal
That’s factually incorrect. Daemons are often spawned from “early” processes whose ancestors are not TTYs.
No, seriously. Article probably means background processes. Maybe aplies to session-daemons or user-daemons. Other daemons (udev, logrotate) were started long before there was any shell.
“Cascading Style Sheets”, just to mean that properties can be overridden
This one is really wrong too. But I think his overall point is made clear by other examples. Nomenclature tends toward jargon in software culture.
But that’s true in any field.
The only application I can still remember is the backpack problem