关于开源最终学位项目的建议

时间:2009-11-09 22:25:33

标签: algorithm

注意:我不完全确定这个问题是否真的属于StackOverflow,所以如果您不这样做,请随时投票支持结束。

在西班牙,当我们结束计算机科学学位时,我们必须进行最后的项目。该项目不能是微不足道的,可以涉及从软件工程到计算机体系结构的任何计算机领域,包括代码或不包括代码。

问题是我在解决问题方面相当擅长,但是找到它们却完全糟糕,也就是说,如果有人告诉我“解决这个问题”没问题,但我自己无法想象问题。

我使用专有开发工具来做专有软件而几乎没有使用开源组件,所以我认为“好的,对于尚未存在的开源社区有什么用处”......我根本不知道

有什么建议吗?什么都欢迎。虽然我更喜欢c#或php,但如果必须,我不会不愿意学习新的东西。

由于评论,该大学是:Facultad de Informática. Universidad Politécnica de Madrid.

感谢大家的回答。虽然我还没有完全决定(我不想急于进入任何项目)我真的很喜欢ROBOCODE项目的想法,尽管它在传统方式上并没有真正有用,但它听起来像是一个充满乐趣的乐趣。无论如何,我很感谢所有的建议。

17 个答案:

答案 0 :(得分:18)

为什么不查看Google Summer of Code website以前未执行过的项目。这些设计需要花费几个月的时间才能完成,并且与开源项目相关,并且是其他人认为有用的东西。

答案 1 :(得分:8)

帮助将Silverlight 3移植到Mono?我相信你可以找到一个特定的功能来实现作为一个独立的项目。这将对开源社区做出非常有用的贡献,并将深入探讨Silverlight框架的设计方式。

答案 2 :(得分:7)

我建议加入现有的开源项目。开始你自己可能很有趣,但它对开源社区可能没什么用处。人们不太可能加入你开始上学的项目,因为你毕业后可能会放弃它。帮助现有项目可以让您在没有长期承诺的情况下实现长期差异。

有许多适合您的PHP技能的开源项目:DrupalWordpress或任何Sunlight Labs项目。就个人而言,我喜欢Sunlight Labs,因为它们的目的不仅仅是创建软件(使政府更加开放和透明),而且组织看起来健康且不断发展。无论您选择哪个项目,都可以通过为活跃的开源项目做出贡献来解决问题。

答案 3 :(得分:5)

为什么不为ROBOCODE(搜索谷歌)设计和实现人工智能算法。您可以使用神经网络,聚类,粒子群优化......或其他更高级的算法。其中大多数都非常简单有效,只有命名听起来像是从星际迷航中获取的。

其他建议,现在很流行,将使用mashup:采用多种Web服务并通过制作好东西来组合它们。像http://globelogger.com/2008/05/timetube-awesom.html,这就是我所说的

答案 4 :(得分:4)

您可能想要做一些之前已经完成的事情,这样您就可以了解范围。您不必执行可重复使用/开源的操作,因为这只是最终项目。

  • 创建像seti online
  • 这样的分布式处理系统
  • 制作游戏。
  • 建立一个社交网站。
  • 为演示场景创建一个很酷的visualization

答案 5 :(得分:4)

我的建议是找一家当地的慈善机构,需要一些帮助来跟踪他们的财务/捐助者/等。与他们合作以确定他们的需求并开发应用程序以帮助他们解决问题。我看到了两个优点。首先,您将获得与真实客户及其需求合作的经验。其次,如果你成功了,你已经帮助了一些可能没有资源去完成他们所需要的人。

答案 6 :(得分:4)

重构Python的Tkinter GUI以消除其对TCL的依赖。这将涉及分配最新版本的TK,TCL project的一部分,然后用Python脚本替换TCL脚本的内部用法。该项目将用C语言编写。

最终结果将是适用于Windows,Macintosh和UNIX的Python TK GUI模块。所有的可移植性东西都已经存在于TKinter模块中,因此无法完成工作。相反,这将像脑外科一样,识别TK和TCL之间的所有联系,以便您可以重构为更简单的Python接口,或者用Python一对一替换TCL。

这需要学习TCL和Python以及可能编写一些工具来帮助您枚举TCL和TK之间的互连。在项目结束时,您还将吸收大量有关跨平台GUI的信息,即使您只获得其中一个平台作为学位的一部分。

最终目标是使此GUI成为默认的Python GUI,并使GUI的开发人员界面成为其他GUI前端的默认界面。例如,Jython开发人员无法使用此GUI,但如果您使接口干净且非特定于系统,那么有人可以在Java中编写使用SWING的PythonTK,而另一个组可以在使用Windows窗体的C#中编写PythonTK。

尽管大部分工作都在重构分叉的TK代码,但您需要仔细思考并研究暴露给Python程序员的对象模型,以最小化或消除任何系统特定区域。这可能还需要对TK代码进行一些重构工作。

答案 7 :(得分:3)

加入一些开源项目。 例如,Qooxdoo(http://qooxdoo.org)有一个非常好的社区,需要熟练的程序员。这是一个很好的Web应用程序框架。 或者你可以为像Ruby on Rails这样的大项目做出贡献。

如果您喜欢低级别(如接近硬件),您可以使用Gnu编译器集合。

如果您真的擅长算法,那么您可以为当前的许多并行编程问题开发解决方案。

这是一个很好的问题,如果你告诉我你喜欢什么样的编程,我很乐意详细说明。

到底是什么,我住在马德里,所以我们可以在一些酒吧见面并讨论它。

/ Gleb

答案 8 :(得分:3)

仅针对表格数据启动社区维基网站:国家/地区列表(名称,货币......),食物清单(名称,维生素,卡路里......),每个国家/地区的通胀统计数据,...用户创造的。允许用户创建查询并以他们喜欢的格式(csv,excel,xml,...)下载结果。 之后,创建一个Web服务,允许开源项目使用其产品中的数据。

答案 9 :(得分:2)

您也可以加入Robocode项目并实施一些非常重要的功能;-) Read thistalk to us

答案 10 :(得分:2)

您可以参与以下几个编码竞赛/论坛/理念网站:

答案 11 :(得分:2)

答案 12 :(得分:2)

开源分布式移动解决方案怎么样?既然移动设备已经获得了相当大的处理能力,那么如果你将这种功能与Byron的类似SETI的分布式系统理念结合起来将会更好。它也可以用于实际目的,例如在大型网格中收集GPS数据以发现并能够避开拥挤的道路和十字路口。

答案 13 :(得分:2)

+1来自我。我认为这是一个很好的问题。

我没有给你一个具体的答案,但为什么不把注意力转向寻找可能对慈善机构或发展中国家有用的东西呢?

慈善机构越来越依赖于筹集资金,管理物流等技术。 此外,在非洲,移动电话被大量用于提供简单的金融产品,使人们无法获得更传统的金融服务来买卖东西。

如果你有时间和愿望,做一些真正有益于世界的事情并获得很高的学位将是非常令人满意的..

丹尼尔。

答案 14 :(得分:1)

获取某些历史语言的规范(例如Algol60,Atlas Autocode,Coral 66)并通过转换为C实现完整的编译器;特别是随意使用一些GCC扩展,这使得使用嵌套过程,动态数组声明等更容易翻译这些块结构语言。由于难以将这些语言映射到标准,以前的尝试有些半心半意下进行。

答案 15 :(得分:1)

您还可以选择加入Linux内核开发社区。

答案 16 :(得分:0)

为适合Linux的图形编辑器打造坚实的基础。然后开源并让它成长。目前的选择是Gimp,这是非常糟糕的。而不是修复它或扩展它,开发一个具有强大核心并且可扩展的新项目。