Skip to main content

Debugging My Way Out of the Monster Mash

For this learning journal, I worked with Erin Hurley.

I started coding right away, using sticky notes to jot down ideas and keep track of important logic and structure. Interestingly, I began by working on the first and second child classes first—just to make sure I understood the requirements and structure—before going back to complete the Monster base class. This helped me get a clearer sense of how everything would connect. I approached the assignment step by step, focusing on writing modular, organized code and using print statements to help with debugging when needed. My notes helped me stay on track and adjust my approach as I built out each piece.

My classmate said they felt overwhelmed at first and accidentally opened a project within another, which caused issues. After getting advice from Polina, they focused on building the simplest functions first, since the complex ones relied on them. They didn’t plan on paper due to the structured nature of the assignment. They finished all the classes before running any tests, which they later realized made things harder. Reading the README and grading rubric after finishing led to last-minute fixes—but they took it all in stride.

If I were to redo the assignment, I would spend more time planning out the structure before jumping into the code. While starting with the child classes helped me get a feel for the task, I realized that fully understanding and setting up the Monster base class first would have made everything smoother. I’d also sketch out a rough class diagram or flow on paper to map relationships and avoid rewriting sections later. Overall, I’d aim for a more top-down approach with clearer planning upfront to save time and reduce trial and error.

My code followed the Google Java Style Guide fairly well. They noted that my indentation and naming conventions were consistent and readable. However, there were a few areas I could improve on, like spacing around operators or keeping line lengths shorter for readability. Overall, the feedback was positive, with minor suggestions for polishing.

The most challenging part was organizing the Monster base class in a way that all the child classes could extend it cleanly without running into conflicts or redundant code. It took some trial and error to get the right balance between abstract methods and shared logic. Managing method overrides and making sure each child class had the proper behaviors—without repeating too much—was tricky at first. Once I got the structure down, everything started to fall into place, but getting there required some careful thinking and refactoring.

The most interesting part was seeing how each child class could take the base class structure and behave differently through overridden methods. It really showed the power of inheritance and polymorphism in a practical way, and it was satisfying to test and see the different monster behaviors come to life.

I’m most proud of how clean and modular my code ended up. Even though there were some bumps along the way, I managed to make each class readable, reusable, and easy to test. Debugging became much easier once the structure was solid, and the logic flowed nicely between the classes.

After submitting the assignment, I treated myself to a good cup of coffee and relaxed with a Netflix series. It was a small celebration, but it felt well-deserved after balancing school and work.

Comments

Popular posts from this blog

CST462S - From Learning to Impact: My Service Learning Journey

What went well during my service learning experience was my ability to contribute meaningfully to the ASCENDtials web team. I was able to complete several tasks such as updating website pages, working on LifterLMS courses, and improving user experience through better layouts and navigation. I also communicated effectively with my team, asked questions when needed, and stayed consistent with meeting deadlines. Over time, I became more confident using tools like WordPress, WPForms, and course-building platforms. If I could improve something, it would be my time management and planning. There were moments when tasks felt overwhelming, especially when balancing schoolwork and service hours. I would also improve my confidence in decision-making, particularly when working independently on design or technical issues. Taking more initiative earlier and asking for feedback sooner would have made my work even stronger. The most impactful part of this experience was seeing how my work directly co...

CST438: Hands-On System Testing and Cloud Technologies

This week, I worked on both system testing and understanding cloud and distributed system concepts. One of the main things I learned was how to build Selenium system tests that simulate real user behavior. I created tests in which an instructor enters final grades and in which instructor-created assignments appear in a student’s view. While doing this, I learned how important it is to have all parts of the system running, including the frontend, backend, and external services like the gradebook. I also improved my debugging skills by fixing issues with Selenium, such as incorrect XPath selectors, missing UI elements, and unnecessary alert handling. I also learned how to properly manage my code using Git and GitHub. I created branches, committed my changes, pushed them to GitHub, and opened pull requests for review. This helped me understand a more realistic development workflow and how collaboration works in a team environment. In addition to coding, I reviewed several key concepts i...

WHERE I’m At: Midpoint Lessons in SQL and Beyond

 Halfway through this course, I can see how much I’ve learned and how it connects to both my past experiences and my future goals. One of the biggest takeaways has been understanding how SQL views work. I now know that a view is like a virtual table, useful for simplifying queries and presenting data, but usually read-only since it doesn’t store data itself. I’ve also learned the importance of normalization, which helps remove redundancy and ensures cleaner updates by splitting one large table into multiple related ones. Another valuable lesson has been comparing SQL with Java: SQL is declarative and focuses on the “what,” while Java is procedural and focuses on the “how.” This comparison helps me appreciate each language’s role in problem-solving. I’ve also seen firsthand how powerful SQL can be in real workflows compared to spreadsheets, such as enforcing business rules like course eligibility in a single query. Beyond SQL, I’ve grown as a programmer in general—planning better, w...