Friday, November 30, 2018

8.4, due November 30

This was an interesting chapter, seeing more in depth how signal processing and cleanup is done. However it would have been nicer to see the application earlier in the section, rather than just briefly at the end. It might have made it easier to follow what the section was covering.

I really struggled understanding what all the omegas, capital W's, and boldface w's were. Something about forming an orthonormal basis for something, but I don't quite understand what for, let alone what the matrix representation is supposed to be.

Monday, November 26, 2018

8.1, due November 26

This section was incredibly enlightening. I've always wondered how signal processing worked, especially how data could be transmitted through a waveform, and this reading did an excellent job of explaining it simply. It's almost remarkable how simple it can be.

One thing I find concerning is the fact that there are many equations that I had difficulty following. Much of it seems to have allusions to differential equations, which I was grateful I recognized, but the material is still quite dense.

Tuesday, November 20, 2018

7.2, due November 20

I've always thought hash tables were incredible data structures. While they have their own shortcomings, they still eliminate a lot of the problems faced by other data structures. The fact that they can be used in constant time is neat, and in some ways makes them ideal.

I've studied hashing before, and found them pretty straightforward. It has been a few years since addressing them in a class, and we didn't delve much into the mathematics behind them, so this will be a nice refresher and stepping stone. I noticed that while collisions were mentioned conceptually in the text, there weren't many details about collision handling at all, which I found unfortunate, because there are many neat ways of addressing them.

Monday, November 19, 2018

7.1, due November 19

These last couple sections have been pretty interesting, in that it's neat how randomness can help us approximate things like integrals and irrational numbers with computers, even though computers struggle with such precise calculations. I found rejection sampling to be particularly interesting. It makes sense that samples outside the distribution and subtracting them could be used to approximate the difference between the area of two curves, but I wouldn't think it to be blatantly obvious.

As interesting as this material is, it's surrounded by some very intimidating equations, theorems, and definitions. I really don't know how much of it I need to understand for this section, and how much I can just accept and move on.

Thursday, November 15, 2018

7.1, due November 16

I enjoyed reading through this chapter because it crosses back into some of the familiar territory of numerical methods and estimations, such as Simpson's Rule. It's neat because it's easy to see the applications of random algorithms, such as estimating pi or finding the area under a complicated curve.

I still struggle to see the bridge between statistics/probability and this material, however. For example, how does the indicator random variable play in to estimating an integral? Also, how do we know how to set up these estimations? The intuition to follow is a lot easier than it is to reproduce.

Monday, November 12, 2018

6.5, due November 12

Unlike the previous sections on probability, this one was less conceptually straightforward. I'm having a hard time even following the first example given in the section. This section also seems particularly dense, which has me concerned whether the material covered in a single lecture will help me feel comfortable with my understanding when I begin working on the homework problems.

As much as I've struggled with chapter 6, I've developed an incredible appreciation for probability and statistics. Seeing the application of such practices in the real world has been more helpful in guiding my intuition than anything else, and it's made it worth it. Still, I've been happy to see the end of this chapter.

Thursday, November 8, 2018

6.3, due November 9

Certainly the most difficult thing recently has been taking the time to actually complete these blog posts. With the massive amount of time needed to complete the homework I often find myself working on assignments into the early hours of the morning, because I prioritize them over the readings. By the time I finish the homework after midnight it's already past the due date for the blogs. It's also difficult to reconcile sacrificing time I could be working on the assignment when the reading material will be covered in class anyway.

After going over this section I appreciated seeing distributions we've already become familiar with. As with virtually all of the probability and statistics content, having clear examples to work through is incredibly helpful. It is especially useful knowing exactly which parameters plug in to which parts of an equation and what each of those parameters entail.

Wednesday, October 31, 2018

5.6, due on October 31

Again, this section seemed straightforward enough; it's essentially just taking the things we've covered from discrete forms to continuous. A lot of it seems based in familiar calculus, using improper integrals and the Fundamental Theorem of Calculus, so that also contributes to some of the clarity.
As has usually been the case for probability and statistics so far, the most helpful thing is to see real examples that illustrate each of the definitions, theorems, etc. clearly in a way that builds intuition.

Monday, October 29, 2018

5.5, due on October 29

I feel like I have a somewhat vague overarching understanding of this section. Aside from Poisson distributions, which I've heard of but never understood, I think I understand the definitions and equations well enough. However, in spite of this vague intuition, I struggle to see how these come together in application.

The cohesive examples done in class last time were immensely helpful. Because the materials we covered in class directly related and depended on one another it was very easy to see how they came together. If we could manage something similar given this material I think it would go a long way to filling in the gaps in my understanding.

Friday, October 26, 2018

5.4, due on October 26

While recent chapters have been pretty straightforward in terms of the material, this chapter was certainly less so. I appreciate how clear and concise some of the definitions, theorems, and propositions are though. It's just a matter of figuring out how to apply them.

Something I always seem to struggle with is preimages. I almost go through phases of clarity and confusion. One thing in particularly troublesome is the probability mass function. That's something I have a hard time understanding, and would hope to see some decent examples of its use.

Tuesday, October 16, 2018

Midterm Prep, on due October 17

With the exam opening tomorrow, I feel comfortable with most of the material up to this point. I suspect we will be asked to show how varying data structures represent a given data set, as well as how those data structures are manipulated (deletions, insertions, balancing trees, etc.). Similarly we will probably be asked to implement certain famous algorithms (like Dijkstra's Algorithm) to find optimal solutions. Algorithms and data structures are crucially important to any programmer, and we can thus expect to be tested on them.
I am concerned, however, about being tested on the material from section 2. We very briefly covered it, and I don't understand it at all. To be honest, I didn't even do the homework, which very well may be the reason I don't understand it. Still, the reason I didn't do the homework was because everyone said it took a really long time to work on it, and I personally didn't want to spend the time on something that only seemed marginally relevant to the rest of the material we were covering at the time.

Monday, October 15, 2018

4.5, due on October 15

Having already taken CS 252, Theory of Computation, I've already had a decent exposure to P and NP problems. It's actually a shame we won't be going over Turing machines, as I really enjoyed them at the time. This is the aspect of algorithms that has always fascinated me more than anything else; it's incredible to think there are NP problems that we don't even know could be in P!

As for my concerns, I know that proofs around these types of algorithms are much less intuitive (at least they have been for me), and I hope the course will help us develop the intuition for them.

Monday, October 8, 2018

4.1, due on October 8

For a long time I've always thought of dynamic programming as this mysterious, unintuitive concept that was never really taught in computer science. However, after reading this chapter I realized that I have been taught some aspects of dynamic programming, albeit more implicitly. I still feel I lack the intuition to truly implement it effectively, but I can see myself developing that quickly as we continue.

The biggest concern I had in this section was Bellman's optimality principle. The concept itself made sense, but I struggle to wrap my head around its application in the example provided in the text.

Thursday, October 4, 2018

3.4, due on October 5

I thought the fact that a heap could be represented as an array was pretty neat, as they're usually quite easy to work with. I also appreciate how deep an understanding of various data structures we're developing in this class. As familiar as I am with data structures conceptually, I still worry about being able to recall them in a job interview scenario. So these chapters are great!

The thing I was most unsure about in this chapter was the actual process for constructing a heap. I had a hard time following the idea of heapifying, and hope we'll have time in class to better solidify it.

Monday, October 1, 2018

3.3, due on October 3

This section actually did a good job of abating some of my concerns regarding BSTs and AVL trees. When I last took a course on data structures I remember being intimidated by them, but it was refreshing to find that these aren't quite as complicated as I remembered as a young CS student.

That said, AVL trees still leave me a little uneasy as to the coding implementation. I also would like to understand how to handle the third case of deleting nodes from a standard BST: when a node has two children. I'm having trouble thinking about how that would be programmed algorithmically.

3.2, due on October 1

I'm pretty familiar with stacks and queues, and this section seemed more helpful in the realm of formulas and propositions than the last. I had a hard time on the last section in some ways because we didn't have many hard and fast formulas like Poposition 3.2.7 "G is a tree if an only if |E| = n - 1".

While stacks and queues are straightforward data structures, some of the other tree structures, such as AVL trees, are pretty complicated (maybe not so much conceptually, but definitely more complicated when it comes to coding it up), so I'm not really looking forward to the next section....

Friday, September 28, 2018

3.1, due on September 28

I was somewhat excited to get into data structures. I've never approached them from a mathematical standpoint, only from a basic computer science aspect, so I look forward to gaining a deeper understanding of commonly used data structures.

On the other hand, I feel my intuition fails me at times, making certain data structure concepts difficult to grasp fully. Something that helps is knowing and understanding the application of certain structures and, more particularly, direct guidance in how to apply them in order to build that intuition.

Wednesday, September 26, 2018

1.11, due on September 26


This section was much anticipated, because it provides the proof of the Master Theorem, which until now would be more aptly described as the "Magic Theorem," because I had no idea whatsoever how it worked.

As much as I looked forward to learning how the Master Theorem worked, I knew I would be intimidated by the proof. Even after reading over the proof a couple of times I still struggle to follow it. I may understand some of it conceptually, but I still find it very fuzzy and can't comfortably say I understand the theorem; it's still the Magic Theorem to me.
  • How long have you spent on the homework assignments? Did lecture and the reading prepare you for them?
    • Each set of assignments (for both 320 and 344) easily take me into the wee hours of the night. By my reckoning I've spent as many as 11 hours on it. Some Saturdays I spend all day working on them; some weekdays I stay up until 1:00 or 2:00 in the morning or wake up at 4:00 to finish.
  • What has contributed most to your learning in this class thus far?
    • Study groups have been most beneficial. Many in the cohort have varying experience in different aspects of mathematics and computer science. As such, it makes it easier for us to help one another. Instead of pounding my head against the same problem for three hours, a classmate can walk me through it in a matter of minutes.
  • What do you think would help you learn more effectively or make the class better for you? (This can be feedback for me, or goals for yourself.)
    • I find lecture most useful when the professor covers specifics that will benefit us in the homework (I would say Professor Grant is particularly adept at throwing us a bone in regards to the assignments by giving us hints and guiding our reasoning for some of the problems. In my experience, hints like that condition my mind on how to approach a particular math problem, and I don't waste countless hours trying something that isn't even applicable.

Friday, September 21, 2018

1.9, due on September 21


This was an incredibly interesting chapter! Refreshing familiar rules of modular arithmetic was nice, but going over some of the more obscure (and practical) rules, such as fast exponentiation, finding inverses, etc was really neat. I also really the "Freshman's Dream" corollary; the naming was pretty great, and will likely make it easier to remember.

I was a little intimidated by Fermat's Little Theorem, however. The notation combining combinatorics and modular arithmetic is going to take some getting used to. I felt like C(p,k) came out of left field, and I'm having a hard time understanding the reason for it.

Tuesday, September 18, 2018

1.8, due on September 19


This chapter was a good refresher from MATH 290 and the process behind the Euclidean Algorithm as covered then. I was fairly confident in the material at the time it was first covered, so I'm looking forward to this chapter, however I'm a bit rusty in actually implementing the Euclidean Algorithm and its extended version. Going over the methodology a few times will go a long way toward remembering it. I've never considered what programming the algorithm might actually look like, so I'm not terribly confident in that either, but the text says it's supposed to be pretty simple in comparison to doing it by hand.

Thursday, September 13, 2018

1.5, due on September 14


This proved to be a fun chapter, although I still don't really know how LU decomposition works, and Algorithm 1.5.1 is quite intimidating, so I've had a hard time figuring out how that works also. The fact that the matrix can't have zeros in any diagonals also makes me a little uneasy, as it seems to limit the scope of the algorithm. I suppose, however, that a matrix can (and probably ought to) be row reduced before feeding it to the algorithm, avoiding this problem anyway.

I particularly enjoyed reading about Loop Interchange, and it made me more conscientious of  how I write loops into my own code. Thinking about loops in terms of summations and independent variables will no doubt make it easier to tell when a loop interchange is possible.

What do the asterisks at some section headings mean?

Tuesday, September 11, 2018

1.4, due on September 12


This section felt a lot like a review of multivariable calculus, in that double summations are analogous to double integrals. I felt that the chapter made a lot of sense conceptually, however the examples still left me wanting. Some of the notation really made me think, as it didn't make much intuitive sense at first, but puzzling through the examples helped.
Something that really helped was thinking of it all in terms of infinite calculus; integrals are something I'm pretty familiar with at this point, and summations by themselves are also quite familiar, so partitioning the two and tackling them individually will probably go a long way.
One thing I was particularly curious about was whether there are any caveats with these finite sums in which the integral analogy begins to break down. That is, when do the familiar rules of integral calculus cease to apply? I know that infinite double sums can't be indiscriminately reordered (that was covered quite clearly in 341), but what else causes problems?

Monday, September 10, 2018

1.3, due on September 10


This was a pretty neat section, however the algebra seemed somewhat "hand-wavy." All that really means, however, is that I should probably take some time to work out the examples to get a better idea as to how finite calculus works. I did try to work some of them out, like the proof of the Fundamental Theorem of Finite Calculus (with the telescoping series), however for some reason I can't seem to arrive at -f(a) + f(b). I'm sure taking a look at it after lecture will be more enlightening.

My favorite part was how the section related finite calculus to math we are already familiar with, such as the sum of consecutive numbers, or geometric sums.

Friday, September 7, 2018

1.1-1.2, due on September 7


Something I seem to struggle with is knowing how to count primitive operations. In particular, I'm not sure how Line 11 of Algorithm 1.2.1 costs as many as 5n operations. I find that it's also difficult to follow some of the algorithms without a visual aid of some kind.

All in all, sections 1.1 and 1.2 were relatively straightforward; having taken algorithm and data structure courses previously I appreciated the review. The intensity and depth of the mathematical elements has been a bit of a learning curve though.

Introduction, due on September 7


My name is Adam Fidler (five bucks if you come up with a pun I haven't heard), and I am currently a junior in the ACME program. I have taken the BYU Math equivalents of 113, 290, 313, 314, 334, and 341. I initially transferred to BYU with the intention of pursuing a CS degree double-minoring in mathematics and linguistics (because of my interest in NLP and computational linguistics), however upon learning about the ACME program I realized that I could essentially achieve all three of these in one major.

In my experience, the professors that I have most appreciated are those that will truly instill a passion in the material. One such professor was my physics professor at UVU, Professor Paul Mills. He taught things so matter-of-factly and concisely that not only were we extremely prepared for our exams, but we gained immense conceptual understandings of the material as well. Even after three years, the things I learned in his class stick with me more than any other class I have taken.

While many of the things we learned weren't particularly clear at first, he taught us how to solve the problems, knowing that deeper understanding would come through repetition; however, not once did I feel like I was banging my head against the wall, struggling to figure out how to even begin to solve a problem. He taught us the "how", and the "why" came quickly through our own efforts (which is much more than I can say about virtually any math course I've taken since transferring to BYU, with perhaps the notable exception of Professor Allen's Differential Equations course).