Big-Oh, big-Omega, and other types of bounds are extremely useful when we want a general idea of how efficient our programs are and why certain functions take more steps than others. It's interesting, and also convenient how most of the runtime behaviours can be described by polynomials. I recall in CSC148 that there were a number of functions for big-Oh from best to worst. The best were constant runtime or logarithmic runtime, which makes a lot of sense. However, not all functions display this behaviour, and the best functions have at best n*log(n) realistically speaking. I can't imagine what use we would have for functions of exponential runtime or even factorial runtime!
Something I've had trouble with was figuring out just how to come up with the equation that describes runtime for a particular Python function, even if I had a basic idea of what loops do to functions. Professor Heap's method of going through the function step by step and using different markers for different parts of the function that have different runtime behaviours is helpful, but it can get messy for longer functions. Eventually I found at least one pattern, which was that every loop will increase the order of the function by 1, and something that should be constant if it wasn't in a loop, like assigning a variable a value, would no longer be so inside a loop. Hopefully I will get better at this before the exam, since this part is tricky, since the straightforward proofs that involve big Oh and big Omega depend on understanding this part.
Well now I have to admit that the Halting problem confuses me a whole lot, and I'm fairly sure it's not because of lack of sleep. It makes sense that not every function can be computable, but the way that it isn't really bugs me. When there are paradoxes about abstract concepts like time travel, we don't think much of them, but when it is something that feels quite real due to the many real world applications it has like Boolean statements, and even programming languages, it's really weird how they can have paradoxes too! Explaining behaviours of halt or navel_gaze as part of a set of uncomputable functions, which are uncountable does seem to make more sense, in the same way that I feel like "reality" is countable makes sense (the world is quantized after all, so we could we map every particle to a natural number?). There is still a lingering uneasy feeling about this though, and it is not unlike the uneasy feeling of the properties of the empty set.
It seems this is something that we as computer science students, and scientists in the future, will simply have to get used to.
Something I've had trouble with was figuring out just how to come up with the equation that describes runtime for a particular Python function, even if I had a basic idea of what loops do to functions. Professor Heap's method of going through the function step by step and using different markers for different parts of the function that have different runtime behaviours is helpful, but it can get messy for longer functions. Eventually I found at least one pattern, which was that every loop will increase the order of the function by 1, and something that should be constant if it wasn't in a loop, like assigning a variable a value, would no longer be so inside a loop. Hopefully I will get better at this before the exam, since this part is tricky, since the straightforward proofs that involve big Oh and big Omega depend on understanding this part.
Well now I have to admit that the Halting problem confuses me a whole lot, and I'm fairly sure it's not because of lack of sleep. It makes sense that not every function can be computable, but the way that it isn't really bugs me. When there are paradoxes about abstract concepts like time travel, we don't think much of them, but when it is something that feels quite real due to the many real world applications it has like Boolean statements, and even programming languages, it's really weird how they can have paradoxes too! Explaining behaviours of halt or navel_gaze as part of a set of uncomputable functions, which are uncountable does seem to make more sense, in the same way that I feel like "reality" is countable makes sense (the world is quantized after all, so we could we map every particle to a natural number?). There is still a lingering uneasy feeling about this though, and it is not unlike the uneasy feeling of the properties of the empty set.
It seems this is something that we as computer science students, and scientists in the future, will simply have to get used to.