This two weeks, I've learnt that we can mesh together logic and set theory, which seemed to be mutually exclusive at first. For example, take the following sentences.
a implies b. In set theory, this means that a is a subset of b. This becomes apparent when we consider venn diagrams as the set of a by itself must be empty, implying that all of a must exist inside b, thus making 'a' a subset of b.
a and b. In set theory, this means that the set that makes this true is the intersection between a and b. Apparent through venn diagrams and no set theory, I can understand more about logic.
a or b. In set theory, like 'and', the set theory operator is union, which is everything that includes anything within a or b, or maybe both. This even applies for mutually exclusive items!
As I stated in the last post, I found vacuous truths to be one of the more confusing parts about logic. However, using my understanding of when an implication is true, and also using set theory, I am able to verify that a vacuous truth will always make an implication true. To make anything ever false, you must find some existing counterexample. In the case of a vacuous truth, we will never find a counter example! Then, using an explanation through set theory, a vacuous truth implies an empty set. An empty set is always a subset of any other set. That's why a vacuous truth will always be true.
Finally DeMorgan's law presented a new way for statements to change. After doing truth tables, I wondered what if some expression had the same truth values as an if statement, or an and statement? Would they be considered "equivalent"? As De Morgan's law shows, if they have the same truth values, then they actually are the exact same as each other; they are equivalent.
Finally, the experiment on Friday with paper folding actually brought to my attention how interesting it is to approach a problem and solve it just through experimentation. Usually, I'd expect there to be some manipulation you have to pull before being able to solve it. Now, I realize that we have to experiment, play around, and try to understand a bit more before being able to identify that crux move that leads to a solution.
Sunday, 28 September 2014
Wednesday, 17 September 2014
An Introduction to Mathematical Analysis of Computer Science.
CSC165 First Week
The first few lectures opened up an interesting way for me to understand how to approach computer science. No longer is it just a design and implementation consideration, but now there are mathematical, logical, and readability issues. Now, for me, it becomes important for me to not only learn how to program properly, but to analyze them, and understand how and why these programs work.
Some of the few course material that we covered in the first few weeks consisted of a lot of logic and quantifiers, the idea of ambiguity and precision, and even a new heuristic approach.
One of the things I did struggle with in the first week was the idea of using a Python function to evaluate all and any operations. Originally confusing was the x in s2 for x in s1; to me, it seemed that it was going to loop through x in s2 and check it for all x in s1, but then upon hearing that the opposite was true from the professor, I understood that it checked for all x in s1 if it was in s2.
Additionally, with the idea of logic being introduced into the course, if-then statements attained a different meaning. From the computer science context I drew upon to understand if-then statements, I expected a if-then sentence to be true if and only if the precedent is true, and false otherwise. Learning that this was not the case really rocked my foundations, and thus it made me reconsider my ideas. Going back to fundamentals and representing these ideas with set theory helped to rebuild and reinforce the ideas taught in class. Doing so led to success in the tutorials.
For the first week of class, it was a very rocky stuff because I didn't really know what was being taught and was confused regarding the concepts. Upon further research, example testing, and a return to the fundamentals of set theory, I was able to not only understand the material, but to "prove" it to myself.
The first few lectures opened up an interesting way for me to understand how to approach computer science. No longer is it just a design and implementation consideration, but now there are mathematical, logical, and readability issues. Now, for me, it becomes important for me to not only learn how to program properly, but to analyze them, and understand how and why these programs work.
Some of the few course material that we covered in the first few weeks consisted of a lot of logic and quantifiers, the idea of ambiguity and precision, and even a new heuristic approach.
One of the things I did struggle with in the first week was the idea of using a Python function to evaluate all and any operations. Originally confusing was the x in s2 for x in s1; to me, it seemed that it was going to loop through x in s2 and check it for all x in s1, but then upon hearing that the opposite was true from the professor, I understood that it checked for all x in s1 if it was in s2.
Additionally, with the idea of logic being introduced into the course, if-then statements attained a different meaning. From the computer science context I drew upon to understand if-then statements, I expected a if-then sentence to be true if and only if the precedent is true, and false otherwise. Learning that this was not the case really rocked my foundations, and thus it made me reconsider my ideas. Going back to fundamentals and representing these ideas with set theory helped to rebuild and reinforce the ideas taught in class. Doing so led to success in the tutorials.
For the first week of class, it was a very rocky stuff because I didn't really know what was being taught and was confused regarding the concepts. Upon further research, example testing, and a return to the fundamentals of set theory, I was able to not only understand the material, but to "prove" it to myself.
Subscribe to:
Posts (Atom)