现在正是毕业时节。我想有必要汇总一下计算机专业的学生在获得学位之前应该(单独)完成的10000件事情。碰巧的话,学生们在过去学过的课程中完成了其中的一部分。但可能大多数还没有被遇到过,所以学生们需要为这些课外实践空出时间。

这份清单是受别人启发,而正如标题所说,它是关于行动,而不是了解或者学习。第一手经验绝对是探索用电脑完成的有趣的事情的最有效方法。一旦我们成功使程序运行并且/或者克服困难超越了障碍,我们因此会获得极大的成就感。而且同时它也会帮助我们掌握自主解决问题的关键技能。

下面是这个清单,排名不分先后:

0000 - 购买自己的域名。

0001 - 安装Apache Web服务器,尝试用不同的方式配置,比如支持多个域名。

0010 - 安装WordPress,拥有自己的博客。经常写博客,并且写好。良好的写作技巧是掌握本专业的一个关键。

0011 - 在自己电脑上或者主机商那里搭建运行自己的网站。

0100 - 至少写一个完整的LAMP Web应用程序,最好是两个 —— 一个是P是PHP,另外一个是P是Python。

0101 - 拥有自己的(物理或虚拟)云服务器。

0110 - 安装VMWare或其他类似的虚拟机软件,给你的电脑安装多个操作系统。

0111 - 配置你的家庭DSL路由器,让你的电脑成为一个网站或者其他类型的服务器,可以通过朋友的电脑来访问。

1000 - 使用数据包嗅探器来了解您的计算机对你最喜爱的游戏服务器的网络请求。

1001 - 对开源项目做贡献。

1010 - 写一个应用程序,至少使用到一个流行的开放接口,如Facebook Connect或谷歌的各种API。

1011 - 在你的网站上使用谷歌的AdSense,并只凭吸引到的流量挣钱。

1100 - 从零开始编译一个复杂的开源项目,如OpenSim或Matterhorn。 (感谢肖恩)

1101 - 读文学作品,并且除了享受此过程外,密切关注作者是如何讲述这个故事和如何遣词造句的。你写的程序就应该像艺术作品一样! (感谢Beki)

1110 - 投入到一个需求不断变化的项目中——现实世界里99.99%的项目都符合这个条件,但可能只有0.01%的作业符合,所以去找一个现实世界的项目。耐心完成它,并尽力听取来自他人的建设性意见。(感谢洛林)

1111 - 使用Map-reduce架构写一个应用程序。在GAE或者亚马逊EC2上运行它。 (感谢伊恩)