Does it have to be something where the progress is easily quantifiable, or merely very easily observed? Learning to program is something that has an extremely long tail of improvement, but the first part goes very quickly. It may not be easy to quantify your progress—rough metrics like “lines of code to solve this problem” or “the amount of computer time / memory needed by this program” do exist, but they are at best only approximations of skill—but if you look back at code you wrote even a month ago (I’m assuming a not-too-strenuous instructional course, here) you’ll be shocked by how quickly you improve. If you already know how to code, the same effect (and much of the same benefit) can be obtained by branching out into a really new language, ideally with a totally different coding paradigm; if you know C++, Java, and Python, try learning a functional language like Haskell of F#. If you’ve never worked “close to the metal”, try picking up C and then C++. If you’ve only ever written application code, learn some scripting language(s) and write little tools to do things you currently do with a GUI file manager / config file editor / registry editor.
Always keep track of what you’ve written before (if you’re doing this as part of a course, old assignments will suffice) and then go back later and write it again “correctly” using your current knowledge. It’s entirely possibly you’ll see obvious improvements week over week. Heck, when I’m learning a new language if I write 200 lines of code in it without going back and editing more than strictly necessary, the bottom half will be visibly better than the top.
Does it have to be something where the progress is easily quantifiable, or merely very easily observed? Learning to program is something that has an extremely long tail of improvement, but the first part goes very quickly. It may not be easy to quantify your progress—rough metrics like “lines of code to solve this problem” or “the amount of computer time / memory needed by this program” do exist, but they are at best only approximations of skill—but if you look back at code you wrote even a month ago (I’m assuming a not-too-strenuous instructional course, here) you’ll be shocked by how quickly you improve. If you already know how to code, the same effect (and much of the same benefit) can be obtained by branching out into a really new language, ideally with a totally different coding paradigm; if you know C++, Java, and Python, try learning a functional language like Haskell of F#. If you’ve never worked “close to the metal”, try picking up C and then C++. If you’ve only ever written application code, learn some scripting language(s) and write little tools to do things you currently do with a GUI file manager / config file editor / registry editor.
Always keep track of what you’ve written before (if you’re doing this as part of a course, old assignments will suffice) and then go back later and write it again “correctly” using your current knowledge. It’s entirely possibly you’ll see obvious improvements week over week. Heck, when I’m learning a new language if I write 200 lines of code in it without going back and editing more than strictly necessary, the bottom half will be visibly better than the top.