Tuesday, February 21, 2017

CST 370 Week 8

Week 8

Phew! What a course! As we wrap up the final week, I'm very glad we've completed the course and are on to the next one (CST 373 Ethics in Communication and Technology). I've been looking forward to our next course for a while now because I really enjoyed the quick look into ethics in our first Proseminar course. I hope it lives up to my expectations.

As for this current course, we covered graphs this week. I'm sure we just covered the tip of the iceberg since we have a shorter week with only one homework assignment. The content covered in-order, pre-order, and post-order tree traversals, edge lists, adjacency matrices, and Dijkstra's algorithm. Throughout the course we've been watching videos from My Code School and they've been very helpful. I liked the emphasis this week regarding the trade offs between using an edge list and a adjacency matrix for storing a graphs. It's good to consider that an adjacency matrix will take up a lot more space and an edge list has a large lookup time. Those are very valid things to consider when working on larger systems.

The final has not yet been released as of writing this. I wanted to get all of my course work done before the final release so I don't miss anything. I expect to do well, especially since it's a programming assignment but you never really know...

Overall, I've really enjoyed this course and have loved how organized it is. There were no surprises and the course maintained consistency. The modules seemed pretty evenly weighted but I think stacks and queues could be combined. I was already familiar with the topics so I didn't not end up seeking out much help, but the professor and TA both seemed very available and encouraged us to contact them when we needed help.

Monday, February 20, 2017

CST 370 Week 7

Week 7

This week we covered binary search trees. There was a lot of emphasis on recursion (Google it... it's fun!) in the programming assignment. A good portion of the assignments for the week covered in-order, pre-order, and post-order tree traversals. It appeared in both the homework and programming assignments.

The concepts for these are pretty straight forward. They all traverse the tree in a similar way and vary based on when the contents of the node are displayed. The images here show the same path and the point in the path when each value is printed for in-order and pre-order traversals. All of these algorithms use recursive functions, treating each node as the root of a tree, for their implementation.

Binary search trees are very neat and efficient for finding values (assuming it's properly balanced). Instead of looking through an entire list, you can just go through the depth of the tree.

As I'm writing this, our final module for the course has been released and, based on a quick look, we're on to graphs! I'm very excited to close out another course in this program and get one step closer to graduation. It's become much more difficult to maintain focus but I'm pulling through!

Here is my programming assignment for the week:

Sunday, February 12, 2017

CST 370 Week 6

Week 6

I kept thinking that I'd get ahead this week in this course and place more focus on my discrete math class, but that hasn't happened so far. I think I need to just sit down and focus a little more. I am finding myself frequently distracted.... but we're in the last stretch and I need to keep my eyes on the goal (that's what I tell myself, at least)!

We continued with sorting algorithms this week and added binary searches to our little collection of tools. The assignments were straightforward and really not too bad, once you got going. We implemented a binary search, both iteratively and recursively, in our lab and a non-standard sorting algorithm in our program, which I walk through in the video below.

Overall, I'm happy with the way this course is going. I really appreciate the general structure and predictability. If this were the beginning of the program, I'd be a lot more into it but I'm feeling very run down this week and at this point in the program. The repercussions of doing an additional course each semester while working full time for this entire program are surfacing.

Here is my video of the programming assignment this week:

Monday, February 6, 2017

CST 370 Week 5

Week 5

We're on to sorting algorithms! This week we covered selection sort, bubble sort, insertion sort, and merge sort. I definitely feel like I have an advantage in this aspect because I've covered it so many times and I believe that I have a good handle on it. The homework was pretty straight forward and didn't feel like it came from left field, or another class, this time. I appreciated that. The programming assignment also remained on topic, since we implemented sorting algorithms ourselves.

We also had our midterm this past weekend. I wasn't very excited about it because of my big flop last week and my lack of discrete mathematics knowledge (which I am just barely enrolled in!). I was glad to see that the midterm wasn't so heavy on the discrete math bit and was much more focused on the data structures and other material we covered. I was also surprised that there weren't problems covering converting infix notation to polish or reverse polish.

As far as the grading has gone, I feel like there has been a surprising amount of focus on C++ language specifics. I really feel like the grading on our assignments (homework and labs) should be more focused on us understanding the material and concepts of what we're learning and not so much on the language itself, especially because this is not a class on C++ itself. Personally, I haven't used C++ since ~2009 (8 years!) and am rusty on a lot of the language-specific aspects of it. Our lectures and reading assignments aren't focused on these things and I don't believe the grading should be either.

Here is my video of the programming assignment this week:

Wednesday, February 1, 2017

CST 370 Week 4

Week 4

There was a fair amount of new material this week that was very unlike the previous few weeks. We covered a fair amount under the algorithm complexity umbrella, like big O notation, recurrence relations, and time complexity.

I didn't start the homework early enough this week and it really hurt me. The structure was a bit different so I slowly (for this program!) worked through videos and skimmed the readings. I didn't begin the assignment until Sunday, leaving me only Monday and Tuesday (after work) to complete the assignment. For 5 questions, I didn't think it would be too bad... but I was so wrong. There are problem that I worked out but left completely blank because I don't even know how I got to where I was (the step problem).

Discrete mathematics is the last course I need outside of this program. I have paid for it and am in the process of enrolling through the University of North Dakota Online. However, I have not even started it yet. The homework had discrete math topics that I was unfamiliar with. I used my sister's old discrete mathematics textbook to complete what I could of the assignment.

I'm just considering this week a loss and will press on with the upcoming material. I do have some extra credit to fall back on, thanks to the videos. I believe it's best to stay current with the course than dwell on getting caught up. I will spend an additional day trying to complete the unanswered question on assignment. If I don't get it, I will move on. I have at least turned in something. Not all "F"s are the same, after all!