分类目录归档:大学

毕业设计

今天上午进行了毕业设计答辩,很顺利的结束了。这也意味着我大学生涯的最后一门课程的完成,马上就要毕业了。

我的毕业设计就是我做的 newsnavig.com 这个网站,题目取为《SNS网站的研究与实现》。虽然学的是数学,但导师并没有要求一定要和数学相关。一开始做这个项目并不是当作毕业设计来做的,纯粹是个人的兴趣。还有为了打法这学期无聊的时光,因为我在上学期的时候就把毕业设计完成了。是的,后来我把毕业设计改了,抛弃了原来的,重新写了一篇论文。当时自己是觉得这个项目更酷些,加上有的是时间。现在想想,确实如导师所说,这是一个不明智的决定。

Newsnavig 目前完成的只能说是个原型。开发使用的是流行的 LAMP (Linux + Apache + Mysql + Python) 组合,后台用的 Django 框架是现学的,在开始写代码前花了将近两周的时间去看官方英文文档。再加上初期设计不周,代码写的有点混乱,有时间的话准备彻底重构一次。前端用了 twitter 的 Bootstrap 框架,用起来还算顺手,几乎不用怎么去写 CSS 和 JS 就实现了一个看起来还算可以的界面,风格上借鉴了知乎和豆瓣。此外,还用到了 Memcached 用来缓存。

如果从产品或运营角度来说,Newsnavig 无疑是失败的,刚上线时在几个技术论坛发了链接,但带来的只是上百个僵尸帐号。为了让它看起来还没死掉,我每天也会发一些链接上去,主要是自己看 GR 时感觉好的文章。最初是想模仿 HackNews 和 Reddit, 加入社会化的特征,所以发布界面也类似。但通过自己的使用和写作论文时的一些思考,Newsnavig 和它们虽然都是网址分享,但还是很不同的东西。设想的 Newsnavig 使用场景是:看到一个不错的网页,顺手分享,顺便添加一些话题和评论。但现在交互太差了,一般情况下发布一条链接需要在两个网页之间切换数次进行复制粘贴。所以在下一版本中准备加入快速发布书签和浏览器插件。还准备把名字改了,更贴切的描述该网站,已经想好,暂不公布。

但把这个项目写成论文就有点麻烦了,本来准备详细写技术方面的东西。但技术这东西,写复杂了难,写简单了也难,还不如直接看代码。还有导师一再强调,论文要提取出科学问题,而不仅仅是解决一个普通的问题。所以在论文中提出了一个“协同过滤”的概念,当然这个名词不是我发明的。论文只用了不到三分之一的篇幅写了技术方面的东西。毕设论文就不公开了,感觉上面全是废话,至少有一半是复制粘贴过来的,很多来自维基百科,只是为了凑字数。如果你对 Newsnavig 感兴趣,直接看代码吧:https://github.com/haipome/Newsnavig 没打算做成开源项目,只是为了备份代码。

原来的比设项目是给一个空军工程大学的教授做一个数据分析软件,他和我的导师有合作关系。这个项目简单的说就是通过分析一些模拟飞行游戏 Lock On 的轨迹数据,计算得出一些关心的统计数据。软件要求能够批量的读入数据,图形化的界面展示。轨迹数据是文本文件,格式:http://lomac.strasoftware.com/tacview-flight-recordings.php 数据分析很简单,就是字符串的分析处理,再加上一些简单的高中物理知识。难点就在图形化的界面上,之前没有做过着方面的东西。最后用了 python 和 QT, 也是现学现用,做的还像个样子。当然,代码也是公开的:https://github.com/haipome/acmia

上午答辩过程中,五分钟陈述,然后三个评审老师只有一个老师问了一个很简单的问题,顺利通过。接下来坐等毕业了。

自学计算机的建议

本来是回复论坛上的求助,结果不小心写这么多,就单独贴在这发表了。

专业真的不是问题,如果你很喜欢计算机的话。计算机最终还是靠自去自学,去悟。

我也没什么好的建议,就是要多读书和写代码。读书要读好书,读大家推荐的,经过历史筛选的。在看一本书时,可以到豆瓣网上去看评论,太差就就还不如不读。代码当然要写,但分两种,一种是例子程序,一种是项目。我没参加过也没自己做过项目,主要是写了一些例子程序和实现了一些书上的算法。例子程序不必多写,只要掌握了理念就可以了。我上学期的时候实现了运筹学上的一些算法,当时挺自豪的,但现在看看那些程序太垃圾了:变量命名一团乱麻,全是一个字母表示,没有定义函数,一个main 到底,大量的重复代码,以至于自己都看不懂了。

其实我自学计算机也不久,从上学期才开始的。就是刚开始写了小程序,实现了一些算法,感觉挺有意思。就把大一的C 语言书翻出来又看了一遍。不满足就买了K&R,仔细的研读,接下来又看了几本C 语言的书。最后又把数据结构书翻出来看了一遍,感觉很简单,不知道当初学的时候为什么感觉那么难。

再接下来就不只是兴趣了,开始了系统的学习。看了一些操作系统方面的书,寒假学习了Python, 然后这学期开始才开始大量看书的。看书要有规划和计划,规划就是看什么书,最好自己买,这样在遇到困难时不会那么轻易的跳过(不然太浪费了)。我的计划是每天某本书读一章或读多少页,这样一本很厚的书没多久就看完了,很有自豪感。计算机方面书书看不太懂或记不住不用管,有个具体印象就好,用到了再回来翻书印象很深。

不盲目的追求新技术,新语言,学习阶段主要学习的是方法。也不要盲目的看别人学什么你就学什么,比如如果你准备做后台开发你就不要去花大量的时间MFC 之类的图形库。现在计算机分得很细,要有自己的目标和方向。编程语言要多学几种,并且是不同种类的,有句话说:当你只有一把锤子时,看什么都像钉子。

要注重基础知识,大公司招聘的时候主要还是看你的基础知识:C ,数据结构与算法,操作系统,系统结构之类的。经常多看多回顾。

还有就是追踪业界动向。我平时主要用google reader 订阅各种网站,博客,每天花大量时间去阅读。还有微博的消息很快也挺有意思。

最后就是要处理好和本专业的关系。我个人这学期处理的不太好,所以就没什么经验了。

大学是个什么玩意

那天走在放学的路上,惬意的看着学校的花花草草,很美,很漂亮。新校区启用的时间不太久,很多建筑包括图书馆都未建或正在建造中!因此校园里的植物种类虽很多,但都还很小,天热的时候连个树荫都没有。我在想,也许再过个一二十年,我在回来看时,学校应该就像个样子了。我这个人就是这样,经常的幻想!不过,多年后再回到自己的大学校园看看应该是一件很美好的事情吧!看看自己曾经呆了四年的校园,勾起美好的回忆!可我突然发现一件很悲哀的事情就:除了这些建筑啊树啊草啊什么的,等我再次回来还能看什么,我连一个蹭饭的地都没有,如果我的大学生活继续这样下去的话!

在大学里呆了两年了,我发现除了上课之外,我没有见到过老师。两年了,我不认识一个老师,哦,不对,应该是没有一个老师认识我!我上的课都是一百多人一块上的,除了某个人特别优秀,或者特爱找老师答疑的人之外,像我这样的大多数是不会给老师留下任何印象的!班主任?笑话!还真和高中时老师说的那样,一学期见不到一次!辅导员就更不能难为了,一个人管三百多号人呢!这就是所谓的大学!感觉我们就像流水线上的商品,在这里经过一道又一道的标准程序,被加工成类似的成品!和以前的同学交流,发现我们面对着同样的问题!突然感觉自己当初那么拼命的高考没有什么意义!所谓的重点大学,普通大学,甚至是专科,有什么区别呢?只是人们的称呼不同罢了! 大学扩招的恶果就是师生的比例严重的不协调,学生得不到应有的人文关怀!只能按照标准的模子走下去!真的很悲哀,对今天中国的大学教育!