Module Overview
Practical Challenges
Every exercises lesson so far has come right after the concept it tests, so you always knew which tool to reach for. This module is different: a set of standalone problems that don’t tell you which technique to use. That’s on purpose. Deciding for yourself is the actual skill this module builds.
Why This Matters
Once you leave a course, problems don’t arrive labeled “use a for loop here” or “this needs recursion.” They just arrive. The fastest way to get comfortable with that is to practice it deliberately, on problems small enough to fully solve in one sitting, before the next course raises the difficulty again.
How to Approach a Challenge
- Read the problem twice before writing any code. Restate it in your own words.
- Work through the example input by hand first. If you can’t trace it on paper, you’re not ready to code it yet.
- Get a working version before trying to make it elegant.
- Check your output against the example exactly, not just “looks about right.”
- If you’re stuck for more than a few minutes, read the hint. That’s what it’s there for.
What You’ll Practice
- Warm-up challenges: single-concept problems to get comfortable with this module’s format
- Intermediate challenges: problems that need two or three techniques working together
- Advanced challenges: problems that combine classes, closures, recursion, and error handling in one program
- A larger bank of challenges: reimplementing familiar built-in string, array, and object methods from scratch, a set of trickier array and object puzzles, and finally a set of challenges built around bigger, more realistic data shapes: arrays of objects, nested arrays, and comparing two objects against each other
Outcome
By the end of this module, and this course, you’ll have practiced applying what you know to problems you haven’t seen worked through first, which is the actual job, not just recognizing syntax.
Let’s begin.