2012年10月22日星期一
名人名言
The old computing is about what computers can do. The new computing is about
what people can do." - Ben Shneiderman
“Any sufficiently advanced technology is indistinguishable from magic.”
- Arthur C. Clarke
2012年10月19日星期五
如何在TopCoder上修炼?
转自Quora的解答,感同身受。自己过去10年没有修炼,现在开始十年之后是否可以真的突破现在的自己呢?!
Question:
Best answer:
Nikhil Garg, Solved some problems on Topcoder
Impatience is a vice, young Jedi. Let's take it slow, shall we?
And when you've been doing all this for a while, you're ready. Soon you'd find you're solving more and more div1-500 pointer problems. Practice is the key from now on.
What we (my ICPC team) did in particular was - maintained a spreadsheet of our Topcoder practice record. We decided to do div1-500 pointers of all matches from 300 onwards. So once you start a match, make sure to finish its problem, even if you've to see editorial after struggling for hours. Be persistent and don't give up.
How long do you take before you achieve your goal and how much time you must put in, these are highly subjective questions with no definite answer. It all varies on your speed and ability to grasp. I know it sounds cliche but believe me this is the only correct answer.
Good luck young Jedi, may the force be with you!
PS : You might also be interested in Pradeep George Mathias's answer to Algorithms: What is needed to become good algorithmist like top rankers in Topcoder/Spoj/GCJ?
Question:
How should I practice so that I will be at a level where I can approach TopCoder's Div1-500 problems with confidence?
EditBest answer:
Nikhil Garg, Solved some problems on Topcoder
Impatience is a vice, young Jedi. Let's take it slow, shall we?
- First thing, learn how to write a hello world program. This is the easiest part.
- Then start solving div2 easy level problems (250 points usually). They only test if you can translate the simplest of the ideas in code or not. Unless you can solve any such problem in score >= 240 on any given day, you just can't translate your ideas into code. Keep practicing.
- Now you know how to code a little. Time to learn some algorithms. Read Topcoder tutorials - they're an excellent resource - solve all problems linked. Read topcoder forums and get used to the ecosystem. Study some basic algorithm techniques like Dynamic Programming and divide-and-conquer. Study Graph Theory, some Combinatorics and some Number Theory too, all this while solving problems on Tocoder and elsewhere. You can find all the knowledge on internet easily.
- If you've reached this stage, you know how to write code and you know enough of basic algorithm theory. Topcoder div1-500 problems are often very tricky, before you start solving them, you should be able to solve div2 250, 500, 1000 and div1 250 point problems.
- Make sure you code everything. Solving a problem theoretically is nice and cool but don't stop there, code it and make sure it passes system test.
- Once it does, remove all the code and start from scratch. Re-write all code. Get it right in first go. See how much your time improves.
- Start reading codes of all the top guys - which basically means all reds and targets and several yellows too. These guys are smart and there is plenty you can learn from their code.
- Go through editorial of each problem that you solve (or can't solve). They often come with great insights and alternative solutions etc.
- Don't get used to solving easy problems. It's a common pitfall. Always solve problems tougher than what you can solve - that is how you learn.
And when you've been doing all this for a while, you're ready. Soon you'd find you're solving more and more div1-500 pointer problems. Practice is the key from now on.
What we (my ICPC team) did in particular was - maintained a spreadsheet of our Topcoder practice record. We decided to do div1-500 pointers of all matches from 300 onwards. So once you start a match, make sure to finish its problem, even if you've to see editorial after struggling for hours. Be persistent and don't give up.
How long do you take before you achieve your goal and how much time you must put in, these are highly subjective questions with no definite answer. It all varies on your speed and ability to grasp. I know it sounds cliche but believe me this is the only correct answer.
Good luck young Jedi, may the force be with you!
PS : You might also be interested in Pradeep George Mathias's answer to Algorithms: What is needed to become good algorithmist like top rankers in Topcoder/Spoj/GCJ?
大陆学生技能必备系列(一)
在大陆的学生,最重要的技能就是能够接触到“新世界”,越早越好。
在2012年10月17日的课堂上,我做了一个weibo点名调查:
最想访问的网站有哪三个?
大部分的同学的回答是facebook,twitter,youtube。
而新兴的服务比如Quaro,edX.org, nytimes以及台湾香港的网站,几乎没有人提到。
另一方面,即便是多次暗示,依然有人回答最想访问的网站是taobao,renren,baidu。
这些站点其实是任何人都可以在大陆访问的,没有任何访问的限制。
我猜测依旧这么回答的同学有2类,一类是真的不知道,另一类是表达“国内够用”干嘛要用国外服务的态度。
不管怎样,对于新世界,越早知道越好。
在课上教授如何配置goagent效果还不错,只要有一个人会了,就会很快有更多人掌握这门技术。
故此,在此处留下校园网可以访问的教程资源地址:
ftp://lsrcai@218.193.53.74/student/cs001/week5
里面有视频教程以及goagent的2.0.13版本。
对于成功访问www.facebook.com的同学,真的很想说:
欢迎来到新世界!
在2012年10月17日的课堂上,我做了一个weibo点名调查:
最想访问的网站有哪三个?
大部分的同学的回答是facebook,twitter,youtube。
而新兴的服务比如Quaro,edX.org, nytimes以及台湾香港的网站,几乎没有人提到。
另一方面,即便是多次暗示,依然有人回答最想访问的网站是taobao,renren,baidu。
这些站点其实是任何人都可以在大陆访问的,没有任何访问的限制。
我猜测依旧这么回答的同学有2类,一类是真的不知道,另一类是表达“国内够用”干嘛要用国外服务的态度。
不管怎样,对于新世界,越早知道越好。
在课上教授如何配置goagent效果还不错,只要有一个人会了,就会很快有更多人掌握这门技术。
故此,在此处留下校园网可以访问的教程资源地址:
ftp://lsrcai@218.193.53.74/student/cs001/week5
里面有视频教程以及goagent的2.0.13版本。
对于成功访问www.facebook.com的同学,真的很想说:
欢迎来到新世界!
2012年6月28日星期四
不靠谱的决策
计算机基础从今年开始,改为大一不授课,但提供一个“摸底考试”。
考试通过的同学,四年就不需要选修上计算机基础一级了。
对于大方向,这种改革有利有弊。
如果是学校上下一心一起努力,以培养学生为己任而做出的决定,那一定让很多人欣慰。
可惜,这种变化仅仅是因为:
学校搬校区到翔安(目前还是工地),工期即便赶工也来不及(批量制造危房中),然后甚至无法在校内安排所有的能够容纳学生的教室(行政办公宾馆招待所咖啡馆的都比教室多),而决定的对课程的删减。
这种无厘头,不靠谱的做事风格,就是那新一任官员,拍拍脑袋搞政绩折腾出来的。
这种自取灭亡的做事方法,在大陆高校逐渐普遍了起来,所以能这么闹腾的学校,估计也不会再持续太久的。
有一天,那不靠谱的会被淘汰,现在他们越不靠谱,只是加速了他们自己发育不良的速度。
而回到靠谱的轨迹上的日子,不久之后,定会到来。
考试通过的同学,四年就不需要选修上计算机基础一级了。
对于大方向,这种改革有利有弊。
如果是学校上下一心一起努力,以培养学生为己任而做出的决定,那一定让很多人欣慰。
可惜,这种变化仅仅是因为:
学校搬校区到翔安(目前还是工地),工期即便赶工也来不及(批量制造危房中),然后甚至无法在校内安排所有的能够容纳学生的教室(行政办公宾馆招待所咖啡馆的都比教室多),而决定的对课程的删减。
这种无厘头,不靠谱的做事风格,就是那新一任官员,拍拍脑袋搞政绩折腾出来的。
这种自取灭亡的做事方法,在大陆高校逐渐普遍了起来,所以能这么闹腾的学校,估计也不会再持续太久的。
有一天,那不靠谱的会被淘汰,现在他们越不靠谱,只是加速了他们自己发育不良的速度。
而回到靠谱的轨迹上的日子,不久之后,定会到来。
2012年5月21日星期一
计算机基础课程十年总结
恰逢明年,厦大从漳州校区全面撤离,学校为了拉动GDP,重新把扩招后数量庞大的人搬回本部和翔安新校区。而过去6年来回跨海奔波,在漳州的机房授课的方式,即将成为回忆,封入史册。
旧的去了,也得来点新的。
重新开启这个地盘,记录下自己的些许心得与思路。
2002--2012年,李胜睿教授的《计算机基础》,俗称计算机一级,已经从教授office软件变化为教授ideas。
遥想当年,授课的重点在于如何使用Microsoft的window系统以及其上的应用软件,顺带介绍计算机行业的知识,并且用上课的手段迫使一些人改变固有习惯以及思考方式。
而07年后,我开始以为制约大部分同学掌握真本事的是固有的思维方式与学习模式。那种与狼(网)共舞的概念,限制了他们对学习本质乃至学习本身的理解。
于是乎,我逐步在课堂内采用TED的视频精选,当代大师的讲座(Steve Jobs,Randy Pausch),以及BBC出品的获奖纪录片,来教授新时代依托新技术的学习模式。
其中包括,如何使用MIT的开放课程,耶鲁的开放课程,如何使用iTunes U。
在计算机技术方面,授课重点已经逐步淡化window平台,转而讨论OS X以及IOS,以及其上的App包括新兴的Moblie App行业。
日新月异的新科技,必然会带来颠覆性的授课模式。
未来会怎样,没有人知道。
唯一能确定的是,现在开始,从我变起。
订阅:
博文 (Atom)