For the spring break I felt I had time to sort out my thoughts more, think about my plans for the distant future. At the same time I could find what interested me. I've had thoughts of becoming a creator in broad terms, where at first I wrote my own stories. Then I wanted to make my own interactive media like video games or something else through programming. I decided to again start an online course on computer science called cs50, a relatively popular course.
I had previously taken the course all the way back in January of this year but I quickly lost motivation. I only had begun looking into problem set 0, and did not complete it before looking no further.
I then started cs50 again and completed problem set 0 in a single night which was relatively basic. All that was needed was to create a game through Scratch, a programming puzzle based language based off of the way preschool kids learn. The developing felt strikingly similar to the StarCraft 1 map editor which I had some experience with so the game wasn't hard to make.
Here is the link to the little game I made: scratch.mit.edu
I felt a new energy to complete the course but was quickly deterred by the workload from the next problem set and large jump in difficulty. I felt overwhelmed and did not go through the process of stretching out the problem set along the week or even a longer period of time as I should have. 2 and a half months later when spring vacation came, I took the opportunity to resume the course.
I took notes on all of the instructional videos on terms like loops, functions, variables, compilers, and more. The actual problem set was far more difficult than the last. The first part of the problem set posed was to create a half pyramid of a certain height in blocks following the same pattern of the half pyramid as seen in the end of the first Mario game:
The code had to take in user input for whatever height the user wanted the pyramid to be. Instead of blocks, hashes (#) would be used. All the blocks had to be aligned on the right hand side, and the top row had to have two blocks. To summarize the approach, one had to print out a specific number of spaces, then blocks, and finally, set a new line for the next row of blocks.
I spent several hours thinking about the problem and I understood I had to solve it through an acutely mathematical approach. As time wore on though and I spent many hours over three days brooding over the problem I suffered headaches and loss of sleep trying to solve the problem. At some point my mind was too confused to think properly so I started plugging in random things hoping they would work.
Then I went online to find help. At first I tried to find something that could allow me to print a character, in my case, the # character, a certain amount of times according to an integer. The idea quickly flew by me though. When I went to the cs50 community I found the support I needed. I could relate to other people's experiences in how much of a leap problem set 1 was and how difficult the mario problem was. + Show Spoiler +
I had a similar idea but I didn't have any confidence in it but with the new found information I felt self-assured.
Spoiler if you're taking cs50+ Show Spoiler +
In searching for help I came across the term nested loops, which intuitively I understood right away meant putting loops within a loop.
With a bit of hard work I managed to work through the patterns and incorporate them into my loops and voila, the mario problem had been solved. Truly an arduous task, I don't think I've ever been put through so much mental strain. I'm glad I was given such an academic challenge I haven't experienced in possibly my whole life fraught with so much desire to solve the problem.
With the ending of the mario problem came the next problem of finding the lowest number of coins to pay for change in a greedy algorithm. For example, to pay for 41 cents one would need using the fewest number of coins 1 quarter, 1 dime, 1 nickel, and 1 penny, totaling 4 coins. I understood right away what I needed to do while reading the problem set and finished the bulk of it under an hour with some trouble shooting of getting things to work in the code.
Engaging and fun, the use of applied mathematics has never felt more challenging. I feel closer to achieving my goals with the knowledge that cs50 has offered in becoming the creator I've dreamed of.