Wednesday 5 December 2012

Closing off CSC236.

It seems like only yesterday that our first class for fall term has started and here we are, just a week away from CSC236 final exam. It was a great run. I really enjoyed and benefited a lot from CSC236. In first half of the term, we were introduced with proof by induction. A technique that is very helpful to prove identities of Natural numbers and others. As term progressed, we used the induction technique to prove correctness of program and to define certain mathematical object. In overall, we build up some of the proof techniques that we have learned in CSC165, and challenged ourselves to solve and analyze some of the harder proof questions and more complex program. Indeed, some of the concepts and assignment questions were very tough and challenging; however, after completing all of those; I really feel proud of myself and feel like my proof style has matured very much. I still have some confusions understanding DFSA and NFSA, and how we derive the loop invariant. Having just a week left for the final exam, I am going to take myself to the limit and try to understand as clear as possible on any of the topics that I didn't understand clearly.

Sunday 18 November 2012

Why do we do SLOG?

              For most of you, you guys probably have taken CSC165 from some other profs, but I also took it from Danny Heap and also did SLOG from that course. I am not a guy who normally writes a daily or weekly diary.  When I first had to do SLOG from 165, I was very skeptical and had to question myself why we were doing this. After finishing 165, I felt like if I had to pick one part of the course that I did not find it helpful/useful at all, it was definitely doing SLOG every week. Don't get me wrong, from my university experience at U of T, Danny is probably one of the best prof that I had, but at the time it was very annoying to do SLOG every week.
             Coming into CSC236, I had a good feeling that I had to do SLOG again. And here am I, writing another SLOG for this week and now I kind of understand why we are doing SLOG every week. When it comes to neatness, I think I am not that kind of  guy that is very neat, and sometimes can get disorganized and it sometimes effect my school performance in a bad way. I personally believe that to perform at the highest level in university, not only is it important to keep up with the work daily, but keeping yourself organized and neat is also very important part. Doing SLOG, I think it really helps me to become more organized and neat person. It also helps me to keep track of where I am in the course and to keep up with the work and refreshening the concepts that I learned that week. I still have to work hard to be more organized person, but I think that  doing SLOG is really a good way to start! :)

Tuesday 13 November 2012

Are you smart enough for Mensa?

Last week,  there was CSC236 test and I was very sick during that week and did not have much to say about that week, but I just thought it would be fun to post this. I came across from one of the website and came up with these questions. If you are able to answer this, you are pretty much qualified to join Mensa.

This is a level 2 question.

16 + 9  = 1
8 + 6  = 2
14 + 13 = 3

then,
7 + 7 = ?
why?

Level 3 question.


11 = 3
12 = 4
121 = 6
122 = 7
1211 = 7
.

.
.
12121212 = ?

I wasn't able to figure out level 2 question, but I think the answer to level 3 question is 256.
12 = 4, so 12121212 = 4*4*4*4 = 256. This is my guess and I do not know the answer.
 So guys, give it a try! Who knows, you may be the newest Mensa member.

We as a Computer Science specialist/major/minor student, we put much emphasis on the importance of thinking logically. Try this question and challenge your logical ability.

Sunday 4 November 2012

Why Mathematics in Computer Science?

       To many people, the answer to my question may have been answered, but for me, it has been boggling in my mind for few years( Almost 2 and a half years) and I am still looking for an answer. Even now, it is maybe because I am still inexperienced, but it is very hard to benefit from mathematical concept when I am programming. Mathematical Induction in 2nd part of CSC236 was used to define some of Mathematical objects( i.e. Fibonacci Function and recursive functions) and analyze time complexity of some algorithm( i.e. mergesort and binary search).  And our term test 2 is on this Thursday, and I doubt I will find the answer to my question before the test, but I think I have some pretty good answers to the question. First, I think that Computer Science is very closely related to the Mathematics, or I could say that Computer Science is one of a branch of Mathematics( Applied Mathematics ). There are many mathematical concepts that are used in Computing. Just from CSC236, we learned that we can possibly build more effective and faster function or algorithm by analyzing it mathematically. It may take more than just using mathematic concepts; however, use of effective mathematical concept can substantially help making better and faster algorithm. As you all know the title of CSC236 is called "Introduction to theory of Computation", and up to now, 90 percent of our lectures involved using mathematic concepts( i.e. induction proofs, time complexity, and analyzing algorithms). The title itself would make us think that we are learning about theory of "Computation"; however, it seems like the term "Computation" implies "Applied Mathematics", because we have been heavily emphasized with the use of proof techniques from mathematics and mathematical objects that are used in Computer Science. I enjoy learning both Mathematics and Computer Science and the more I learn about Computer Science, it toughen my belief about the importance of Mathematics in Computer Science. I remember from CSC165, Danny Heap said one can be a good programmer(Compute Scientist) without good background in mathematics, but to be a great Computer Scientist, one needs a great background in mathematics. And I am on a mission to find the missing puzzles to understand what he really meant and I am starting to agree what Danny had said. In the end, I hope I find the true answer to the question before my undergrad in Computer Science and I hope that I can make a great use of both Mathematics and Computer Science in my career.

Saturday 27 October 2012

Connecting some relationship with MAT240 and CSC236

       Only about a month and a half away from final exam, I am obsessed( well somewhat ) and fond of mathematical induction proof. While I am taking CSC236, I am also taking MAT240( it's been told to be harder than MAT223), Algebra I, and for some of the questions ( proof-type) that come up  in MAT240, I am trying to use induction proof. Although, I sometimes feel stupid of trying to use induction to the questions that does not require or can not be solved by induction proof. Last thursday, which is Oct 25th, I had a MAT240 term test and few hours before the test, I went to TA's office hour to ask some questions and one of the questions that I asked, I wasn't surprised but I felt like I was smarter than others when the TA used induction proof to solve one of the question. I was probably one of two or three students who understood what the TA was doing. During first half of CSC236, we were rigorosuly pushed to use  induction proof and I could say I was immune to induction, and I was able to solve one of the question from MAT240 term test very easily by using induction.
      While there are many proof techniques in mathematics, as of now, I prefer using induction the most, because the way it works out is very elegant. Moreover, I am able to confidently convince myself that the proof is correct and why it's correct. Although, there are more proof techniques to be learned in later years, I probably will choose mathematical induction proof as one of my most favourite method. However, it's sometimes discouraging to face that fact that induction proof is mostly used for proving about properties of natural numbers. As much as I want to use the induction techniques in MAT240, there really wasn't much of opportunities to use it, where I feel like I have almost perfected. Or it might be that I haven't yet to perfect it and less experienced to use induction proof in some of questions in MAT240. Yes, I really have a long way to go before perfecting the induction proof, but I will not resist myself from trying to use induction proof for some of the mathematical questions and then, I think I will become more mature computer scientist and mathematician.

First 5 weeks of CSC236

As of now, we are almost half of the way from CSC236 final for fall term and I have to be very appreciative to Danny Heap. Danny Heap has struck me greatly( in a positive way) and I feel very fortunate to face it early in my university career.

From my perspective, in fact most of you will also think the same way, I think that CSC165(Mathematical Expression and Reasoning for Computer Science) was to help us think completely different from high school math, and helping students to think more logically and elegantly when they are faced with some rigorous math questions. For example, when I was first introduced with Epsilon and Delta proof from MAT137, which I had never came across in high school,  at first I felt like it was the hardest mathematical concept that I had ever faced in my life. In fact, it was the hardest concept to me at the time; however, I was taking CSC165 concurrently with MAT137 in fall term, and  I was introduced with Epsilon and Delta also from CSC165. Learning Epsilon and Delta from CSC165 has helped me a lot to understand the topic. It was then, that I have became little be more mature with mathematics,  and logical thinking have helped me to be more immune to other very rigorous mathematical concept. After finishing MAT137 and CSC165, I thought I was a very good logical/analytical thinker. That arrogant belief has disappeared, just after first few weeks of CSC236.

As I mentioned earlier, Danny has struck me with a very alerting wake up call.  When I was first introduced with Induction Proof in CSC236, I felt like it was going to be somewhat easy, since I had already learned it from MAT137. In fact, I was very used to mathematical induction and I was able to see the pattern really quickly with almost any mathematical induction questions. Actually, I have to say that I merely memorized/followed the template. Going into 2nd or 3rd week of CSC236, I was introduced with another type of induction, Complete Induction, and that was the moment where my maturity with mathematic has took another step. If I remember correctly, I was at Danny's office hour to ask if my solution for one of the assigned question  (It was a question regarding number of squares that can be cut from a chocolate or something) from lecture was correct. And I felt very embarrassed of myself. When I was working on the question, just like any other induction proof questions, I merely followed the template and I thought I came up with a right answer. However, it took me almost an half hour to come up with the right answer when I was at Danny's office hour, because I went completely different path when I was solving the question. The question was to be proved by using Complete Induction, but since I was more comfortable of using Mathematical Induction, I resisted to use Complete Induction. And Danny knew it right at the moment and he told me something that I will always and have to keep in mind in the future when I am solving a math question; in fact with any questions.

My mentality when I am faced with a particular math question, I tend to find a short-cut or try to find an easy way of solving it. However, now I know that there really isn't a short cut or an easy way ( or more preferable way) of solving a question. Danny told me that I must be comfortable of using all the possible ways/methods to solve a question, and in fact it is true. By trying to just use a method which I prefer, I will never able to go to the next level to be more logical/analytical thinker. And I am very lucky to realize it early and want to thank Danny.