Showing posts with label CS3216. Show all posts
Showing posts with label CS3216. Show all posts

Sunday, April 18, 2010

This is not the end, just the beginning

Time here sure flies very fast. I can remember very well the day I applied for CS3216 or the first lecture of this module. Now it's near the end already. The experience is very real, very wonderful, and very meaningful as well. Prof's last question in this blog is what I have learnt in CS3216. Interestingly (or is it on purpose), the first blog was also on the similar topic. Somehow, I partly feel that it's like a cycle. You predict what you will learn, fight and learn with your best, then review what you learnt, and then the same cycle (maybe different situation) begins. Not very, but just a feeling....
What have I learnt in CS3216? I don't know exactly, but the followings are the ones bearing deep impression in my mind.
Idea is cheap, and execution matters. If I'm not wrong, prof always mentioned that idea is cheap, about which I agree but not totally agree. In my opinion, idea is still expensive to a certain extent. Original ideas still have a very good stand in this world. But prof is also right. Generally speaking, ideas can be considered to be cheap ‘coz it's very hard to come up with a real original and unique idea, which is but to say, regardless of how wonderful your idea is, there's always a high chance that there're some people in this world who also come up or already have come up with the same idea. Speaking of this, it is naturally that one of the factors that differentiate people with the same idea, is the execution. Therefore, just partly, execution matters. The other reason why execution matters is that idea is just idea, it is not real, and without execution, it will just be forever theory only, which might be said to be... nothing (not all cases). Another reason I feel that execution matters is that practice and theory might be very different in many cases, as time is always an essence, and normally people want to achieve the best in the shortest amount of time. The last reason is that idea is just on paper, no matter how good you are, it's very likely that there're many problems out there you don't expect, and regretfully, most of them do matter in life. Regarding to our final project, the idea in the beginning was quite good and impressive. But when it came to make that idea real, many problems arose. And in the end, the idea about skill tree was dropped ‘coz we didn't have enough time, the idea about the item is also not available yet, also because of time, .... and many other problems as well. Not a quite good example though. In conclusion, idea is just theory, execution is one important things to make idea reality, and so, it does matter, even a slight difference in execution may result in a great difference in the outcome. In other words about this, all ideas can be considered to be the same, either good or bad, without execution.

Programming. Yup. I can feel clearly that I have learnt quite a lot about programming in this module. I learnt quite a number of programming language, html,js,php,as,... Also, I learnt lots of stuff about web programming, about database, about security and some others as well. Prof said that it's not possible to miraculously become an expert after some hours, but I was equipped with the basic about those problems so that I can avoid very bad code and have a foundation or interest to go deeper to the field. Regarding to programming itself, the amount of coding in this class is significantly more than the code I have done in the rest of my life up to now (with regards to CS1101S and CS1102S). Actually, many parts of my code are not good, if not, crap, but I feel that many other parts are quite good. So let's be happy with what I've learnt about coding for a while. Hmm, I think that programming is quite not the very heart of cs3216, so let this paragraph to be short, i.e. I mean to end it here.

The next wonderful experience I've gone through in CS3216 is teamwork. Those are the first time I worked in a team with other people, and greatly, all of them are very good. Facebook project, seminar project, Google Wave final project, all of the people there are very good in many aspects, and it's really great to be able to work with them. (Actually this not quite about learning).

The next original and unique stuff I learnt in CS3216 is to learn 'how to learn'. I still remember prof's idea in the first lecture: "If you give a man a fish, you feed him for a day. If you teach a man how to fish, then you feed him for a life. But in this modern world, is there any fish out there (which is but to say, there's no guarantee that what people teach students at school is applicable later on). If you give a man a rod and he figures out how to fish, then even if the world changes, he will also be able to absorb, learn new techniques and adapt to the new world." It's not exactly word by word, but generally it is that. It was very impressive the first time I saw this quote. It was more than just right and true. It was wonderful. And seriously, I think prof did quite well in teaching this idea to CS3216 students. I and we, CS3216 students, seriously learn many things on our own and adapt those to the real world.

Followings are some random stuff from prof and some wonderful entrepreneur people:
Blame yourself, don't blame any other.
This can be one of the things I will remember for the rest of my life. Before CS3216, I always thought that I blamed myself for any mistake, not any other, ‘coz if I want to better, I must face my mistake and fix it, running away by blame any other will solve nothing. In the end, it turned out that I was quite right about the latter, but I was wrong about the first. I was still finding excuse for myself when making mistake or doing something not quite good. I still remember very clearly the time when prof quarrelled with me when I let player use keyboard to choose difficulty of the game rather than using mouse with a click (actually I still haven't changed my mind over the reason of that was I tested it on my computer when coding and it's more intuitive to use keyboard rather than use mouse, cos my hand was generally on the keyboard. But seriously, when prof pointed it out, I really realized that it was my mistake to not test on the web at that time, when it's more intuitively to use a click than keyboard, my bad :( ). It really, really made a serious impression on my mind. Prof was really serious, and I became serious as well. I realized that many times when I failed or did not quite good, I instinctively found some 'lame' excuses rather than looking at my very self, and then, I couldn't become better, ‘coz eventually, I learnt nothing. Now, I really feel that I'm ready to blame myself in any situation rather than to finding any other 'lame' excuses. Speaking of this, it doesn't mean defenceless, seriously, when I must defend myself when I have a reason, I have my point of view to do, I will defend. It's just that I will look at myself first, seriously and truthfully finding excuse inside me, before seeing at the other.

Apply common sense.
I think this is one of the hardest stuff to absorb from prof. Regarding to his quarrel above, he did also mentioned that I should apply common sense, and if my common sense is low, my skill will also be quite low. Truthfully, I think prof is right, but it's not as easy to learn and apply common sense as to speak about that, plus the fact that common sense might be said to be cannot-be-taught, it's grown and built up by each person. It's quite sad to say that even now I don't have the feeling that I have learnt completely well about this problem, about applying common sense, or having a good foundation of common sense. But it's even sadder if I give up and leave this problem for now, which is but to say, even though now I don't think I have completely absorbed the idea about this problem, but I will give it more thoughts, try harder in the future, and I believe, eventually I can learn this to the fullest :-).

Do or do not, there is no try.
What is this connected to CS3216. Seriously, in my opinion, it does. I can see many of CS3216 people fail midterm and do not earn a very good grade at their other modules. What makes it so, what makes CS3216 so great a place that we want to contribute as much as we want? Basically, I think it's because CS3216 is a dream module for many people, a module they themselves decide what to learn, and what to do. Hmm, how to put my point clearly in this paragraph, I don't know, but basically, what I mean is that we cs3216 people are here to build our dream, to learn, to do stuff, not to try them. And do something well, or not at all. And we are here in this module, to do things damn well, and it is our choice. Actually it's partly in conflict with the idea of balance every module, which is also a good skill in life, but in my opinion, it's more right than wrong. So messy and abstract about this paragraph, sorry, I feel so as well.

Do the right thing.
One of the last quotation of prof in cs1101s, and in cs3216 as well. Life is all about choices, and one importance in that, is to 'do the right thing'. I think I understand what prof mean by this. Generally it's easier to not do the right thing, and even more, there’s generally a price for doing so. But 'no pain no gain, no sacrifice no win' (not absolutely) right?, by making the right decision, doing the right thing, you will gain more than lose (I believe, there's always things to learn, the problem is that whether you learn it or not), you will become stronger than if you do not do the right thing. And one more time, the choice is yours, to become strong or to be just fine, choose one for yourself, the latter is easier. For me, I want to become stronger.



Hmm. Let's end the final post here. Actually, what I wrote here is not really I have learnt in this module, but what is and will be left inside my very self now and beyond. To end the post, let's quote another great quotation cs1101s (and might be cs3216 as well) all know: "What doesn't kill you make you stronger". After going through CS3216, I believe many will become dramatically mature and stronger. :-). A really great module, perfect at least to my judgement.

Monday, January 11, 2010

CS3216 - Show-and-tell session, and my inequality articles

Today is the first lecture of CS3216, and I was very excited to attend the class.
Still, things will be lecture will be commented/blogged later, I'm very tired now, attending lecture for the whole afternoon and night, and not having yet. I'm here now cos there're some important things I have to do as soon as possible.

Today is the first lecture of CS3216, and one of the most special things in this lecture is the show-and-tell session. Still, I think of this session before, but I ended up finding myself have no particular talents or something like that to show off. Thus, at first I just intended that I would be only introduce about myself. However, to me, I'm not the only one in this situation. There's at least another one in the class, and fortunately, his turn was before mine. He was just talking about his blog. This gave me the idea of just introducing my articles in inequalities, which is just normal, but is my pride, representing for a long time learning Maths of mine, and also, one of the most wonderful and also craziest thing I've done so far, in my opinion. As it happened on the go, the inequality articles of mine wasn't post in my blog. So firstly, posting it is an important thing for me to do.

Secondly, there're some another thoughts about the show-and-tell session. People there were awesome, indeed. But those issues will be left to my later post. The thing I just want to mention here, is me :-). Actually, a bit disappointed about myself. My performance today was rather lame, I must admit. Truly, at first, maybe I was strongly impressed by the 'Wii ...' show-and-tell of the previous CS3216 in the past, that I thought that if I had to show something in the show-and-tell session, I must show something related to my role in the course, and even more, something really fantastic. And I could find nothing like that about myself, which is regretful to say. However, after the session today, I think that I was quite wrong. It's not a must for me to show something related to my role in the class, and even not something fantastic. I just have to show something, anything at all, tell anything I feel like, I think, but I have to truly show something. Truly, now when I'm thinking back, I think I could probably do some skating trick, or just playing the harmonica,..., even though I'm not good at them :-P. Still, it's better than doing nothing :-). Today was not good as my performance was rather poor, but still, it was good that I realized something. The next time, I will become better :).


A little off topic about inequalities. Back then, when I was in high school, grade 10, I went crazy and learnt almost no stuff at all in the curriculum (in Mathematics) (I didn't want to learn, I was a little bored). Instead, I chose what I want to learn, what I learnt myself, and I found inequalities interesting and decided to study a little deeply about it back then. It was not long before I had to come back to the school's curriculum, but the time I learnt inequalities was one of the most memorable moments of mine, and it was very fun and very happy. I was able to do something that is not a must for me to do, I learnt something that no one forced me to learn, but it is what I really, really wanted to learn. Why I mention it here? Because I think CS3216 is something partly like that, and now I really can't wait to learn CS3216 more and more.

Here comes my (and some friends, we worked together) articles. Actually, some of them hasn't been finished yet, I had some other ideas long after I finished them, but I was a little busy and haven't been able to manage time to update yet, and also, I am lazy :-P. Another interesting thing about these articles it that they are non-copied from any source. The idea was self-created :-). Actually, the idea for the first one is inspired, i.e. generalized, by a smart solution to one problem. But the point is that, if you learn Mathematics a little bit deeply, you will see that there's smart solution for many problems, which is short, and very clever; however, whether that solution can be generalized to become method is a different problem, and even if it can, how to generalize it might also become a problem. In addition, I also added some more techniques to the generalized method :-). Anyway, regretfully, now all my articles are kind of outdated already.

Here comes my articles.
Oh, LaTeX sucks here. I used PcTeX for typing my articles, and it's not well displayed here, so I think it's better to give link to download.


First article, the SOS-Schur method (now I think it's just a technique :-P )
http://www.mediafire.com/?izmuqtyylzl

Secone article, a useful technique in SOS and SOS-Schur method (sorry, this one is in Vietnamese, I didn't write an English version of this).
http://www.mediafire.com/?jyhymvndmmy

Final article, a method of solving 3-variable inequalities. Truthfully, this method can be done by hand, but actually it's computer-based, so normally the solution is ugly. But this one is quite strong.
http://www.mediafire.com/?1ntkx2mnzzm

Sunday, January 10, 2010

CS3216 - What do I hope to learn in CS3216

This blog is started cos blogging is kind of assignment in CS3216, a module I will be taking this semester. I'm not the kind of person like blogging, but still, it's not that I dislike it. Anyway, if this can help be become better, I will do it without hesitation.

The first and foremost reason why I take CS3216 is because of my brother's recommendation. Truly, without his recommendation, it is very likely that I would have ignore the email regarding to CS3216 in my email box, like many other emails. Secondly, it is also recommended and taught by my cool professor. In my opinion, what my prof recommend must be very interesting as well as useful. Furthermore, as I have just taken CS1101S last semester, a module which is also taught by my prof, I expect very much in this module. Then I began to read carefully and also find information on this module, and then, I started to like this module very much. Things ltaught in this module seems to be very, very interesting. Finally, an important factor that I decided to take this module is that I like challenge, and I want to get mature at any cost. The fact that a common reflection on this module is like 'workload is insane' not only doesn't make me give up but also makes me want to try harder, harder and harder. Also, to me, it's kind of "I would rather regret giving it a shot than not trying at all." - quoted from someone in CS1101S. Last but not least, "no pain no gain" right, "there's no free lunch", if I want to be mature, I must try hard, and CS3216 is a perfect environment to do so, and challenges or difficulties are just very useful ways to make and to force people to get mature, I think. "What doesn't kill you makes you stronger", my prof believes so, my friends believe so, and so do I.

What do I hope to learn in this module? Well, many things, especially when I myself is a programmer but also is not a programmer enough at this time, I can say. Why I call myself a programmer, because I'm currently COM1 student, and I like coding, programming very much. and I intend to become a programmer. But why I also call myself not a programmer enough instantaneously? The reason is very simple that I'm new, very new to the field of programming. I majored in Maths from class 6 up to class 12. And before NUS, I knew nothing, nothing at all, about programming. It was just that I like helping people, and I truly want to help people, and I think that computing is a very useful way to make my dream come true. Many useful application can be created in this field, which means that many people can be helped. Therefore, I choose computing. The result is that now I am here, present in CS3216 with a role of a programmer but my knowledge about programming has just been built in one semester, which is not significantly different from a non-programer's knowledge. However, I mention it here, only to mean that I must, and I will try harder, much much harder. Just so in CS3216.


What do I hope to learn? I think it's kind of better to list things.

Selling? Money? There's at least one reflection on this module which is like 'this module is all about selling and making money', kind of. But do I truly want to learn about selling money? Still, it is an important factor in life, but actually, it's not the very reason for me to make an application. I pay more attention to how my application can help people, or even change their life, what my application is used for, rather than some other issues such as how much I can gain by this application, how many people people use it. To me, an application that changes life of a single person , or just make a small group of people happy is more appreciated than an application that is just a normal relaxing way used by many people. Still, it's easier thought than said, and then than done. An application that changes life or kind of so is not easy to build, and not easy to think of, truly, but I still like this idea. Maybe this will be changed in the future, when my knowledge is larger or someone makes me change, but now, I still want to keep that thought. It is but to say, to me now, the criteria for me to build an application is firstly what and how it is used for, who will use it, and money and popularity only come after them. know the number of users is very important when building a large/big application, but I can only think carefully about this issue and maybe change my opinion later, when I find more information, knowledge about it, now I don't have enough information and knowledge yet. Anyway, it has been a little off topic. What I just want to state here is that money and selling is not the very first reason for me to build my application, but still, they are kind of important and are must-known things in life cos still, I have to live :), and also I have to advertise and sell my application, because if there's no users, then what is my application for? Truthfully and seriously, money is also important, and who can say that he doesn't want to make money at all? Me as well. But to me, it's not the first priority. The point is that I will try to make money with my application, not try to make application that earn me money.

Programming? Yes, truly, programming. Programming is one of the things I hope the most to learn in CS3216, and to raise my programming ability . Web programming, software engineering, ... Although CS3216 is not a module just about programming, but still, there are many things about programming to learn in CS3216. And now I can't wait to learn them.

Teamwork. Teamwork is a very important skill in life, cos only a person cannot dramatically changes the life, I think. And in CS3216, there's a lot of teamwork. Still, my teamwork skill is not very well, if not, even bad. I haven't done many team projects yet. For a few team projects in the past, my team even utterly failed due to many factors such as weak co-operating, weak organization. The rest are some projects I did together with very close friends of mine. We knew each other well before the work so it run rather smoothly. Truthfully, I only do team projects with new friends, kind of, a very few times before. But it only means that I will try very hard in CS3216 to improve myself and contribute to the team project, as usual :).

Let's discuss a little more about programing and teamwork. Actually, now I'm not skillful in programming as well as not good at teamwork. But what's the deal? To me, that's not the problem. The point is not that now I am weak, but is that I want, and I will try to become stronger. The problem is not that now I am not skillful and good enough, but is that I haven't learned yet, haven't seen the point, the idea yet. When I see the point and get it, I will rise rapidly, I believe.

Lastly,it's 'how to learn' in life, I think. If I'm not mistaken, prof describes this module not as a programming module but a life module, kind of. In this module, students will learn how to learn in life, how to survive in life. There will be skills about life taught in this module. Everyone will eventually get mature, but at which rate, which speed, and how, they all depend on each person and can vary greatly from people to people. I want to get mature as well. And I'm looking forward to learn many useful lessons in CS3216.

Still, there's an important thing to mention. Tomorrow is always a mystery. And life is not so simple that I can really know what I can learn, what I will learn in the future, i.e, in CS3216. In addition, isn't it kind of boring if I know very well :-P? The last thing I hope to learn in CS3216 is many things that I haven't hoped/known yet. There's things that people don't know that they don't know. Also, there's things that people want to learn but they don't know, they want or just haven't wanted yet, I think. Me as well. Possibly, eventually, after CS3216 there will be things I truly want to learn and am happy to be able to learn taught in CS3216 but I don't list here now. Maybe even more surprisingly, that in the end, the very best thing I learn in CS3216 lies nowhere but in these sentences.

I intended to ends here. But still, there's one more 'last' thing I must say. Simple. It's not just that I hope to learn, it's that I will try my very best to learn.