① 哪裡有編程學習的網站
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.