What's most interesting about this question is how easy it is to get the space complexity wrong TWICE in two different directions. Even popular videos on this problem make this mistake.
https://t.co/7Aj4rNpbmt
What @Jonathan_Blow describes is precisely the focus of my teaching. It is also by far the hardest and most frustrating part of my work. It truly is the last frontier of programming education. Technical competence is nothing in comparison. I tried to describe the same phenomenon in my essay, "A Brief History of Watch and Code". What makes it frustrating is how few people even think it's a problem. It may be a case where only those that understand the problem can see it.
https://t.co/WoZVUBdQHh
From the last section:
"The systems I had built were extremely effective at helping students develop technical competence, but there was one final piece, design. You can think of it as taste, judgment, or something else. I still don't know exactly what I should call it.
You have two programs, they are both correct. One is pleasing and simple, but the other is ugly and gives you a headache. This is what I mean by design. It turns out, good design, at least the type I'm describing, is chiefly a symptom of clear thinking. The headaches are a symptom of muddled thinking."
This problem is interesting because even though it's labeled "easy", if you don't have the right mental habits, the performant approach is completely invisible.
https://t.co/XlDBiDhSfl
Contains Duplicate (detailed intuition and analysis for every approach): https://t.co/qNvOiRkfkw
Towards the end, there's also a design discussion (about one of those “one-liner” solutions).
Watch @gordon_zhu cut through an easy question. Straightforward problems are great for isolating process issues because there's no excuse not to get things absolutely perfect. Try it first and then compare your approach to his.
https://t.co/2Jd8Sa8ieP
With recent layoffs and hiring freezes, frustration is boiling when it comes to interviews. A lot of it is warranted, but it can quickly veer into unproductive territory. @gordon_zhu addresses the most common frustrations in this video.
https://t.co/UDQWRLI0od
Big issue w/ full-time coding bootcamps: 3 mo is followed by a 12+ mo job search (if lucky) that creates a large gap that has to be explained.
Companies become concerned & think, "there's likely a reason this person isn't having any luck", so the problem keeps getting worse.
I need to write in more depth about @gordon_zhu's Watch and Code curriculum at some point.
In the meantime, here's his video on Javascript's notorious 'this' keyword (and the last video you'll likely need on the subject).
He's a phenomenal educator!
https://t.co/yCtggdD79G
Monthly Update: Free workshops, past workshops on databases and proofs, and changing the way we teach memory. Check out full article for all the details 👇.
https://t.co/cZyQGFYofs
@ramirodotme@sabrinaesaquino@ramirodotme Not sure this kind of contrived gotcha is worth spending time on. This is not what makes programming hard/interesting.
A big part of our work is actually directing people away from this sort of trivia towards what's actually important.
From a conversation this morning:
"To be merely competent, you have to stay with something until you understand it. To go beyond that, you have to stay far longer, until all the newness and excitement has worn off."
@ramirodotme Specific changes with the data types section:
* New lessons show a foolproof, repeatable diagramming process for understanding memory.
* We wrote new quizzes to force students to master and apply these basic ideas.
@ramirodotme Another note on quizzes:
Students should *strive* to pass w/ 1 attempt. More than that shows a serious breakdown in understanding and/or process.
Process issues could be “sloppiness/carelessness”, but this often masks deeper issues around understanding. So important to avoid.