Sunday, November 30, 2014

Last Blog Incorporating Everything I can Fit

Let me begin this blog post with a problem solving session. I've decided to try the piles of pennies problem.  I will follow G.Polya's "formula" to solve this problem.

1. Understanding the problem:
This problem asks us to transfer pennies from the left drawer which contains 64 pennies to the right drawer which begins with 0 pennies.  According to the problem, our goal is to make it so that one of the two drawers has 48 pennies.  In this problem, we are allowed to do two operations (technically 1 since they are similar).  First, we can transfer half of left to the right IF the left has an even number of pennies.  Second, we can transfer half of right to left IF the right has an even number of pennies.  These rules are quite straightforward, the game is pretty much "dead" if both the right and the left drawers contain odd number of pennies.  With this, I think I understand the problem quite well.

2. Devising a plan:
The problem seems like some simple arithmetic exercise - if you have an even number of pennies, you can divide it by 2 and give half to the other side.

Now one rule, that I've mentioned earlier, which I think will be crucial for this exercise is the fact that if you have both drawers as odds, the game is over.
Another observation I made is that the starting number (64) is in fact 2^6, so if you keep dividing it by 2, you will get an odd number only when you get to 1.
Since 48 is not 2 raised to some natural number, I decided that it might be easier if I get the right drawer to 48 rather than trying to make 64 to 48.  In other words, I think it's easier to go from 0 --> 48 rather than 64 --> 48.

Another note that might be obvious, but I think can clear up some thing is the fact that the right+left will always = 64.
I think I am ready to take on the challenge.

3. Carrying out the plan:
I will make a chart for this

Left                   Right
64                      0
32                      32
16                      48

Ah ha! There is the answer, you use operation L twice, and the right side has 48.  That wasn't too difficult,

4. Looking back:
This question was not that difficult, but it is quite an interesting approach.  I am wondering if it is possible to come up with any values between 0 - 64.  It feels like there is a possibility that you can "make" all the numbers, but I can't seem to find out how. Regardless, it was quite an interesting problem.

Now for the fun stuff - I will have a spiel about this course.  This course has definitely taught me a lot about logical notations, logic, and proofs.  Prior to this course, I had no idea how to work on proofs, but this course has taught me the basics and I believe that this is a tool that will be critical in my future career.  Despite the fact that I find this course quite "dry memorization" of proving things, I noticed that I've actually matured as a math student.  I can kind of understand why the professors emphasized so much about the structure of a proof. It was because of this constant practice of structural proof that I finally understand how to prove stuff.  My gradual growth in this area is quite obvious in retrospect, I began as a student that merely copied what was shown on notes, but it slowly turned into something that I actually understood and thought about, rather than just random pieces of notes that I "copied" from the professor. In this respect, I am very thankful for this course.

Another aspect that I liked about the course was the tutorials.  I stopped going to class after a while, but the quizzes were really fair.  Despite the fact that I didn't go to any of the class, just learning the material from the tutorial was enough to do well on the quizzes.  Also, the tutorial made sure that we knew about the "main point" of the course, giving us a quick overview of what we are learning right now.

There is one thing that I really dislike about this course though and that it is writing this blog.  I find this "assignment" very pointless, I really can't see how this has enhanced my knowledge in computer science/math/logic/or anything at all.  I'd much rather have another real assignment where I can actually practice what I've learned in this class.

Lastly, the difficulty of this class in my opinion is not as bad as I originally thought.  I felt like the grading scheme was more than fair, the professors seem to give us the benefit of the doubt whenever we had a few problems in our answers.  This observation was made on the test and the assignments.  I felt like I was given to points very generously despite some of the major mistakes I made.  I'm glad that the profs decided to take the fact that this is a first year course into consideration when they grade our assignments/tests.  I'm pretty sure if it weren't for this grading scheme, my grade would be a lot lower.

Now just a little bit of sucking up, Christine, I hope you won't be too harsh on grading my blog.  I know I haven't written a lot, but I hope you'll be as nice as you were in grading our quizzes! Thanks for always letting us leave early for tutorial and just giving us the quiz whenever we are ready for it rather than telling us to waste our time in there! Hope you enjoyed this blog, this was my attempt to reconcile with all the missed blog. Cheers!


Wednesday, November 5, 2014

Reflection on Assignment 2

This past week has been a complete mess in terms of CSC165.  Assignment 2 showed itself to be a lot harder than assignment 1.  However, it did shine some light as to why the class has been structured the way it is.

As i mentioned in my previous blogs, my initial observation of this class was that it was filled with memorization.  Memorization such as how to negate a statement, structure of proof, and what the difference between universal and existential is.  However, assignment 2 showed me the importance of all the above-mentioned ideas.  I learned that if the basics were not emphasized enough, it would have been extremely hard to even start the proofs.  By being familiar with how to negate a certain statement, you know how to start to disprove a certain statement.  More importantly, having a strong understanding between the difference of existential and universal is crucial in many of the assignment questions (especially those with multiple quantifiers).  It still amazes me how just a single switch in quantifier can make a statement mean completely different (the difference between 1.2 and 1.3 - with one false and one true, respectively).  In this sense, all the materials we've learned previously have been incorporated into one assignment.

As I was doing the assignment, there was an issue that was quite vexing for me.  I learned that the definition of floor of some number is the greatest integer that is small or equal to that number from previous classes.  But the ONLY definition of floor given to us for the assignment was the logical definition.  I found it really difficult to translate the symbolic definition into the definition as I know it.  This made me learn that that is part of the reason why proofs are so important.  Having a general intuition of what floor does helps with knowing whether a statement is true or false.  But to prove such a statement requires a detailed understanding of the definition and manipulation of it.

After this assignment, I noticed that there is still much for me to learn about proving.  I've gotten the basic structure down, but the hardest part is still the "getting the light bulb" part.  I hope that through constant practice, writing proof will get easier and easier.

Monday, October 20, 2014

Proofs

I completely forgot to keep updating my blog here. Regardless, I'll share a quick recap of the past few weeks and my thoughts about the course so far.  For the past weeks, we've covered a lot of topics - negation, implication, proof structure, and introduction to proving.  The class didn't start off as hard as I thought given how unfamiliar I am with mathematical symbols.  Working through negation problems seems like just working through problems with a set of equations (being able to covert all the statements into its negated version).  There really isn't much thinking involved.  As long as you understand what all the parts of the statement is saying, it is quite straight forward.

What interested me a little was the difference between implication and conjunction.  In my first glance, I thought for all x , P(x) --> Q(x)  is the same as for all x,  P(x) and Q(x).  In my opinion, the easiest way to tackle the difference between these two statements is by drawing their respective Venn diagram.  When drawing their Venn Diagram, we notice that there are are a lot more flexibility in terms of what kind of values we can have in the implication.  For the implication, as long as P(x) is empty, the statement is true.  However, for the conjunction to be true, all values must be in the intersection of P(x) and Q(x). This was the subtle difference I noticed while working through the problem through a Venn Diagram perspective.

Lastly, just this past week, we started looking into proofs.  For the first week, it was a relatively straight forward topic.  We looked at the valid proof structures this course required of us.  But the actual proofs is the part where I am starting to have some trouble.  It is relatively hard for me to find the "light bulb" for the different proofs.  In that sense, I hope to improve in my ability to find the connecting link for various proofs.

Cheers

Thursday, September 18, 2014

The concept of studying logic has never occurred to me to be difficult at all. Before coming to class, I thought the course would be relatively easy, but I was immediately proven wrong after going to a few classes. The first few classes were quite straightforward; we talked about some of the basic symbols in mathematics and defined what a set is.  However, the activity where we had to explain some of the python functions and give it to another student to match it with the correct statement base on their understanding of our explanation was quite difficult.   Not only was it difficult to correctly put down the meaning of the function, it was equally, if not even more, difficult to understand what the other student was trying to convey.  This prompted me to begin to improve on my communication skill as it will become a valuable skill not only in computer science, but also in the real world.


Another idea I found quite fascinating was the difference/similarity between universal and existential statements.  The concepts were quite easy – teaching us how to verify and falsify both types of statements.   What I didn’t consider was how the statement “Everyone who is taller than 5 meters is taking computer science course” is true. This statement is true because there is no way of showing a counter example to this claim (no one is taller than 5 meters).  This idea was a bit new to me since I never knew logic can be used this way.  These classes show me that there is definitely a lot more about logic that I can learn from this course and who knows, maybe this course can help me out with my LSAT that I’m currently studying for!