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.