I started strong this week on KA but then ended pretty poorly. 👎🏼 At the end of my last post I mentioned that I wanted to try and study for 4 hours each day. I managed it on Tuesday and Wednesday but then it dropped to ~2 hours on Thursday and Friday, and then ~1 hour on Saturday. (And I didn’t even study on Sunday. 🤦🏻♂️) Given that when I first started this 361 weeks ago, my goal was to study for 5+ hours, I more than doubled that this week, but I’m still somewhat disappointed with my effort. A few unexpected events popped up for me which was the main reason. I hate making excuses though, and I’m annoyed that I didn’t do better. Of the 10+ hours I studied, the majority of it wasn’t on KA, so I only got through handful of videos, articles, etc. BUT, nonetheless, I’m happy with what I was able to learn even though I know I could have done better. (Which always seems to be the case. 😒)
I started the week through Lesson 5’s Project. I got ~75% of the way through, except that Gemini did most of the coding for me. I was torn between asking Gemini how to code and struggling through it myself. My goal is obviously to learn as quickly as possible, and I think there’s pros and cons to being shown how to do it VS struggling through it. It dawned on me, however, that right now I’m still in the stage of figuring out what all the syntax represents. I need to get a better grasp on what all the syntax represents before I can properly understand how to use it. (This is exactly what it was like for me learning math, so knowing this makes me feel WAY better even though I’m struggling right now.)
Unit 6 – Analyzing Data with Dictionaries
Lesson 5 – Generating Text
Project: Book Synopsis

I got started on this project Tuesday morning. As usual with KA’s Lesson’s Projects, in addition to the instructions you can see in the left panel in the screenshot above, there was also an entire article that broke down the purpose of the project and the requirements. I copy and pasted everything into Gemini and asked how I should go about trying to complete the project and it said:
Option 1: The “Natural Boundaries” Route (Beginner-Friendly)
- Start/End Fix: Instead of hardcoding [“A”, “The”, “When”], create a list of actual first words that original book summaries started with. For ending, modify text_generation.py so the while loop keeps generating until it hits a word ending with a period (.), exclamation (!), or question mark (?).
- Quality Fix: Capitalize the first letter of generated sentences automatically, or strip out floating punctuation issues.
Option 2: The “Trigram Upgrade” Route (Intermediate & Fun)
- Quality Fix: Upgrade ngrams.py and text_generation.py to use trigrams instead of bigrams! Instead of looking up what follows “the”, you look up what follows the pair (“in”, “the”). This makes the generated text dramatically more readable and realistic.
- Start/End Fix: Pick a random two-word opening phrase that actually appeared at the start of a summary in corpus.py.
Option 3: The “Scoring / Selection” Route (Creative)
- Quality Fix: Generate 5 candidate summaries in a loop, write a small function to rate them (e.g., give points for good length, ending on punctuation, and no repeated word loops), and only print the best score.
- Start/End Fix: Allow any capitalized word found in the dataset to be a starting seed word.
I decided I’d do the first two options. I’m not going to lie, I got my ass kicked the whole time I was trying to work through Gemini’s instructions. I don’t think there was a single time when I was able to figure out how to do what it suggested on my own. For each step, I had to ask Gemini multiple times what to do. So, I didn’t get much practice learning how to write the necessary code, BUT I did get a better grasp on understanding what certain things in the code were.
Some of those things included Booleans, in general, and how they relate to loops; the “or not” operator and how it works; tuples, in general, but also how tuples can be used as dictionary keys/values, and how they can be packed/unpacked and be sent through functions as arguments. I also got a better understanding of the .lowercase() and .endswith() methods, and list slicing. So, overall, although I’m sad I had no clue how to write the code on my own, I do feel like I made progress understanding/remembering what all those things are.
Unit 7 – Building Software with Classes
Lesson 1 – Attributes
Article – Instance Attributes


I started reading this article on Thursday. On Wednesday I watched two videos about classes but I found them fairly confusing. The gist that I took away from the videos was that a “class” is sort of like a function in that you give it variables and it will give you an output of some kind. However, I’m pretty sure its main purpose is to make it easier to create data structures that have common features. The example Kim gave was creating characters in a video game who had similar but not identical features, and she showed how you can create/setup a class to make it quicker to create multiple new versions of the same type of character.

This was one of the examples given in the article. You can see at the top that the class is defined as Alarm. The attributes of this class (not sure if I’m saying that correctly) are “label”, “hour”, and “minutes”. On line 2, where it shows the attributes, you can also see that it includes “self”. Kim explained in the video before why “self” gets added as a parameter, but I didn’t really understand her explanation. Nonetheless, my understanding is that you always write def __init__(self, x, y, z) to begin writing a class.
Underneath the Alarm class definition, you can see how Kim then created a “school” alarm using the Alarm class on line 9. She changed the default sound to “birdsong” on line 10. She then accessed the school alarm attribute using the dot syntax in lines 12, 13, 15, and 16.
One thing I find confusing is that although there are three parameters in the alarm class (not including “self”), there are four attributes including self.sound. I think it means you HAVE to include the first three arguments when setting up a new alarm class, and if you don’t set a sound, it will default to “radar”.
Exercise – Interpret Class Definitions
Question 1


Question 2

This exercise was fairly easy, although I did get the first question I attempted wrong. Not much to say other than it helped me start to memorize class syntax, so it was definitely helpful in that regard. (But I definitely need way more practice looking at and writing classes before I get a decent handle on them.)
Video – Program Design: Search Bar


In this video, Kim continued explaining more about classes, how to write them, and how they work. One thing she noted is that it’s standard for classes to be put into their own, separate modules which you can see in the second screenshot above. In this example, she was showing how you can use a class to create a bunch of shoe “objects” and then create a catalogue (so to speak) of those objects which you can then access and sort through. I understand how it works, but it does seem hard for me to grasp all the moving parts at the same time. I can see why this will be super helpful with programming going forward, though.
Challenge: Viewer Engagement





I’m PUMPED to say that I worked through this challenge on my own with 0% help from Gemini. 😤 (I’m pretty sure it’s the first time I’ve been able to do that.) For whatever reason each step of this challenge seemed quite clear. I understood the words used like “object” and “attribute” which was probably the biggest reason why I didn’t struggle with this challenge. Overall, even though this challenge was easy, it was a great way for me to get some experience using classes.
And that was it for this week. In terms of what I was able to learn, I think this was objectively one of my best weeks studying CS so far, but I had such a poor end to the week that it still feels like I got nothing done. In the big picture, I know I’m making progress, but I really hope I can be more consistent about studying for 3-4 hours each day this coming week. That said, I know that you can only learn so much each day before your brain quits and that really it’s more about not missing days than it is about hours-per-day. BUT, nonetheless I’m still hoping I can study for ~20 hours this coming week.
So, as always, fingers crossed I can have a SUPER productive upcoming week, get a lot of stuff done, and make a lot of progress! 🤞🏼
So, as always, fingers crossed I can be SUPER productive this week and get a lot of stuff don’t and make a lot of progress! 🤞🏼