We got the first programming assignment for the APCS Principles MOOC I am taking. Here it is:
You will develop one program using Snap!. Your program must address the following requirements:
- Include the basic programming elements of Snap! For example, programs should demonstrate appropriate use of numbers, text, variables, statements, mathematical expressions with arithmetic operators, logical and Boolean operators and expressions, and lists. Your program must have at least 5 if or if/else statements and at least 3 loops.
- Demonstrate the creation of abstractions to develop and manage the complexity of the program; your program must have three blocks that you create. You must have at least one Reporter and one Predicate. At least two of the blocks must also have parameters.
- Describe the creative process and the use of algorithms as building blocks of the program.
- Include comments that help the reader better understand your code
I was sitting there thinking why is this assignment so confusing and difficult to me. Then it hit me, it is backwards. I usually have a task I want to do, a game idea or an assignment program I have dreamed up or some program from a book. This assignment wants 5 ifs, 3 loops and so on. It is just weird building from that direction. When given a task or assignment to program I can just go through the planning and design steps and away she goes. With this assignment I have to dream something up that fits the criteria. I have a problem when I dream something up. Typically when I dream something up from Good Idea Fairy Land part way through I reach an “OMG, what have I done to myself?!” stage. So several years ago I decided the Good Idea Fairy was a bad spirit. This assignment requires I wake the Good Idea Fairy. This is a bad thing.
I can understand the idea of this backward approach, it really kills the chance of plagiarism, but it sure is awkward. Not only do I have to design and code, but I have to think of something to design! Not my strong point. Coming up with ideas is not a problem, I have lots of those. Coming up with an idea that I can do with Snap! in the time allotted and that does not turn into a can of worms because I did not have the time to tinker with it is a problem. I have had Good Ideas before and usually discover I have bit off more that I can really want to chew. Oh well, no matter what it is bound to be fun and a new learning experience.