① 哪里有编程学习的网站
1. CodeAcademy
最受欢迎的学习编程的网站之一就是CodeAcademy啦。事实上,已经有超过2400万人通过这个教育公司的迷人经验学习过如何编程,在CodeAcademy,通过上课你可以深入了解到从HTML&CSS、JavaScript、jQuery、PHP、python到Ruby的所有东西。
2. Coursera
创办于2012年,Coursera已经成长为一个以营利为目的的教育技术公司,它提供119个机构的超过1000个课程。虽然你可以支付某些程序来获得一个证书,但还是有免费的各种专门化编程的介绍课程,这些课程由各个大学提供,例如华盛顿大学、斯坦福大学、多伦多大学和范德比尔特大学。
3. edX
EdX是另一个开源非营利在线学习平台的代表。它是由哈佛大学和麻省理工学院在2012年创办的,在这里你会学到一些尖端技术和理论。如今,edX的加入者已经包括60所学校,你可能不会在这个免费的哈佛大学电脑课程介绍上走错。
4. Udemy
Udemy成立于2010年,是一个可以学习和提高职业技巧的在线学习平台。虽然有需要付费的课程,但也有大量通过视频课教授的免费编程课,比如为企业家量身打造的编程——HTML&CSS和Python编程介绍。
5. aGupieWare
AGupieWare是一个独立的应用程序开发商,它从美国的一些领导机构中调查计算机科学程序,后来它创办了一个由斯坦福大学、麻省理工学院、卡内基梅隆大学、伯克利大学和哥伦比亚大学提供的免费教程,这个项目之后被分成了15个课程:3个入门课程、7个核心课程和5个选修课。
尽管实际上你不会收到贷款,这仍然是一个为未来的计算机程序员准备的完美的介绍程序。
6. GitHub
有时你会被一个问题困住,需要翻看参考书,那就来找GitHub吧。你可以在基于web的Git存储库主机服务中,找到囊括80多种编程语言的超过500个免费的编程书。
7. MIT Open Courseware
如果你已经学过了基础知识,想学学更深层的知识,例如探索编程背后的理论。那就是MIT免费课件网站的优势了,它包括了例如电脑科学及编程、Java编程简介和C语言编程实例这些课程。
8. Hack.pledge()
这是一个开发者社区,包括一些像BitTorrent的创造者Bram Cohen这样的高知名度开发者。因此,你可以向世界上一些首席开发者学习,使你的编程能力变得完美无缺。
9. Code Avengers
总部在新西兰的Code Avengers提供有趣且互动的编程课,教你如何用JavaScript、HTML和CSS编游戏、应用程序和网站。每个课程仅在12小时内完成且有英语、俄语、荷兰语、西班牙语、意大利语、土耳其语和葡萄牙语版本。
10. Khan Academy
Khan Academy由教育家Salman Khan创办于2006年,是最原始的免费在线学习机构之一。通过一步步的视频教程,你可以学会如何用JavaScript和ProcessingJS编程图画、动画和游戏,还可以学会如何用HTML和CSS创建网站。
11. Free Food Camp
这里你可以通过加入社区的专业人士和学生学到HTML5、CSS3、JavaScript、Databases、DevTools、Node.js、Angular.js和Agile。你们甚至可以用编程技能在一起工作,这样就可以构建免费的应用程序。要记得这点:你正在学习的这些技能有助于解决实际问题,代码应该是非营利的。
12. HTML5 Rocks
这个Google project发布于2010年,是为了和苹果的HTML5对着干,这个网站满是教程、资源和最新版的HTLM5。它是开源的,所以开发者可以随意使用HTML5代码,而且因为它比大多数入门课程更先进,你可能想要在进入网站之前先学习一些基础知识和经验。
② Python动态规划算法预测RNA折叠(RNAfold)
RNA分子通过特定方式折叠形成结构,这与蛋白质分子类似。碱基对构成结构的基本单元,RNA分子内部形成碱基对。RNA结构可能包括以下碱基对:A-U、G-C、A-C、G-U。预测RNA二级结构的简化算法之一是Nussinov算法,本文将用Python实现此算法。
Nussinov算法是一种动态规划算法,通过递归计算最大碱基对数。算法使用一个矩阵来存储从子序列到子序列能形成的最大碱对数。动态规划矩阵D初始化为D[i][i]=0且所有位置均在RNA序列中。矩阵大小等于RNA序列长度的两倍。例如,RNA序列"AUG"对应D矩阵如下:
为了填充矩阵,需使用递归方法。在递归步骤中,未配对的核苷酸位于结构的两侧。如果位置i和j配对,则将上一个得分加到矩阵[D[i][j]]=max[D[i][j], D[i][j-1]+1, D[i-1][j]].不配对时[D[i][j]]=max[D[i][j], D[i][j-1], D[i-1][j]].回溯算法用于确定实际结构,从右上角开始回溯以找到获得最高碱基对数的步骤。
Python实现中,设计了RNAfold类来包装整个函数。创建了一个解析读取fasta文件的python类来读取序列。对功能进行了验证,使用较长序列进行检查,结果显示矩阵结果和折叠结构正确。
参考文献:Nussinov, R; Jacobson, A B (1980). "Fast algorithm for predicting the secondary structure of single-stranded RNA". Proceedings of the National Academy of Sciences of the United States of America.