DEV Community

Arlene Andrews
Arlene Andrews

Posted on • Originally published at distort-roving.blogspot.com on

100 Days Of Code: Retrospective on CS50, 2016 - 2018 Mario


Image from https://www.brilliant-books.net/sites/brilliant-books.net/files/puzzles.jpg

I started the edX CS50 class (taught at Yale and Harvard in person) near Christmas in 2016. I thought, given that it was a introductory course, there would be a few issues with the problems, but that I could figure it out on my own, and get it completed. I did it with a Microsoft class, therefore this should be the same. I was so wrong!

The first few classes taught me that not everything covered in the problem set was covered in the class, and some of the places I got stuck were mentioned in passing, or so it seemed. Which, learning in near-isolation at that point, wasn't helpful in the least. At this point, I was not 'out there' in the social media for the class, nor - when I did join - did I appreciate my feed going from 20 messages a day to 500. So that was out - I figured I'd fight through this on my own.

The best thing about the first few lessons? Having the online IDE (Cloud9, for those of you who are curious), and its set of debugging tools, and the helpful adjustments they had made to make it easy to understand. The worst was trying to move from BASIC: I had to learn that the statements that the VIC-20 computer would take, and translate them to C.

Break - no - I quit!

A few of the problems weren't an issue, but as the weeks went on, I found myself taking three weeks to do the problem sets. I was running into issues that didn't seem to even come into consideration in either the lectures, nor the walk-through. Having no one to ask that would explain, with patience, where I was going wrong made me less and less willing to work on them. And the times I went to the class question areas, I looked in vain for someone else that had that issue - was I the only one that didn't have this working?

I was thankful, mostly, when the submission process moved to GitHub (since this is such a huge part of many workflows), but stopped submitting my responses, due to their anti-plagiarism statements: if you have over a thousand students in person taking a class each year, plus an unknown number of online students, you can't expect a unique solution from each and every one of them - more so if you are going to compare over multiple years.

So, I stopped doing them. Other than a nagging feeling of "I should finish," I was fine with this.

I started another course (for a later post), and due to reading an article about podcasts, found an outstanding community in a Slack channel. (lady-leet on GitHub has a list of community Slack channels, if you want to explore - or start one! - in your area) that not only welcomed me, but was willing to answer questions, both by those that had survived the course, but those that were using the language currently.

This answered so many questions! And created its own issue - why were some of the concepts that they talked about not even mentioned in a introductory class?

After wrestling with this, and seeing the same issues in other classes on topics other than C, I decided that it isn't the fault of the class - but I was going to work on it again, in 2017. I went to fetch the code I had written before, and they asked if I planned on finishing the class. Okay, okay. I'll finish it.

So, a new GitHub repository with the publicly-accessible problems I'd already done, and foregoing, for right now, the rest of the C lessons - I was ready to restart.

The first lecture back was on Python, and this was at least somewhat familiar to me. I had done a few, small Python exercises, so the language wasn't totally unfamiliar to me. Looking at the problems, and the examples in the lecture gave me that old, welcome feeling of "I can do this!"

Which lasted about 10 minutes into the first problem. The problem was to take a number between 1 and 23, and build a reverse pyramid, a la Mario. I had several hours of attempts at this in the week leading up to starting the 100 Days, and was ready to give up and go back to fast food.

One of the first things I was told, "Comment every step you need to do." Thank you, everyone who told me this. Making sure that I had thought through this, in the language 'flow', saved my sanity.

Then was told, by many, to make sure I had working code before trying to make it perfect. I still struggle with this - time being at a premium, I want to get it done and working, and still be refined. This isn't possible right now, and I have a sticky note to remind me of this on my monitor.

(and slightly worried - this is the longest quiet spell in the house in weeks)

The Sweet Taste of Success

So, with these two tools in hand, I went back to Mario. I got it kind of working - it would print out the correct number of hash signs, but separated by an odd hash, and no spaces. ARGH! I tried to fix it - I'd put up with the counts being shown in the print, if it would just work! they could be removed easily - but no luck.

Okay, can I get it to print a left-justified pyramid?

A couple attempts at this, and broke it completely - nothing printed.

Finally gave up, and asked on Slack. Two of the wonderful folk there jumped in, and looked at the code. I had specifically asked why it wasn't printing: they were generous enough to answer only that part of it. Okay - try suggestions..I have print! I'm back to where I was!!

This actually felt like a win.

One of the members of the Slack is in a different time zone than I, so we talked a bit while he was awake. I got reminded that this is learning - not being sent out for public consumption. Thomas gave me several suggestions, and I promised I would work on it the next day, and share results.

I had no idea if the program was printing the space after the has symbols, so I changed that to something I could see. This may have been the magic item - I was able to see that it wasn't - no wonder things weren't working! Okay, I now had both Tom (my wonderful mentor) and Thomas to make sure I got this done. I got pseduo-code and ideas from both of them, each on a different section, and tried again.

Okay, this is closer - I have spaces and hashes at the same count each line. And a few moments later, had it working. Save it! Then go back, and remove the symbol for the space, so it looks 'right'.

Thanks to having people that were willing to give me concepts in small doses (even if it felt to me like I had to be spoon-fed them), I finally made it, and was off to the next challenge: two cipher programs.

Discussion (0)