Introduction
The first week of CSC165 has finished, and I have definitely learned many new concepts from Computer Science, and Mathematics. The first few lectures were very helpful because I was not only able to get an idea of the course, but I realized how important math is in computer science.
What did I learn
The first concept I was introduced to was building sets, and proofs. I already had some knowledge on these topics prior to this course, so I felt comfortable when it was discussed in class. However, what I didn't know was how to translate building sets into Python. I recently started to learn how to program in Python, so at first it was difficult for me to understand.
After looking at the course notes, and reviewing the slides I learned that building sets in math, and computer science are similar. The only major difference when building sets in Python is that you have to reword it differently, because python doesn't accept certain notations.
Building sets in math
S = {1,2,3}
{x I x∈S and x>1}
The elements of the new set has to be an element of S, and also has to be greater than 1.
Building sets in Python
In Python it is similar, however you have to replace the such that symbol " I " with for, switch the element of symbol " ∈ " with in, and switch "and" for "if". The meaning for the code will be the same when building sets in math.
In addition to the examples above, I also learned many other notations, and other concepts such as quantifiers, and universal and existential claims. I also learned how to verify, and falsify universal, and existential claims. The difference between universal and existential quantification is that for universal quantification when the universal claim is made it will consider all objects (such as elements of a set), while existential claims consider atleast one element of a set, or domain. When it comes to universal claims a key word to look out for is "all", in existential claims "some" or "atleast".
What did I enjoy this week
I really enjoyed the exercise we did during our first lecture, where we had to explain the four functions (q0,q1,q2,q3), and state the relationship between the two sets that were given (S1,S2). Instead of just copying the answers, we had to each comment on the functions, and then pass our answers to a different person who then agreed, or disagreed with our comments. I was able to look at how other people explained the four functions. I enjoyed the first week in general just because it was a whole new environment for me, and the lectures are way different than highschool classes.
Challenges
The major challenge I had in the first weeks content was commenting on the four different functions, and then expressing them in venn-diagrams.
eg. (From lecture 1 powerpoint)
def q0(S1, S2):
''' (set, set) -> bool
Return whether ...'''
return not all({x in S2 for x in S1})
I first didn't understand the difference between "any", and "all" and what they produced. After I went over the lecture slides, and notes I figured out that "any" refers to atleast one element, and "all" refers to all elements when your determining the relationship between sets.
So for the above boolean function, a comment that will explain the relationship between S1, and S2 will be, "Some elements of S1, are not elements of S2". "All" in this case means that all elements of S1 are elements of S2, but since there is a "not" in front of "all" the relationship changes. By overcoming this challenge I learned to translate, and verify these comments by using venn-diagrams which was also difficult at first. If you input some elements in each set you can connect the properties through quantifiers, and then create existential, and universal claims.
Am I confident with the material
At first I had trouble understanding some of the concepts, and keeping up with the lecture. In each lecture I would understand some of the content, but still have trouble with some of the inclass problems. As the week went on, and I started to review the course notes, lecture slides, and ask questions on the discussion board, eventually I was able to connect some of these concepts, and also apply them to certain problems. There is also connections between this course, and CSC108. For instance, in 108 we learned about built-in functions, and how to define, and explain functions that we ourselves create. This is similar to what we had to do with the boolean functions.
Goal throughout Week 1
My only goal this week, was to simply master what was taught in the first week lectures, and also apply what I learned to different types of problems. Although I haven't mastered what I learned, I believe I have a good understanding of the week 1 content. Each week I try to review the course notes ahead of the lecture so I can participate in class, and finish problems with ease.
Tutorial
Before the first tutorial I was unsure about some of my answers for the first tutorial exercise. I think the TA explained it well, and what I really liked was how the TA explained what happened if certain regions were empty, or occupied in the venn diagrams. The TA just didn't cover the exercise but gave us some examples, which really helped when I did the quiz.
Question
This question is for anyone taking CSC165, or took the course, I was wondering what you do to prepare for each class, and some studying tips, and methods you use specifically for this course?
The first week of CSC165 has finished, and I have definitely learned many new concepts from Computer Science, and Mathematics. The first few lectures were very helpful because I was not only able to get an idea of the course, but I realized how important math is in computer science.
What did I learn
The first concept I was introduced to was building sets, and proofs. I already had some knowledge on these topics prior to this course, so I felt comfortable when it was discussed in class. However, what I didn't know was how to translate building sets into Python. I recently started to learn how to program in Python, so at first it was difficult for me to understand.
After looking at the course notes, and reviewing the slides I learned that building sets in math, and computer science are similar. The only major difference when building sets in Python is that you have to reword it differently, because python doesn't accept certain notations.
Building sets in math
S = {1,2,3}
{x I x∈S and x>1}
The elements of the new set has to be an element of S, and also has to be greater than 1.
Building sets in Python
In Python it is similar, however you have to replace the such that symbol " I " with for, switch the element of symbol " ∈ " with in, and switch "and" for "if". The meaning for the code will be the same when building sets in math.
In addition to the examples above, I also learned many other notations, and other concepts such as quantifiers, and universal and existential claims. I also learned how to verify, and falsify universal, and existential claims. The difference between universal and existential quantification is that for universal quantification when the universal claim is made it will consider all objects (such as elements of a set), while existential claims consider atleast one element of a set, or domain. When it comes to universal claims a key word to look out for is "all", in existential claims "some" or "atleast".
What did I enjoy this week
I really enjoyed the exercise we did during our first lecture, where we had to explain the four functions (q0,q1,q2,q3), and state the relationship between the two sets that were given (S1,S2). Instead of just copying the answers, we had to each comment on the functions, and then pass our answers to a different person who then agreed, or disagreed with our comments. I was able to look at how other people explained the four functions. I enjoyed the first week in general just because it was a whole new environment for me, and the lectures are way different than highschool classes.
Challenges
The major challenge I had in the first weeks content was commenting on the four different functions, and then expressing them in venn-diagrams.
eg. (From lecture 1 powerpoint)
def q0(S1, S2):
''' (set, set) -> bool
Return whether ...'''
return not all({x in S2 for x in S1})
I first didn't understand the difference between "any", and "all" and what they produced. After I went over the lecture slides, and notes I figured out that "any" refers to atleast one element, and "all" refers to all elements when your determining the relationship between sets.
So for the above boolean function, a comment that will explain the relationship between S1, and S2 will be, "Some elements of S1, are not elements of S2". "All" in this case means that all elements of S1 are elements of S2, but since there is a "not" in front of "all" the relationship changes. By overcoming this challenge I learned to translate, and verify these comments by using venn-diagrams which was also difficult at first. If you input some elements in each set you can connect the properties through quantifiers, and then create existential, and universal claims.
Am I confident with the material
At first I had trouble understanding some of the concepts, and keeping up with the lecture. In each lecture I would understand some of the content, but still have trouble with some of the inclass problems. As the week went on, and I started to review the course notes, lecture slides, and ask questions on the discussion board, eventually I was able to connect some of these concepts, and also apply them to certain problems. There is also connections between this course, and CSC108. For instance, in 108 we learned about built-in functions, and how to define, and explain functions that we ourselves create. This is similar to what we had to do with the boolean functions.
Goal throughout Week 1
My only goal this week, was to simply master what was taught in the first week lectures, and also apply what I learned to different types of problems. Although I haven't mastered what I learned, I believe I have a good understanding of the week 1 content. Each week I try to review the course notes ahead of the lecture so I can participate in class, and finish problems with ease.
Tutorial
Before the first tutorial I was unsure about some of my answers for the first tutorial exercise. I think the TA explained it well, and what I really liked was how the TA explained what happened if certain regions were empty, or occupied in the venn diagrams. The TA just didn't cover the exercise but gave us some examples, which really helped when I did the quiz.
Question
This question is for anyone taking CSC165, or took the course, I was wondering what you do to prepare for each class, and some studying tips, and methods you use specifically for this course?