Of course it's arguable whether such a post belongs here, but a bunch of other introductory ones have been popular here before.
I haven't taken that Coursera course, but in college, I believe only calc I and II are the prereqs for intro to data structures and algorithms. Though I know solid engineers who understand applied CS who don't have a good grasp of math at all.
Me in freshman calculus: Why are we learning these Taylor series? It's so boring, and I'll never need to use it
Me three years later in upper-division meteorology: It turns out 90% of what we do is numerical methods because fluid dynamics is hard with limited data.
It's definitely easier for me to learn things when I have an application for it.
https://www.youtube.com/watch?v=0M_kIqhwbFo
I hate all algorithms courses except this one, really made me fall in love with algorithms and data structures .
If you want to go deeper, this is the next one on the topic
They are sorted. Normal hash tables are unsorted, sorting needs lot of time and space. Nobody but python would do that. (ignoring PHP here). But once you went down this path, users start relying on this quirks and you cannot get away from that.
They feature special values for ints. 1 hashes to 1, 4 to 4 and so on. This looks like Lua arrays, which are either arrays or hashtables under the hood, and allows efficient switches from dense to sparse arrays. But mostly it costs time in the most critical fast path. And it doesn't help in security at all.
They are insecure by default. Only with some special cmdline flag they feature a randomized seed. Which is still insecure because the seed can be easily exposed by reading the memory of the seed.
They are extremely slow.
They are using siphash. Everybody using siphash is immediately exposed as having no idea about hash table security.
They most definitely aren't sorted. It's not a quirk either. Python dicts are essentially a tiny hashtable of pointers into an array of objects. For iteration, that array is traversed directly. That's where the insertion-order preservation comes from. It's cheap. It doesn't involve sorting.
> They are insecure by default. Only with some special cmdline flag they feature a randomized seed.
Hashes are randomized since Python 3.2 or so.
> Which is still insecure because the seed can be easily exposed by reading the memory of the seed.
Obviously.
> They feature special values for ints. 1 hashes to 1, 4 to 4 and do on.
That's a quirk of the hash function (which is a reduction modulo a prime), not the hashtable.
> Everybody using siphash is immediately exposed as having no idea about hash table security.
Well...
No, they are insertion-ordered.
> Nobody but python would do that.
Ruby Hashes are insertion-ordered; JavaScript objects have numeric properties ordered numerically (so, in a sense, are sorted), but other propertied in insertion order.