Data Structures & Algorithms (C949) – Wk 1

My first week of C949 is finally done. I’ll go through some of my thoughts on it so far.

C949 is all about measuring the efficiency of algorithms. This efficiency is measured in Big O notation which helps us identify an algorithm’s time complexity and space complexity in the worst-case scenario. Useful if you want to program solutions that don’t require a lot of memory (space) or take too long to execute (time).

You should be aware that this class is not about teaching you a specific programming language (although it’s using Python as a way to explain the different concepts). It’s more about finding ways to craft an efficient solution in whatever language you decide to use; efficient in regards to time (runtime) and also RAM.

For those who are being introduced to algorithms without any programming knowledge, there’s actually a whole section in the zyBooks that goes over Python. However, in my opinion, you really want to get through that as quickly as possible. If you’ve already taken D335 (Introduction to Programming in Python), then you can skip over chapters 12 through 16 and focus solely on data structures.

How I’m Studying

This is my third term at WGU. There are a couple of things that I’ve learned to do that make it easier for me to get through a class. For example, if I find the zyBooks dry and boring, usually there are some links to supplemental resources under the Course Tips box in the main class page. C949 is no different in that regard.

The actual resources aren’t shown under the Course Tips. It’s only the link to the resources that we need to get from this little box. If you click on the “View All” link to see all of the listed bullet points and other information, you will get a pop up window:

On the Course Tips popup, click on “C949 Supplemental Resources” to see the entire list of resources that you are able to get from within WGU.

What you’re looking for is mostly the cohorts. If you’ve searched through Reddit (like I have), you’ll know that the cohorts by Dr. Youngblood are what you want to check out first. If you don’t have the link, here is one: Dr. Youngblood’s Cohorts (you have to be logged in to WGU first).

The Study Guides

In the supplemental resources page, you should check out the study guides for C949. Now keep in mind that there are actually two versions of the C949 course: v3 and v4. If your zyBooks chapter 1 is titled “Introduction to Python” then you are in v3. Otherwise, if your chapter 1 is titled “Introduction to Data Structures & Algorithms”, you’re enrolled in v4. Below is a screenshot of what the study guide looks like:

The study guide helps you focus on the topics that will be on the assessment. There’s another resource called ‘recommended pacing guide’ which is also very helpful. The link to both of these resources can be found below:

  • Study Guide v4: link
  • Recommend Pacing Guide v4: link

With these in hand, you’ll be better prepared for when the day of the assessment arrives. I’ve been using Notion to list these in a document and crossing out some of them off the list whenever I tell myself that I’ve gone over a particular topic for long enough.

Hope this helps.

The Supplemental Book: A Common Sense Guide to Data Structures and Algorithms

Now, let’s talk about the supplemental book, A Common-Sense Guide to Data Structures and Algorithms by Jay Wengrow. This book is highly recommended, and I’ve found it really helpful to solidify the concepts that are a bit tricky to grasp through just the zyBooks material. The book takes a more conversational approach, breaking down the key data structures and algorithms in a way that’s easier to digest. It’s especially useful if you need a bit more explanation beyond what the zyBooks offer.

I’ve been writing down notes by hand for each chapter in the book because that’s what helps me remember the material better. I’ve also been using a whiteboard to draw the problems, just so I can really understand how each algorithm works in my head.

One thing I’ve learned in my previous terms is that practice problems are essential for this kind of class. The concepts can seem abstract at first, but working through the problems forces you to apply them, which makes everything click.

So for prompts and problem sets, Github Copilot and ChatGPT are great for this. They can provide different tasks to do with the algorithms you will learn in the class. This helped me see if I was actually absorbing the material and if I could apply it in practice. Focusing on solving these problems in Python helps reinforce the programming side as well, but I was also trying to think more in terms of the logic and less about the syntax.

What else?

Aside from those resources, I’ve also been watching YouTube tutorials on specific topics, like different sorting methods, especially when I need a fresh perspective to fully grasp a concept. Sometimes, seeing the same problem explained from a different angle can be the key to making things click.

One of the best videos I came across this week was David Malan’s CS50x lecture on algorithms:

Not only does this lecture dive into the topics covered in the first part of the zyBooks, but Malan does a fantastic job of visually demonstrating how different algorithms work. His ability to break down even the most intimidating concepts in computer science and make them approachable is honestly impressive. If you’re looking for a clear and engaging explanation of algorithms, I highly recommend checking it out.

Also, when it comes to trying to implement a specific algorithm on your own or just deepening your understanding, you should always turn to Google. Searching for examples of algorithms and seeing how they can be coded is a big part of my study routine. Some of the best sites I’ve found that really help with explaining the fundamentals of specific algorithms are:

Personally, I’m a fan of Programiz and Scaler, but it’s worth exploring all of them to see which one explains a topic in a way that makes sense to you. That’s an important point: it doesn’t matter whether a resource is free or paid—it has to resonate with you and how you learn best. If the way something is presented doesn’t click, it’s not going to be worth your time, no matter how highly it’s recommended.

Final Thoughts for Week One

Overall, week one has been productive.

The course is definitely challenging, but with the right tools and strategies in place, I’m ready to take on the next week and continue growing as a developer.

Honestly, I never thought I’d be taking Data Structures & Algorithms, but here I am, diving into a subject that felt really intimidating at first.

This first week has been a solid reminder that even the most complex topics can be broken down into manageable pieces. Just one step at a time, that’s all.

One thing that’s really stuck with me this week is the mindset of pushing through. Just keep moving forward. It’s easy to get frustrated when a topic doesn’t click right away, or when I spend too much time on a single problem, but I’m learning that persistence is key. Sometimes, just stepping away for a bit and coming back with fresh eyes makes all the difference.

I’m confident that with the resources and effort I’m putting in, I’ll come out of C949 with a much stronger understanding on problem solving in general—and be a better developer because of it.

Here’s to week two and beyond!


Last Updated on October 15, 2024


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

–>