Some slogs that helped me a lot to think about my own slog and helped me understand concepts better were:
1. http://csc165f.blogspot.ca/
This slog had many images and diagrams in order to describe the concepts which helped a lot. A lot of example proofs which made this slog good to clarify any concepts. I found a lot of concepts in this course very difficult but this slog describes the problems really well and shows many visual images that helps me especially as a visual learner.
2. http://olivertanslog.blogspot.ca/
I found that this slog explained concepts really well. Especially the problem solving model for penny piles was very helpful to gain insight from and see what others views may be on the same problem solving model that I did in order to see differences of view and approach on the same problem. This would help me become a better problem solver looking at different ways others go about solving problems and critiquing my own work.
3. http://howdocomputer.blogspot.ca/
This slog was very interesting because it was a quite funny slog to read. It was interesting to read some of his posts such as "Real" python design recipe. I found that this slog put a lot of passion in to what they were learning which i could probably use a lot more for my own slog. Also to relate what i learned in this class to my own life and apply what i learned to solving problems that i may face day in and day out.
Tuesday, 2 December 2014
Saturday, 29 November 2014
Week 11: Halting Problem and Diagonals
Hello Rod here,
This week we finished the halting problem and is also the last week before examinations. Mostly this week me and my group have been working on assignment 3 where we were working on things like the halting problem and whether a function has to be be in big oh or big omega of another function. From assignment 3 i'm learning a lot of things that I am sure will help me a lot on the exam.
This is going to be my final blog post. So good bye.
This week we finished the halting problem and is also the last week before examinations. Mostly this week me and my group have been working on assignment 3 where we were working on things like the halting problem and whether a function has to be be in big oh or big omega of another function. From assignment 3 i'm learning a lot of things that I am sure will help me a lot on the exam.
This is going to be my final blog post. So good bye.
Saturday, 22 November 2014
Week 10: Halting
Hello Rod here,
This week we were introduced to halting function. I was a little confused cause the halting problem seemed to be theoretical because apparently no one can program the halting function. I learned that we could prove this so through the navel_gaze function we were shown in lecture that only halts when the function halt, halts. And after we were asked if this was so, what would navel_gaze(navel_gaze) do? navel_gaze will halt only if navel_gaze does not halt, which is a contradiction.
We were given assignment 3 today and there was a halting problem on it. I am hoping i will learn more about it halting when working on that problem.
I also watched this video on halting which helped me understand: https://www.youtube.com/watch?v=92WHN-pAFCs
This week we were introduced to halting function. I was a little confused cause the halting problem seemed to be theoretical because apparently no one can program the halting function. I learned that we could prove this so through the navel_gaze function we were shown in lecture that only halts when the function halt, halts. And after we were asked if this was so, what would navel_gaze(navel_gaze) do? navel_gaze will halt only if navel_gaze does not halt, which is a contradiction.
We were given assignment 3 today and there was a halting problem on it. I am hoping i will learn more about it halting when working on that problem.
I also watched this video on halting which helped me understand: https://www.youtube.com/watch?v=92WHN-pAFCs
Saturday, 15 November 2014
Week 9: Proofs of Big Oh and Big Omega
Hello Rod here,
This week we started doing proofs of big omega and big oh. Instead of just proving that an a equation is in big oh/ big omega of another equation, we started proving more complicated statements that required you to think a bit more.
For example one of the statements were is f,g are functions that take naturals and return real numbers larger than zero. Then if f is in big oh of g then that implies that g is in big omega. Prooving these statements required from me alot more thinking to be done instead of just trying to find and existing c and B just to prove that a statement is in big oh of another statement.
The proofs that we were learning this week are bit more challenging but I am certain most of my confusion will be cleared up when assignment 3 is released. Since the assignments in the past cleared up alot of things for me.
This week we started doing proofs of big omega and big oh. Instead of just proving that an a equation is in big oh/ big omega of another equation, we started proving more complicated statements that required you to think a bit more.
For example one of the statements were is f,g are functions that take naturals and return real numbers larger than zero. Then if f is in big oh of g then that implies that g is in big omega. Prooving these statements required from me alot more thinking to be done instead of just trying to find and existing c and B just to prove that a statement is in big oh of another statement.
The proofs that we were learning this week are bit more challenging but I am certain most of my confusion will be cleared up when assignment 3 is released. Since the assignments in the past cleared up alot of things for me.
Friday, 7 November 2014
Week 8: Big Oh and Big Omega and Penny Piles
Hello Rod here,
Big Oh and Big Omega
This week we continues on Big Oh and Big Omega. Tutorial helped out a lot this week when we went over counting steps in the algorithms we were given. Also the proofs for prooving the upper bound or lower bound of a equation is slowly becoming more clear. I'm still a little rough on this topic and I plan on looking over the course notes this weekend, because most of the concepts there are explained pretty well.
Penny Piles
This week I decided to do my upload my problem solving episode of Penny Piles.
Understanding the Problem:
When we were given the problem it was not clear at first so me and my partner began by reading the rules of the problem and what needed to be solved. In this case penny piles we were not convinced that you can get to every possible number (above zero, less than 64) by using the rules to divide 64. So we began by choosing numbers using the rules to get to that number. Eventually we found out that this was working for all the numbers whether odd or even.
Devise a Plan:
Once we noticed that we can get odd or even numbers we made a tree of possible results of following the steps, which helped us visualize the problem.
Carry out the Plan:
I figured to carry out the plan I wanted to write some python code, that takes as input the number of pennies you want to have in atleast one drawer and it outputs the steps you need to take in a list (this program assumes that all 64 pennies start off in the right drawer). This program is not the most efficient it could be simplified but this was the best I could get it too.
def penny_piles(pennies):
steps = []
operator = 'l'
starting_pennies = 64
while pennies != 64:
if pennies > 32:
pennies = 64 - pennies
if operator == 'l':
operator = 'r'
elif operator == 'r':
operator = 'l'
pennies = pennies * 2
steps = [operator] + steps
if steps[0] == 'r':
for i in range(len(steps)):
if steps[i] == 'r':
steps[i] = 'l'
elif steps[i] == 'l':
steps[i] = 'r'
return steps
Look Back:
When writing the code I realized a lot of things that were flawed with my understanding of the problem. Such as the proper order of the commands. At first i got the program to work with returning the number of steps it took to solve the problem, then from there I modified it to return the actual steps needed to get the result.
P.s the last little block of code deals with the commands that start with command 'r'. It flips all the commands in order to get the same result but suffice that the first command has to be 'l' because all 64 pennies start in the right drawer.
Something I could also do is make it so that the user can input how many pennies they want to start off with, and i can make that a input variable rather than having it preset to 64.
Big Oh and Big Omega
This week we continues on Big Oh and Big Omega. Tutorial helped out a lot this week when we went over counting steps in the algorithms we were given. Also the proofs for prooving the upper bound or lower bound of a equation is slowly becoming more clear. I'm still a little rough on this topic and I plan on looking over the course notes this weekend, because most of the concepts there are explained pretty well.
Penny Piles
This week I decided to do my upload my problem solving episode of Penny Piles.
Understanding the Problem:
When we were given the problem it was not clear at first so me and my partner began by reading the rules of the problem and what needed to be solved. In this case penny piles we were not convinced that you can get to every possible number (above zero, less than 64) by using the rules to divide 64. So we began by choosing numbers using the rules to get to that number. Eventually we found out that this was working for all the numbers whether odd or even.
Devise a Plan:
Once we noticed that we can get odd or even numbers we made a tree of possible results of following the steps, which helped us visualize the problem.
Carry out the Plan:
I figured to carry out the plan I wanted to write some python code, that takes as input the number of pennies you want to have in atleast one drawer and it outputs the steps you need to take in a list (this program assumes that all 64 pennies start off in the right drawer). This program is not the most efficient it could be simplified but this was the best I could get it too.
def penny_piles(pennies):
steps = []
operator = 'l'
starting_pennies = 64
while pennies != 64:
if pennies > 32:
pennies = 64 - pennies
if operator == 'l':
operator = 'r'
elif operator == 'r':
operator = 'l'
pennies = pennies * 2
steps = [operator] + steps
if steps[0] == 'r':
for i in range(len(steps)):
if steps[i] == 'r':
steps[i] = 'l'
elif steps[i] == 'l':
steps[i] = 'r'
return steps
Look Back:
When writing the code I realized a lot of things that were flawed with my understanding of the problem. Such as the proper order of the commands. At first i got the program to work with returning the number of steps it took to solve the problem, then from there I modified it to return the actual steps needed to get the result.
P.s the last little block of code deals with the commands that start with command 'r'. It flips all the commands in order to get the same result but suffice that the first command has to be 'l' because all 64 pennies start in the right drawer.
Something I could also do is make it so that the user can input how many pennies they want to start off with, and i can make that a input variable rather than having it preset to 64.
Saturday, 1 November 2014
Week 7: Big Oh and Big Omega
Hello Rod here,
This week we started Big Oh and Big Omega. We started this week by being given a linear search algorithm. We began counting the how many times the code would execute based off of the length of the search. Afterwards we were given the algorithm for insertion sort. We counted the steps of each line of code relative the length of the all the elements in the list and afterwards wrote a proof that the upper bound of insertion sort is no bigger than n squared. We did the same proof for the lower bound of big omega.
I found this week pretty challenging. I barely could follow along during the lectures. So my plan is that i'm just going to do what i usually do and read the course notes and try to understand the concepts on my own time. When it came to counting the steps of whatever algorithm i found it pretty clear. I just need to work on my proofs of big oh and big omega.
This week we started Big Oh and Big Omega. We started this week by being given a linear search algorithm. We began counting the how many times the code would execute based off of the length of the search. Afterwards we were given the algorithm for insertion sort. We counted the steps of each line of code relative the length of the all the elements in the list and afterwards wrote a proof that the upper bound of insertion sort is no bigger than n squared. We did the same proof for the lower bound of big omega.
I found this week pretty challenging. I barely could follow along during the lectures. So my plan is that i'm just going to do what i usually do and read the course notes and try to understand the concepts on my own time. When it came to counting the steps of whatever algorithm i found it pretty clear. I just need to work on my proofs of big oh and big omega.
Friday, 24 October 2014
Week 6: Sorting and Penny Piles
Hello Rod here,
This week we finished with proofs and we began talking about sorting. We were also assigned assignment #2 which will probably expand my ability to solve proofs, clearly and logically. Also today we were give another problem to solve, which was called Penny Piles.
Sorting
I am pretty glad we are starting sorting algorithms because it will give me more insight into the efficiency of certain sorting methods. I always heard of multiple sorting methods such as: bubble sort, insertion sort and selection sort but I am hoping to learn about the efficiency of some of these algorithms and the number of steps based on the situation.
Penny Piles
Today we started a problem called Penny Piles. Which was a problem along the lines of starting with a certain amount of pennies in one drawer and by using only 2 specific operations trying to get the one of the drawers to have a certain amount of pennies. How we went about solving this problem was by manually using the operations to get the desired result then afterwards we decided to make a tree of possibilities which made the operations more easier to visualize.
I look forward to continuing sorting algorithms more next week and the big oh.
This week we finished with proofs and we began talking about sorting. We were also assigned assignment #2 which will probably expand my ability to solve proofs, clearly and logically. Also today we were give another problem to solve, which was called Penny Piles.
Sorting
I am pretty glad we are starting sorting algorithms because it will give me more insight into the efficiency of certain sorting methods. I always heard of multiple sorting methods such as: bubble sort, insertion sort and selection sort but I am hoping to learn about the efficiency of some of these algorithms and the number of steps based on the situation.
Penny Piles
Today we started a problem called Penny Piles. Which was a problem along the lines of starting with a certain amount of pennies in one drawer and by using only 2 specific operations trying to get the one of the drawers to have a certain amount of pennies. How we went about solving this problem was by manually using the operations to get the desired result then afterwards we decided to make a tree of possibilities which made the operations more easier to visualize.
I look forward to continuing sorting algorithms more next week and the big oh.
Friday, 17 October 2014
Week 5: Direct Proof, Indirect Proof, Proof by Contradiction
Hello Rod here,
This week we only had two lectures but we started learning about the content of a proof. Last week when we only learned about the structure of a proof which I got pretty comfortable with. This week in lecture we worked on some proofs. We proved direct proofs by proving the statement that was given to us. Usually using some algebra and manipulation. We also worked on indirect proofs which required us to take the contrapositive of the statement and prove that. Also when we wanted to disprove a statement we learned that we should prove the negation of the statement in order to disprove the original. I still feel really weak in proving the content myself. Hopefully i'm just going to follow the lectures, work on the assignment an do some sample proofs on my own so I feel comfortable writing complete proofs.
One more thing I also learned this week is grounding. It was brought up in lecture but we didn't really talk about it so i had to go find it out myself. Yep that was it for this short week.
This week we only had two lectures but we started learning about the content of a proof. Last week when we only learned about the structure of a proof which I got pretty comfortable with. This week in lecture we worked on some proofs. We proved direct proofs by proving the statement that was given to us. Usually using some algebra and manipulation. We also worked on indirect proofs which required us to take the contrapositive of the statement and prove that. Also when we wanted to disprove a statement we learned that we should prove the negation of the statement in order to disprove the original. I still feel really weak in proving the content myself. Hopefully i'm just going to follow the lectures, work on the assignment an do some sample proofs on my own so I feel comfortable writing complete proofs.
One more thing I also learned this week is grounding. It was brought up in lecture but we didn't really talk about it so i had to go find it out myself. Yep that was it for this short week.
Friday, 10 October 2014
Week 4: Proof Structure and Midterm Test
Hello,
Proof Structure
This week began starting to learn about proof structure. Not necessarily the content of proving the statement, but we learned about the assumptions, indentation, and the conclusions at the end of the proof. The tutorial was helpful this week. We went over only the format of the proof and focusing on the format is going to help me a lot in the future when I am writing full proofs.
Midterm Test
I am mentioning the midterm test because I personally learned a lot from the test. First of all the midterm test was the first test out of all my courses, so it was a little intimidating to be my first university test. Studying over the notes and looking at the past tests helped me a lot not only with the test but my overall understanding of what we have learned so far. Right now I feel really comfortable with negation, venn diagrams, converse, contrapositive, english to symbolic and understanding boolean logic in Python code.
I found this week tough but really helpful and I look forward to learning more about proofs.
- Rod Mazloomi
Proof Structure
This week began starting to learn about proof structure. Not necessarily the content of proving the statement, but we learned about the assumptions, indentation, and the conclusions at the end of the proof. The tutorial was helpful this week. We went over only the format of the proof and focusing on the format is going to help me a lot in the future when I am writing full proofs.
Midterm Test
I am mentioning the midterm test because I personally learned a lot from the test. First of all the midterm test was the first test out of all my courses, so it was a little intimidating to be my first university test. Studying over the notes and looking at the past tests helped me a lot not only with the test but my overall understanding of what we have learned so far. Right now I feel really comfortable with negation, venn diagrams, converse, contrapositive, english to symbolic and understanding boolean logic in Python code.
I found this week tough but really helpful and I look forward to learning more about proofs.
- Rod Mazloomi
Friday, 3 October 2014
Week 3: Laws and Proof
Hello,
This week I learned a lot. Not necessarily all from lecture, but a lot doing tutorial exercises and the Assignment 1.
Laws
During the tutorial I learned to used the laws we learned to prove equivalence of statements, rather than making truth tables. I found this really helpful since it takes quite some time to make a truth table and rearranging and manipulating the statement to make it equivalent to another is a lot more efficient. I got comfortable using De morgans laws, distributive laws and manipulating an implication (P implies Q <=> not P or Q).
Proof
Just today we were shown how to prove a statement. I learned about the indentation, making assumptions and putting the footnotes. Personally I found proving the actual statement not too hard. I just need to work on properly presenting my work in the format we were shown.
Also this week doing Assignment 1 helped a lot with, negation, taking the contrapositive and converse, changing between symbolic form to english and drawing venn diagrams that will definitely help me on the upcoming test.
Wednesday, 24 September 2014
Week 2: Negation, conjunction, disjunction and tabulating truth
Hello Rod here,
Standard Negation
This week we explored negation more. I learned standard negation and I was surprised how negation changes a universal statement to a existential statement. Or if we are negating [P(x) => Q(x)] it can be equally expressed as a conjunction and as a single negation on Q: [P(x) ^ (negation)Q(x)].
Conjunction and Disjunction
I just learned these symbols this week. What helps me to remember them well is think of conjunction as the python syntax 'and' and think as disjunction as 'or.' This helps me in determining whether the entire expression would be true or not. So far this has been really helpful.
Tabulating Truth
Personally I was glad to have learned tabulating truth as a method to help better understand claims. I found the venn diagrams hard to read or visualize and when we started tabulating predicates it made a lot of sense and helped me identify the situations where the entire expression would be false or true.
This week what i has trouble with was the first set of questions on the tutorial #2 exercise. I found it difficult to translate the English claims into logical symbols at first. But at the start of the tutorial, soon as we took up two of them I was able to do all of them easily. I felt like I learned a lot from that tutorial and that as if I was learning a new language, as soon as I got the hang of understanding a few logical symbols and their placement to make the claim represent the english claim then the rest came very naturally for me.
This week was tough but I learned many things.
Standard Negation
This week we explored negation more. I learned standard negation and I was surprised how negation changes a universal statement to a existential statement. Or if we are negating [P(x) => Q(x)] it can be equally expressed as a conjunction and as a single negation on Q: [P(x) ^ (negation)Q(x)].
Conjunction and Disjunction
I just learned these symbols this week. What helps me to remember them well is think of conjunction as the python syntax 'and' and think as disjunction as 'or.' This helps me in determining whether the entire expression would be true or not. So far this has been really helpful.
Tabulating Truth
Personally I was glad to have learned tabulating truth as a method to help better understand claims. I found the venn diagrams hard to read or visualize and when we started tabulating predicates it made a lot of sense and helped me identify the situations where the entire expression would be false or true.
This week what i has trouble with was the first set of questions on the tutorial #2 exercise. I found it difficult to translate the English claims into logical symbols at first. But at the start of the tutorial, soon as we took up two of them I was able to do all of them easily. I felt like I learned a lot from that tutorial and that as if I was learning a new language, as soon as I got the hang of understanding a few logical symbols and their placement to make the claim represent the english claim then the rest came very naturally for me.
This week was tough but I learned many things.
Friday, 19 September 2014
Week 1: Quantified Sets and Implication
Hello Rod here,
Universal and Existential Quantification
This week in CSC165 was fairly challenging for me. What I had difficulty this week with was understanding the difference between universal and existential quantification. Once I started looking over the examples from lecture and recognizing the keywords that define each claim such as: "all, every, some, exists) and the next step I would take is try to identify what evidence would cause each of these claims to be proven true or falsified. Applying this to the venn diagram was probably the biggest challenge for me. I had a very hard time visualizing whether the sets in the venn diagram would have to be occupied or empty in order to prove the statement false or true. At tutorial this was explained very well and we were quizzed on the exact same problem requiring us to draw a venn diagram showing what evidence will be needed in order to prove or falsify the statement given to us.
Implication
Also we began to look into implication which made sense to me. We looked at a statement in lecture and discussed how the implication has to be true if you are going to verify or falsify the statement. For example:
"If you have blue pants, then you have red hair"
To prove this false you would need to have evidence of someone who has blue pants(satisfies the antecedent) then does not have red hair. You cannot prove this false by saying that someone wearing green pants has purple hair.
Negation
From the last lecture I had a little difficulty understanding what negation does to the statement. How it affects the statement and whether it will still remain true or not. What I am going to do about this is ready over my notes, lecture notes and write out some problems.
Overall it was a good week I learned quite a lot.
Universal and Existential Quantification
This week in CSC165 was fairly challenging for me. What I had difficulty this week with was understanding the difference between universal and existential quantification. Once I started looking over the examples from lecture and recognizing the keywords that define each claim such as: "all, every, some, exists) and the next step I would take is try to identify what evidence would cause each of these claims to be proven true or falsified. Applying this to the venn diagram was probably the biggest challenge for me. I had a very hard time visualizing whether the sets in the venn diagram would have to be occupied or empty in order to prove the statement false or true. At tutorial this was explained very well and we were quizzed on the exact same problem requiring us to draw a venn diagram showing what evidence will be needed in order to prove or falsify the statement given to us.
Implication
Also we began to look into implication which made sense to me. We looked at a statement in lecture and discussed how the implication has to be true if you are going to verify or falsify the statement. For example:
"If you have blue pants, then you have red hair"
To prove this false you would need to have evidence of someone who has blue pants(satisfies the antecedent) then does not have red hair. You cannot prove this false by saying that someone wearing green pants has purple hair.
Negation
From the last lecture I had a little difficulty understanding what negation does to the statement. How it affects the statement and whether it will still remain true or not. What I am going to do about this is ready over my notes, lecture notes and write out some problems.
Overall it was a good week I learned quite a lot.
Subscribe to:
Posts (Atom)