『壹』 計算機科學的「兩本聖經」是什麼
第一本:《演算法導論》原書名——《Introction to Algorithms》,
第二本:高德納(Donald E.Knuth)的《計算機程序設計藝術》(《The Art Of Computer Programming》)
計算機科學是一門包含各種各樣與計算和信息處理相關主題的系統學科,從抽象的演算法分析、形式化語法等等,到更具體的主題如編程語言、程序設計、軟體和硬體等。計算機科學分為理論計算機科學和實驗計算機科學兩個部分。
(1)計算機程序設計藝術演算法導論擴展閱讀:
研究課題
①、計算機程序能做什麼和不能做什麼(可計算性);
②、如何使程序更高效的執行特定任務(演算法和復雜性理論);
③、程序如何存取不同類型的數據(數據結構和資料庫);
④、程序如何顯得更具有智能(人工智慧);
⑤、人類如何與程序溝通(人機互動和人機界面)。
相關獎項
計算機科學領域的最高榮譽是ACM設立的圖靈獎,被譽為是計算機科學的諾貝爾獎。它的獲得者都是本領域最為出色的科學家和先驅。華人中首獲圖靈獎的是姚期智先生.他於2000年以其對計算理論做出的諸多「根本性的、意義重大的」貢獻而獲得這一崇高榮譽。
專業介紹
培養目標
本專業培養德、智、體全面發展,具有計算機應用技術的基礎理論知識,具備計算機及相關設備的維護與維修、行業應用軟體、平面圖像處理、廣告設計製作、動畫製作、計算機網路及網站建設與管理、資料庫管理與維護等應用能力和操作能力的高等技術應用性人才。
計算機應用基礎、計算機組裝與維護、計算機區域網絡的建設與管理、網路工程、操作系統、伺服器、資料庫的開發與應用、網站建設與網頁設計、C/C++語言、Visual Basic語言、平面設計、3D圖形設計、多媒體設計、專業英語。
就業方向
畢業生主要面向交通系統各單位、交通信息化與電子政務建設與應用部門、各類計算機專業化公司、廣告設計製作公司、汽車營銷技術服務等從事IT行業工作。
參考資料:網路-計算機科學
『貳』 計算機科學的「兩本聖經」是什麼
科曼的《演算法導論》和高德納的《計算機程序設計藝術》被稱為計算機科學的兩本經典著作,被業界戲稱為「兩本聖經」
科曼的《演算法導論》這本書深入淺出,全面地介紹了計算機演算法。對每一個演算法的分析既易於理解又十分有趣,並保持了數學嚴謹性。涵蓋的內容有:演算法在計算中的作用,概率分析和隨機演算法的介紹。
《演算法導論》書中專門討論了線性規劃,介紹了動態規劃的兩個應用,隨機化和線性規劃技術的近似演算法等,還有有關遞歸求解、快速排序中用到的劃分方法與期望線性時間順序統計演算法,以及對貪心演算法元素的討論。
高德納的《計算機程序設計藝術》這本書結合大量數學知識,分析不同應用領域中的各種演算法,研究演算法的復雜性,即演算法的時間、空間效率,探討各種適用演算法等,其理論和實踐價值得到了全世界計算機工作者的公認。
(2)計算機程序設計藝術演算法導論擴展閱讀
《演算法導論》自第一版出版以來,已經成為世界范圍內廣泛使用的大學教材和專業人員的標准參考手冊。本書全面論述了演算法的內容,從一定深度上涵蓋了演算法的諸多方面,同時其講授和分析方法又兼顧了各個層次讀者的接受能力。
《演算法導論》所有演算法都是用英文和偽碼描述,使具備初步編程經驗的人也可讀懂。全書講解通俗易懂,且不失深度和數學上的嚴謹性。第二版增加了新的章節,如演算法作用、概率分析與隨機演算法、線性編程等,幾乎對第一版的各個部分都作了大量修訂。
《計算機程序設計藝術》書中引入的許多術語、得到的許多結論都變成了計算機領域的標准術語和被廣泛引用的結果。另外,作者對有關領域的科學發展史也有深入研究,因此本書介紹眾多研究成果的同時,也對其歷史淵源和發展過程做了很好的介紹,這種特色在全球科學著作中是不多見的。
參考資料網路--計算機科學
網路--計算機程序設計藝術
網路--演算法導論
『叄』 要成為一名專業的程序員,從零開始需要怎麼一步步來比較好,要把最底層的先學精通嗎(個人認為)求學長
前言
你是否覺得自己從學校畢業的時候只做過小玩具一樣的程序?走入職場後哪怕沒有什麼經驗也可以把以下這些課外練習走一遍(朋友的抱怨:學校課程總是從理論出發,作業項目都看不出有什麼實際作用,不如從工作中的需求出發)
建議:
不要亂買書,不要亂追新技術新名詞,基礎的東西經過很長時間積累而且還會在未來至少10年通用。
回顧一下歷史,看看歷史上時間線上技術的發展,你才能明白明天會是什麼樣。
一定要動手,例子不管多麼簡單,建議至少自己手敲一遍看看是否理解了里頭的細枝末節。
一定要學會思考,思考為什麼要這樣,而不是那樣。還要舉一反三地思考。
註:你也許會很奇怪為什麼下面的東西很偏Unix/linux,這是因為我覺得Windows下的編程可能會在未來很沒有前途,原因如下:
現在的用戶界面幾乎被兩個東西主宰了,1)Web,2)移動設備iOS或android。Windows的圖形界面不吃香了。
越來越多的企業在用成本低性能高的Linux和各種開源技術來構架其系統,Windows的成本太高了。
微軟的東西變得太快了,很不持久,他們完全是在玩弄程序員。詳情參見《Windows編程革命史》
所以,我個人認為以後的趨勢是前端是Web+移動,後端是Linux+開源。開發這邊基本上沒Windows什麼事。
啟蒙入門
1、 學習一門腳本語言,例如python/Ruby
可以讓你擺脫對底層語言的恐懼感,腳本語言可以讓你很快開發出能用得上的小程序。實踐項目:
處理文本文件,或者csv (關鍵詞 python csv, python open, python sys) 讀一個本地文件,逐行處理(例如 word count,或者處理log)
遍歷本地文件系統 (sys, os, path),例如寫一個程序統計一個目錄下所有文件大小並按各種條件排序並保存結果
跟資料庫打交道 (python sqlite),寫一個小腳本統計資料庫里條目數量
學會用各種print之類簡單粗暴的方式進行調試
學會用Google (phrase, domain, use reader to follow tech blogs)
為什麼要學腳本語言,因為他們實在是太方便了,很多時候我們需要寫點小工具或是腳本來幫我們解決問題,你就會發現正規的編程語言太難用了。
2、 用熟一種程序員的編輯器(不是IDE) 和一些基本工具
Vim / Emacs / Notepad++,學會如何配置代碼補全,外觀,外部命令等。
Source Insight (或 ctag)
使用這些東西不是為了Cool,而是這些編輯器在查看、修改代碼/配置文章/日誌會更快更有效率。
3、 熟悉Unix/Linux Shell和常見的命令行
如果你用windows,至少學會用虛擬機里的linux, vmware player是免費的,裝個Ubuntu吧
一定要少用少用圖形界面。
學會使用man來查看幫助
文件系統結構和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
學會使用一些文本操作命令 sed/awk/grep/tail/less/more …
學會使用一些管理命令 ps/top/lsof/netstat/kill/tcpmp/iptables/dd…
了解/etc目錄下的各種配置文章,學會查看/var/log下的系統日誌,以及/proc下的系統運行信息
了解正則表達式,使用正則表達式來查找文件。
對於程序員來說Unix/Linux比Windows簡單多了。(參看我四年前CSDN的博文《其實Unix很簡單》)學會使用Unix/Linux你會發現圖形界面在某些時候實在是太難用了,相當地相當地降低工作效率。
4、 學習Web基礎(HTML/CSS/JS) + 伺服器端技術 (LAMP)
未來必然是Web的世界,學習WEB基礎的最佳網站是W3School。
學習HTML基本語法
學習CSS如何選中HTML元素並應用一些基本樣式(關鍵詞:box model)
學會用 Firefox + Firebug 或 chrome 查看你覺得很炫的網頁結構,並動態修改。
學習使用javascript操縱HTML元件。理解DOM和動態網頁(Dynamic HTML: The Definitive Reference, 3rd Edition - O'Reilly Media) 網上有免費的章節,足夠用了。或參看 DOM 。
學會用 Firefox + Firebug 或 chrome 調試Javascript代碼(設置斷點,查看變數,性能,控制台等)
在一台機器上配置Apache 或 Nginx
學習php,讓後台PHP和前台HTML進行數據交互,對伺服器相應瀏覽器請求形成初步認識。實現一個表單提交和反顯的功能。
把PHP連接本地或者遠程資料庫 MySQL(MySQL 和 SQL現學現用夠了)
跟完一個名校的網路編程課程(例如:http://www.stanford.e/~ouster/cgi-bin/cs142-fall10/index.php ) 不要覺得需要多於一學期時間,大學生是全職一學期選3-5門課,你業余時間一定可以跟上
學習一個javascript庫(例如jQuery 或 ExtJS)+ Ajax (非同步讀入一個伺服器端圖片或者資料庫內容)+JSON數據格式。
HTTP: The Definitive Guide 讀完前4章你就明白你每天上網用瀏覽器的時候發生的事情了(proxy, gateway, browsers)
做個小網站(例如:一個小的留言板,支持用戶登錄,Cookie/Session,增、刪、改、查,上傳圖片附件,分頁顯示)
買個域名,租個空間,做個自己的網站。
進階加深
1、 C語言和操作系統調用
重新學C語言,理解指針和內存模型,用C語言實現一下各種經典的演算法和數據結構。推薦《計算機程序設計藝術》、《演算法導論》和《編程珠璣》。
學習(麻省理工免費課程)計算機科學和編程導論
學習(麻省理工免費課程)C語言內存管理
學習Unix/Linux系統調用(Unix高級環境編程),,了解系統層面的東西。
用這些系統知識操作一下文件系統,用戶(實現一個可以拷貝目錄樹的小程序)
用fork/wait/waitpid寫一個多進程的程序,用pthread寫一個多線程帶同步或互斥的程序。多進程多進程購票的程序。
用signal/kill/raise/alarm/pause/sigprocmask實現一個多進程間的信號量通信的程序。
學會使用gcc和gdb來編程和調試程序(參看我的《用gdb調試程序》)
學會使用makefile來編譯程序。(參看我的《跟我一起寫makefile》)
IPC和Socket的東西可以放到高級中來實踐。
學習Windows SDK編程(Windows 程序設計 ,MFC程序設計)
寫一個窗口,了解WinMain/WinProcere,以及Windows的消息機制。
寫一些程序來操作Windows SDK中的資源文件或是各種圖形控制項,以及作圖的編程。
學習如何使用MSDN查看相關的SDK函數,各種WM_消息以及一些常式。
這本書中有很多常式,在實踐中請不要照抄,試著自己寫一個自己的常式。
不用太多於精通這些東西,因為GUI正在被Web取代,主要是了解一下Windows 圖形界面的編程。@virushuo 說:「 我覺得GUI確實不那麼熱門了,但充分理解GUI工作原理是很重要的。包括移動設備開發,如果沒有基礎知識仍然很吃力。或者說移動設備開發必須理解GUI工作,或者在win那邊學,或者在mac/iOS上學」。
2、學習Java
Java 的學習主要是看經典的Core Java 《Java 核心技術編程》和《Java編程思想》(有兩卷,我僅鏈了第一卷,足夠了,因為Java的圖形界面了解就可以了)
學習JDK,學會查閱Java API Doc Java Platform SE 6
了解一下Java這種虛擬機語言和C和Python語言在編譯和執行上的差別。從C、Java、Python思考一下「跨平台」這種技術。
學會使用IDE Eclipse,使用Eclipse 編譯,調試和開發Java程序。
建一個Tomcat的網站,嘗試一下JSP/Servlet/JDBC/MySQL的Web開發。把前面所說的那個PHP的小項目試著用JSP和Servlet實現一下。
3、Web的安全與架構
學習HTML5,網上有很多很多教程,以前酷殼也介紹過很多,我在這里就不羅列了。
學習Web開發的安全問題(參考新浪微博被攻擊的這個事,以及Ruby的這篇文章)
學習HTTP Server的rewrite機制,Nginx的反向代理機制,fast-cgi(如:PHP-FPM)
學習Web的靜態頁面緩存技術。
學習Web的非同步工作流處理,數據Cache,數據分區,負載均衡,水平擴展的構架。
實踐任務:
使用HTML5的canvas 製作一些Web動畫。
嘗試在前面開發過的那個Web應用中進行SQL注入,JS注入,以及XSS攻擊。
把前面開發過的那個Web應用改成構造在Nginx + PHP-FPM + 靜態頁面緩存的網站
4、學習關系型資料庫
你可以安裝MSSQLServer或MySQL來學習資料庫。
學習教科書里資料庫設計的那幾個範式,1NF,2NF,3NF,……
學習資料庫的存過,觸發器,視圖,建索引,游標等。
學習SQL語句,明白表連接的各種概念(參看《SQL Join的圖示》)
學習如何優化資料庫查詢(參看《MySQL的優化》)
實踐任務:設計一個論壇的資料庫,至少滿足3NF,使用SQL語句查詢本周,本月的最新文章,評論最多的文章,最活躍用戶。
5、一些開發工具
學會使用SVN或Git來管理程序版本。
學會使用JUnit來對Java進行單元測試。
學習C語言和Java語言的coding standard 或 coding guideline。(我N年前寫過一篇關C語言非常簡單的文章——《編程修養》,這樣的東西你可以上網查一下,一大堆)。
推薦閱讀《代碼大全》《重構》《代碼整潔之道》
高級深入
1、C++ / Java 和面向對象
我個人以為學好C++,Java也就是舉手之勞。但是C++的學習曲線相當的陡。不過,我覺得C++是最需要學好的語言了。參看兩篇趣文「C++學習信心圖」 和「21天學好C++」
學習(麻省理工免費課程)C++面向對象編程
讀我的 「如何學好C++」中所推薦的那些書至少兩遍以上(如果你對C++的理解能夠深入到像我所寫的《C++虛函數表解析》或是《C++對象內存存局(上)(下)》,或是《C/C++返回內部靜態成員的陷阱》那就非常不錯了)
然後反思為什麼C++要干成這樣,Java則不是?你一定要學會對比C++和Java的不同。比如,Java中的初始化,垃圾回收,介面,異常,虛函數,等等。
實踐任務:
用C++實現一個BigInt,支持128位的整形的加減乘除的操作。
用C++封裝一個數據結構的容量,比如hash table。
用C++封裝並實現一個智能指針(一定要使用模板)。
《設計模式》必需一讀,兩遍以上,思考一下,這23個模式的應用場景。主要是兩點:1)鍾愛組合而不是繼承,2)鍾愛介面而不是實現。(也推薦《深入淺出設計模式》)
實踐任務:
使用工廠模式實現一個內存池。
使用策略模式製做一個類其可以把文本文件進行左對齊,右對齊和中對齊。
使用命令模式實現一個命令行計算器,並支持undo和redo。
使用修飾模式實現一個酒店的房間價格訂價策略——旺季,服務,VIP、旅行團、等影響價格的因素。
學習STL的用法和其設計概念 - 容器,演算法,迭代器,函數子。如果可能,請讀一下其源碼。
實踐任務:嘗試使用面向對象、STL,設計模式、和WindowsSDK圖形編程的各種技能
做一個貪吃蛇或是俄羅斯方塊的游戲。支持不同的級別和難度。
做一個文件瀏覽器,可以瀏覽目錄下的文件,並可以對不同的文件有不同的操作,文本文件可以打開編輯,執行文件則執行之,mp3或avi文件可以播放,圖片文件可以展示圖片。
學習C++的一些類庫的設計,如: MFC(看看候捷老師的《深入淺出MFC》) ,Boost, ACE, CPPUnit,STL (STL可能會太難了,但是如果你能了解其中的設計模式和設計那就太好了,如果你能深入到我寫的《STL string類的寫時拷貝技術》那就非常不錯了,ACE需要很強在的系統知識,參見後面的「加強對系統的了解」)
Java是真正的面向對象的語言,Java的設計模式多得不能再多,也是用來學習面向對象的設計模式的最佳語言了(參看Java中的設計模式)。
推薦閱讀《Effective Java》 and 《Java解惑》
學習Java的框架,Java的框架也是多,如Spring, Hibernate,Struts 等等,主要是學習Java的設計,如IoC等。
Java的技術也是爛多,重點學習J2EE架構以及JMS, RMI, 等消息傳遞和遠程調用的技術。
學習使用Java做Web Service (官方教程在這里)
實踐任務: 嘗試在Spring或Hibernate框架下構建一個有網路的Web Service的遠程調用程序,並可以在兩個Service中通過JMS傳遞消息。
C++和Java都不是能在短時間內能學好的,C++玩是的深,Java玩的是廣,我建議兩者選一個。我個人的學習經歷是:
深究C++(我深究C/C++了十來年了)
學習Java的各種設計模式。
2、加強系統了解
重要閱讀下面的幾本書:
《Unix編程藝術》了解Unix系統領域中的設計和開發哲學、思想文化體系、原則與經驗。你一定會有一種醍醐灌頂的感覺。
《Unix網路編程卷1,套接字》這是一本看完你就明白網路編程的書。重要注意TCP、UDP,以及多路復用的系統調用select/poll/epoll的差別。
《TCP/IP詳解 卷1:協議》- 這是一本看完後你就可以當網路黑客的書。了解乙太網的的運作原理,了解TCP/IP的協議,運作原理以及如何TCP的調優。
實踐任務:
理解什麼是阻塞(同步IO),非阻塞(非同步IO),多路復用(select, poll, epoll)的IO技術。
寫一個網路聊天程序,有聊天伺服器和多個聊天客戶端(服務端用UDP對部分或所有的的聊天客戶端進Multicast或Broadcast)。
寫一個簡易的HTTP伺服器。
《Unix網路編程卷2,進程間通信》信號量,管道,共享內存,消息等各種IPC…… 這些技術好像有點老掉牙了,不過還是值得了解。
實踐任務:
主要實踐各種IPC進程序通信的方法。
嘗試寫一個管道程序,父子進程通過管道交換數據。
嘗試寫一個共享內存的程序,兩個進程通過共享內存交換一個C的結構體數組。
學習《Windows核心編程》一書。把CreateProcess,Windows線程、線程調度、線程同步(Event, 信號量,互斥量)、非同步I/O,內存管理,DLL,這幾大塊搞精通。
實踐任務:使用CreateProcess啟動一個記事本或IE,並監控該程序的運行。把前面寫過的那個簡易的HTTP服務用線程池實現一下。寫一個DLL的鉤子程序監控指定窗口的關閉事件,或是記錄某個窗口的按鍵。
有了多線程、多進程通信,TCP/IP,套接字,C++和設計模式的基本,你可以研究一下ACE了。使用ACE重寫上述的聊天程序和HTTP伺服器(帶線程池)
實踐任務:通過以上的所有知識,嘗試
寫一個服務端給客戶端傳大文件,要求把100M的帶寬用到80%以上。(注意,磁碟I/O和網路I/O可能會很有問題,想一想怎麼解決,另外,請注意網路傳輸最大單元MTU)
了解BT下載的工作原理,用多進程的方式模擬BT下載的原理。
3、系統架構
負載均衡。HASH式的,純動態式的。(可以到Google學術里搜一些關於負載均衡的文章讀讀)
多層分布式系統 – 客戶端服務結點層、計算結點層、數據cache層,數據層。J2EE是經典的多層結構。
CDN系統 – 就近訪問,內容邊緣化。
P2P式系統,研究一下BT和電驢的演算法。比如:DHT演算法。
伺服器備份,雙機備份系統(Live-Standby和Live-Live系統),兩台機器如何通過心跳監測對方?集群主結點備份。
虛擬化技術,使用這個技術,可以把操作系統當應用程序一下切換或重新配置和部署。
學習Thrift,二進制的高性能的通訊中間件,支持數據(對象)序列化和多種類型的RPC服務。
學習Hadoop。Hadoop框架中最核心的設計就是:MapRece和HDFS。MapRece的思想是由Google的一篇論文所提及而被廣為流傳的,簡單的一句話解釋MapRece就是「任務的分解與結果的匯總」。HDFS是Hadoop分布式文件系統(Hadoop Distributed File System)的縮寫,為分布式計算存儲提供了底層支持。
了解NoSQL資料庫(有人說可能是一個過渡炒作的技術),不過因為超大規模以及高並發的純動態型網站日漸成為主流,而SNS類網站在數據存取過程中有著實時性等剛性需求,這使得目前NoSQL資料庫慢慢成了人們所關注的焦點,並大有成為取代關系型資料庫而成為未來主流數據存儲模式的趨勢。當前NoSQL資料庫很多,大部分都是開源的,其中比較知名的有:MemcacheDB、Redis、Tokyo Cabinet(升級版為Kyoto Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。
『肆』 計算機三大聖經指什麼
一演算法導論
全書選材經典,內容豐富,結構合理,邏輯清晰,對本科生的數據結構課程和,研究生的演算法課程,都是非常實用的教材,在IT專業人員的職業生涯中,本書也是一本案頭必備的參考書,或者工程實踐手冊。
二計算機程序設計藝術
本書結合大量數學知識,分析不同應用領域中的各種演算法,研究演算法的復雜性及演算法的時間,空間效率,探討各種適用演算法等,其理論和實踐價值得到了全世界,計算機工作者的公認。
三計算機操作系統
本教材對傳統操作系統,和現代操作系統均作了較為全面的介紹,比如OS引論進程描述與控制,存儲器管理虛擬存儲器輸入輸出系統,文件系統。
『伍』 程序員的 職業素養
程序員因其致力於程序開發、設計、維護、編程等這一特殊領域,使其天生具備了堅定的職業信念、超強的職業知識技能、良好的職業行為習慣等職業素養。
簡介:
程序員(英文Programmer)是從事程序開發、維護的專業人員。一般將程序員分為程序設計人員和程序編碼人員,但兩者的界限並不非常清楚,特別是在中國。軟體從業人員分為初級程序員、高級程序員、系統分析員,系統架構師,測試工程師五大類。
崗位職責:
1、對項目經理負責,負責軟體項目的詳細設計、編碼和內部測試的組織實施,對小型軟體項目兼任系統分析工作,完成分配項目的實施和技術支持工作。
2、協助項目經理和相關人員同客戶進行溝通,保持良好的客戶關系。
3、參與需求調研、項目可行性分析、技術可行性分析和需求分析。
4、熟悉並熟練掌握交付軟體部開發的軟體項目的相關軟體技術。
5、負責向項目經理及時反饋軟體開發中的情況,並根據實際情況提出改進建議。
6、參與軟體開發和維護過程中重大技術問題的解決,參與軟體首次安裝調試、數據割接、用戶培訓和項目推廣。
7、負責相關技術文檔的擬訂。
8、負責對業務領域內的技術發展動態進行分析研究。
職業認證:
考試介紹:
軟考程序員考試屬於計算機軟體水平考試(簡稱軟考)中的一個初級計算機職稱考試。對於軟考程序員考試並無學歷及資歷條件限制,更無論年齡、專業與資歷。一年可報考軟考程序員考試兩次,但一次考試只能報考一種資格,因此報考了程序員考試則無法再報考軟考其他級別或科目的考試。同時軟考程序員考試採用筆試形式,考試實行全國統一大綱、統一試題、統一時間、統一標准、統一證書的考試方式。
通過國家統一組織的考試,資格考試分為:程序員級(原初級程序員)、軟體設計師(原高級程序員)以及更高水準的:信息系統項目管理師、系統分析師(原系統分析員)、系統架構設計師、網路規劃設計師、系統規劃與管理師。
考試目標:
通過本考試的合格人員能根據軟體開發項目管理和軟體工程的要求,按照程序設計規格說明書編制並調試程序,寫出程序的相應文檔,產生符合標准規范的、實現設計要求的、能正確可靠運行的程序;具有助理工程師(或技術員)的實際工作能力和業務水平。
1、CVEQC認證持有者已經通過了中國職業教育資格認證指導中心組織的培訓和相應的考試,具有相應的專業技能和知識。
2、CVEQC證書可作為勞動者崗前培訓、在職培訓、提高培訓、繼續教育的培訓認證;也是勞動者「先培訓、後就業,先培訓、後上崗」的憑證。
3、CVEQC證書是中國職業教育資格認證指導中心頒發的專業技能證書。標有證書序列號、證書編號、培訓者及證書持有者身份證號碼,並蓋有全國職業教育管理委員會、中國職業教育資格認證指導中心的證書專用章。
4、 證書證明參加培訓及證書持有者具有系統地接受崗位技能培訓的經歷,證書在全國范圍內有效。
二、報考條件:凡遵守中華人民共和國憲法和各項法律,恪守職業道德,具有一定計算機技術應用能力的人員,均可根據本人情況報名參加相應專業類別、級別的考試。[1]
考試要求:
(1)掌握數據及其轉換、數據的機內表示、算術和邏輯運算,以及相關的應用數學基礎知識;
(2)理解計算機的組成以及各主要部件的性能指標;
(3)掌握操作系統、程序設計語言的基礎知識;
(4)熟練掌握計算機常用辦公軟體的基本操作方法;
(5)熟練掌握基本數據結構和常用演算法;
(6)熟練掌握C程序設計語言,以及C++、Java、Visual Basic中的一種程序設計語言;
(7)熟悉資料庫、網路和多媒體的基礎知識;
(8)掌握軟體工程的基礎知識,了解軟體過程基本知識、軟體開發項目管理的常識;
(9)了解常用信息技術標准、安全性,以及有關法律、法規的基本知識;
(10)了解信息化、計算機應用的基礎知識;
(11)正確閱讀和理解計算機領域的簡單英文資料。
相關書籍:
很多程序員響應,他們在推薦時也寫下自己的評語。 以前就有國內網友介紹這個程序員書單,不過都是推薦數 Top 9的書。
其實除了前9本之外,推薦數前30左右的書籍都算經典,筆者整理編譯這個問答貼,同時摘譯部分推薦人的評語。
下面就按照各本書的推薦數排列。
1、《代碼大全》 史蒂夫·邁克康奈爾
2、《程序員修煉之道》
3、《計算機程序的構造和解釋》
4、《演算法導論》
5、《重構:改善既有代碼的設計》
6、《設計模式》
7、《人月神話》
8、《計算機程序設計藝術》
9、《編譯原理》(龍書)
崗位分類:
世界上第一位程序員是英國著名詩人拜倫的女兒AdaLovelace,曾設計了巴貝奇分析機上解伯努利方程的一個程序。她甚至還建立了循環和子程序的概念。由於其在程序設計上的開創性工作,AdaLovelace被稱為世界上第一位程序員。美國國防部開發的ADA語言就是為紀念這位世界上的第一位程序員而命名的。
計算機科學發展到今天(21世紀初期),程序員從事的人群很多,分工也不相同,從大的方面可以分為以下幾類:asp程序員、jsp程序員、delphi程序員、php程序員、powerbuilder程序員、C程序員、linux程序員、net程序員、vb程序員、java程序員、javascript程序員、C++程序員、Python程序員、android程序員、iOS程序員。
職業要求:
一般的程序員都有四年的在專業領域的學習,需要一個在程序領域的學士學位獲得者,不論是數學方面的還是工程方面的都是可以的。
大約有20%的人在這一領域的計算機科學和工程學擁有更高的學位。還有很小一部分程序員是自學的,盡管一些專業性的學校或者綜合大學可以提供,但是也需要一些別的途徑來提供相關的人才。盡管學歷是比較重要的,但是公司經常把重點放在應聘者的工作經驗上,很多剛從大學畢業的大學生雖然有引人注目的學位證書,但是他們找不到工作是因為他們缺乏經驗。一個程序員雖然沒有正規的學歷,但是如果一個人擁有程序設計的深厚知識背景或者豐富的工作經驗的話,那麼他的機會要比有學歷的應屆畢業生大得多。所以要盡量抓住有用的工作和實習機會,這樣的話在畢業後你就會發現,多實習讓你有更多的經驗,在找工作的時候就有更多的機會。
對於職業程序員,另外一個重要的方面就是,程序員需要不斷提升自己的業務技術,他的技術必須一直保持在一個較高的水平,並且要不斷發展,程序員也要尋找貿易的機會,要參加研討會,在周刊上發表文章和接受職業教育,這些使程序員在自己的領域中分級或者不斷並排前進。
素質要求:
團隊精神和協作能力:
團隊精神和協作能力是作為一個程序員應具備的最基本的素質。軟體工程已經提了將近三十年了,當今的軟體開發已經不是編程了,而是工程。獨行俠可以寫一些程序也能賺錢發財,但是進入研發團隊,從事商業化和產品化的開發任務,就必須具備這種素質。可以毫不誇張的說這種素質是一個程序員乃至一個團隊的安身立命之本。
文檔習慣:
文檔是一個軟體系統的生命力。一個公司的產品再好、技術含量再高,如果缺乏文檔,知識就沒有繼承,公司還是一個來料加工的軟體作坊。作為代碼程序員,必須將30%的工作時間用於寫技術文檔。沒有文檔的程序員勢必會被淘汰。
規范化的代碼編寫習慣:
知名軟體公司的代碼的變數命名、注釋格式,甚至嵌套中行縮進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和糾錯,也有助於不同技術人員之間的協作。
測試習慣:
測試是軟體工程質量保證的重要環節,但是測試不僅僅是測試工程師的工作,而是每個程序員的一種基本職責。程序員要認識測試不僅是正常的程序調試,而要是要進行有目的有針對性的異常調用測試,這一點要結合需求理解能力。
學習和總結的能力:
程序員是很容易被淘汰的職業,所以要善於學習總結。許多程序員喜歡盲目追求一些編碼的小技巧,這樣的技術人員無論學了多少語言,代碼寫起來多熟練,只能說他是一名熟練的代碼民工(碼農),他永遠都不會有質的提高。一個善於學習的程序員會經常總結自己的技術水平,對自己的技術層面要有良好的定位,這樣才能有目的地提高自己。這樣才能逐步提高,從程序員升級為軟體設計師、系統分析員。
擁有強烈的好奇心:
什麼才是一個程序員的終極武器呢,那就是強烈的好奇心和學習精神。沒有比強烈的好奇心和學習精神更好的武器了,它是程序員們永攀高峰的源泉和動力所在。
日常工作:
確認通過審查方案的目標,輸入數據,分析師,監事,和客戶的輸出要求的項目要求。
安排項目要求在編程序列分析要求;准備工作流程圖和使用計算機知識的能力,題材,編程語言和邏輯圖。
編碼工作流程的信息轉換成計算機語言的項目要求。
通過輸入編碼信息的計算機程序。
確認程序操作進行測試,修改程序序列和/或代碼。
准備寫操作指令供用戶參考。
保持歷史記錄,通過記錄方案的制定和修訂。
維護客戶的信心和保護保密的業務。
技能/資格:一般的編程技巧,分析信息,解決問題,軟體演算法設計,軟體性能優化,注重細節,軟體設計,軟體調試,軟體開發基礎,軟體文檔,軟體測試。程序員其實分為很多種,大家開發的語言可能不盡相同,但是都是有他們的共同點。
『陸』 怎麼成為一名程序員,要從哪裡開始學起,先學什麼在學什麼
從hello wrod 開始學,下電子書邊看邊寫,一定要多練習,不然學的快忘得也快,同時學習C語言,C是所有其他高級語言的基礎,學會了C(不必學的太深,了解一些簡單的演算法和思想就可以) 再學起其他編程語言就會很容易上手的。
還有數據結構,雖然這是一門枯燥的學科,但它對與編程的思想拓展有很大幫助。 再看演算法與應用一類的書了,因為程序設計主要是寫演算法,這就免不了學習數據結構。
(6)計算機程序設計藝術演算法導論擴展閱讀:
相關書籍
很多程序員響應,他們在推薦時也寫下氏滾自己的評語。 以前就有國內網友介紹這個程序員書單,不過都是推薦數 Top 9的書。
其實除了前9本之外,推薦數前30左右的書籍都算經典,筆者整理編譯這個問答貼,同時摘譯部分推薦人的評語。
下面就按照各本書的推薦數排列。
1、《代碼大全》 史蒂夫·邁克康奈爾
2、《程序員修煉之道》
3、《頌核敗計算機程序的構造和解釋》
4、《演算法導論》
5、《重構:改善既有代碼的設計》
6、《設計模式》
7、《人月神話》
8、《計算機程序設計藝術》
9、《編譯原理》(龍書)
10、《活著》野顫
『柒』 除了演算法導論 計算機程序設計藝術還有哪些比較好的演算法書籍
初學者 數據結構 用 清華大學 李春葆的,裡面源代碼攔冊多,可以運行
看完再結合看 嚴蔚敏的,嚴蔚敏的都是偽代碼
演算法導論不適合初學者形式化證明太多,找本簡單的演算法書看,最好是國外的,國內的華中科技大學的崔國華的個人覺得不錯(雖然那書有不少勘誤),個人感覺而已。基枯山本的學完了還是看演算法導論比較好
計沒衡中算機程序設計藝術 很經典,不過感覺是博士那級別看的懂的
『捌』 程序員經典的書籍有哪些C/C++ 數據結構之類的求指導
c++基礎:
《C++ primer》必看,現在到第五版了把。
《Accelerated C++》看2本基礎書還是很有必要的。
c++晉級:
《深入探索c++對象模型》講的是編譯器如果構造c++對象,必看,好書不解釋
《Effective C++》
《More Effective C++》
《c++必知必會》
以上三本教你如何更好,更高效的編寫c++代碼。
程序庫
《泛型編程與STL》必看,泛型編程很重要啊
《STL源碼剖析》這書比較難,沒有扎實的基礎不建議看。
演算法和數據結構
最經典書籍當屬《計算機程序設計藝術》,但是我不推薦,如果你非得看,而且看完了,記得給比爾蓋茨發簡歷。
我只推薦兩本《演算法導論》和《演算法藝術與信息學競賽》,尤其是《演算法導論》大師之作,裡面的代碼都是權威,非常值得學習
『玖』 計算機四大基礎課程
一 網上說的計算機三大聖經和計算機四大神書分別是什麼
計算機專業「三大聖經」分別指的是:《演算法導論》《計算機程序設計藝術》《計算機操作系統》。
並沒有計算機「四大神書」一說。
(1)計算機四大基礎課程擴展閱讀
本專業是計算機硬體與軟體相結合、面向系統、側重應用的寬口徑專業肆凱。通過基礎教學與專業訓練,培養基礎知識扎實、知識面寬、工程實踐能力強,具有開拓創新意識,在計算機科學與技術領域從事科學研究、教育、開發和應用的高級人才。
計算機學科的特色主要體現在:理論性強,實踐性強,發展迅速按一級學科培養基礎扎實的寬口徑人才,體現在重視數學、邏輯、數據結構、演算法、電子設計、計算機體系結構和系統軟體等方面的理論基礎和專業技術基礎,前兩年半注重自然科學基礎課程和專業基礎課程,拓寬面向。後一年半主要是專業課程的設置,增加可選性、多樣性、靈活性和方向性,突出學科方向特色,體現最新技術發展動向。
二 計算機專業基礎課程有哪些
多媒體 VB CC++ 匯編語言源 計算機組成原理 計算方法 資料庫 JAVA 電工學原理
《計算機應用技術》、《數據結構導論》、《資料庫及其應用》、《微型計算機及介面技術》、《計算機網路技術》、《線性代數》、SQL等。
再學《高級語言程序設計》、《VB程序設計》《匯編語言程序設計》、《JAVA程序設計》等等
三 計算機有幾級。課程都分別是什麼
考試等級劃分:全國計算機等級考試目前共設置四個等級:(一)級定位為滿足人們在一般性工作中對計算機的應用,重點是操作能力的考核。考核內裂高喚容主要包括微型計算機基礎知識、windows操作和使用辦公自動化軟體及網際網路(inter)的基本技能。1、具有計算機的基礎知識(包括計算機病毒的防治常識);2、了解微型計算機系統的基本組成及各部分的功能;3、了解操作系統的基本功能,掌握windows的基本操作和應用;4、了解文字處理的基本知識,掌握word的基本操作和應用,熟練掌握一種漢字輸入方法(鍵盤輸入)。5、了解電子表格的基本功能,掌握電子表格軟體excel97的基本操作和應用;6、了解文稿演示的基本知識,掌握powerpoint97的基本操作和應用;7、了解計算機網路基本概念和網際網路(inter)的初步知識,掌握網際網路(inter)的簡單應用。一級b類以考核計算機應用能力為主,與全國計算機等級考試一、二、三、四級同屬一個系列,其考核內容和水平與一級相當,考試採取無紙化形式,考生在計算機上完成答題,考試內容更加符合機關幹部、企事業單位管理人員的需要。基本要求念前:1、具有計算機的基礎知識;2、了解微型計算機系統的基本組成;3、了解操作系統的基本功能,掌握windows的使用方法;4、了解文字處理的基本知識,能夠使用windows環境下的字表處理軟體word,熟練掌握一種漢字輸人方法。5、了解電子表格的基本功能,能夠使用windows環境下電子表格excel的基本操作;6、了解計算機網路及網際網路(inter)的初步知識;7、了解計算機病毒的防治常識。(二)級定位為計算機程序員,可謂「計算機藍領」。考核內容主要包括計算機基礎知識和使用一種高級計算機語言(包括qbasic、c、fortran、foxbase、visualbasic、visualfoxpro等)編寫程序以及上機調試的基本技能。l、具有計算機的基礎知識;2、了解操作系統的基本概念,掌握常用操作系統的使用;3、掌握基本數據結構和常用演算法,熟悉演算法描述工具--流程圖的使用;4、能熟練地使用一種高級語言或資料庫語言編寫程序、調試程序。三級定位為「開發工程師」,重點在設計、管理、測試和技術支持。(三)級分為「pc技術」、「信息管理技術」、「資料庫技術」和「網路技術」等四個類別,主要考核對應類別的應用系統的開發和維護的基本技能。「pc技術」考核pc機硬體組成和windows操作系統的基礎知識以及pc機使用、管理、維護和應用開發的基本技能。「信息管理技術」考核計算機信息管理應用基礎知識及管理信息系統項目和辦公自動化系統項目開發和維護的基本技能。「資料庫技術」考核資料庫系統基礎知識及資料庫應用系統項目開發和維護的基本技能。「網路技術」考核計算機網路基礎知識及計算機網路應用系統開發和管理的基本技能。四級定位為「系統設計工程師和項目主管」。考核內容包括計算機原理、數據結構、離散數學、操作系統、軟體工程、資料庫、計算機體系結構、計算機網路與通訊等專業課程的基本知識和應用技能。l、具有計算機及其應用的基礎知識;2、熟悉計算機操作系統、軟體工程和資料庫的原理及其應用;3、具有計算機體系結構、系統組成和性能評價的基礎及應用知識;4、具有計算機網路和通信的基礎知識;5、具有計算機應用項目開發的分析設計和組織實施的基本能力;6、具有計算機應用系統安全和保密性知識
四 計算機有哪些課程
問題1.計算機專業
(計算機科學與技術)華中科技大學的,各個學校可能稍專微不同
課程名稱屬 學分
電路理論 4.0
離散數學 4.0
數字電路與邏輯設計4.0
高等數學(下) 5.0
大學英語(下) 5.0
高等數學(上) 4.0
C語言程序設計 5.0
計算機基礎2 3.0
網路教育學習指導 0.0
大學英語(上) 5.0
數據結構 4.0
匯編語言程序設計 4.0
微機原理 4.0
操作系統概論 4.0
毛、鄧、三思想概論 2.0
JAVA語言程序設計 3.0
軟體工程 4.0
資料庫系統概論 4.0
計算機網路 4.0
問題2:如果是非計算機專業的話,計算機相關的課程又有哪些?
下面這些應當是最基本的了
C語言程序設計
計算機基礎
微機原理
五 計算機基礎課程有哪些
計算機抄基礎應該先學相關的基礎課程:高等數學,普通物理、計算機專業英語
計算機的課程應該還有:操作系統、匯編語言、計算機演算法、計算機原理或微機原理、計算機網路、資料庫原理及應用、軟體工程
程序語言方面可以再加一個Visual Foxpro,
如果不想那麼專業,可以學些應用程序,比如:Flash,3DsMAX,Dreamweaver,PhotoShop等
六 計算機專業基礎課程都有哪些
計算機文化基礎 多媒體 VB C++ 匯編語言 計算機組成原理 計算方法 資料庫
JAVA 電工學原理
《計算機應用技術》、《數據結構導論》、《資料庫及其應用》、《微型計算機及介面技術》、《計算機網路技術》、《線性代數》、SQL等。
再學《高級語言程序設計》、《VB程序設計》《匯編語言程序設計》、《JAVA程序設計》等等。
七 計算機專業的基礎課是什麼
計算機專業的基礎課就是《計算機的應用》〈計算機語言〉、〈計算機與網路〉、〈計算機科學與技術專業〉等都是計算機基礎課程。學完基礎課程後,才能真正學與自己相關的專業性的領域課程。
八 計算機專業的本科學生在大學四年要學哪些課程
本人計算機專業,略說一下:
大一(公共基礎和專業基礎):計算機概論;程序設計基礎(C語言,需要學扎實,深入後都是在C的語言思想基礎上)
大二(專業基礎和核心):數據結構與演算法(比較難,我們是C,也有其他語言的);數字電路(也很頭痛);離散數學(計算機專業必修);資料庫系統原理,資料庫系統設計與開發(Delphi和SQL為主,比較重要也很有用,很多軟體設計都以這兩門課為基礎);面向對象程序設計(我們是Java,也有用C++的,也比較重要);計算機組成原理,組成實驗(如果畢業後要搞硬體,就必須學好這兩門,難度很大);操作系統原理,實驗(當時學的是linux系統,我忘得差不多了,裡面的一些管理思想比較有趣);
大三(專業核心和專業方向):微機系統和匯編語言,實驗(無聊,繁,難,和為來就業等關系都不大,不過如果要真正精通計算機,這兩門課就要下功夫學好了);計算機網路,實驗(dos命令等,黑客必須,很有趣);軟體工程(就是如何做一個可以賣得出去的軟體成品的步驟過程);
大三下開始就分方向:
Java方向:(Java方向中J2EE最重要,是工程組織,精通後可以直接就業,本人是Java方向)
JAVA高級程序設計
軟體工程與資料庫課程設計
網路工程
J2EE架構與應用開發
J2EE應用課程設計
C#程序設計
J2ME與移動應用開發
資料庫系統應用與管理
軟體開發規范
數據應用開發方向:(最重要)
C#程序設計
軟體工程與資料庫課程設計
架構與應用開發
應用課程設計
JAVA高級程序設計
Oracle應用
資料庫系統應用與管理
軟體質量保證與測試
軟體開發規范
電子商務方向:(相對軟體開發比較簡單)
電子商務概論
C#程序設計
供應鏈與物流管理
電子商務系統的設計與實現
電子商務系統課程設計
電子商務安全
網頁設計與網站開發
嵌入式系統方向:(比較難,搞硬體的多)
微機外圍電路應用設計
嵌入式系統應用開發
單片機windows編程
ARM與嵌入式操作系統基礎
C#程序設計
嵌入式系統開發導論
單片機應用設計
WinCE移動開發技術
嵌入式通信技術
數字媒體方向:
藝術設計概論
計算機圖形圖像處理
人機交互技術
計算機動畫
數字媒體後期製作
視覺傳達
計算機動畫基礎
計算機動畫設計
大四:就是找工作實習和畢業設計,還有漏掉的課程就是專業機動選修,按照自己的興趣選修了,附上課程資料:
Linux操作系統及其應用
數學建模(Ⅰ)
數學建模(Ⅱ)
計算機輔助設計
信息政策與法規
軟體開發規范
計算機圖形學
編譯技術
項目管理
圖像處理與模式識別
多媒體技術
Web網頁設計基礎
計算方法
Windows編程
計算機信息安全
藝術設計概論
軟體質量保證與測試
網路工程
人機交互技術
計算機發展前沿
九 計算機專業有哪些課程
主要課程有計算機應用基礎、應用文寫作、數學、英語、德育、電工與電子技術、計算機網路技術、C語言、計算機組裝與維修、企業網安全高級技術、企業網綜合管理、windows server 2008操作系統。
還有區域網組建、Linux伺服器操作系統、網路設備與網路技術(主要學習思科、華為公司設備的配置、管理、調試)、SQL Server、網路綜合布線技術、CAD繪圖等。
計算機學科的特色主要體現在:理論性強,實踐性強,發展迅速按一級學科培養基礎扎實的寬口徑人才,體現在重視數學、邏輯、數據結構、演算法、電子設計、計算機體系結構和系統軟體等方面的理論基礎和專業技術基礎。
(9)計算機四大基礎課程擴展閱讀
計算機專業培養目標
本專業畢業生應獲得以下幾個方面的知識和能力:
1、掌握電子技術和計算機組成與體系結構的基本原理、分析方法和實驗技能,能從事計算機硬體系統開發與設計。
2、掌握程序設計語言、演算法與數據結構、操作系統以及軟體設計方法和工程的基本理論、基本知識與基本技能,具有較強的程序設計能力,能從事系統軟體和大型應用軟體的開發與研製。
3、掌握並行處理、分布式系統、網路與通信、多媒體信息處理、計算機安全、圖形圖象處理以及計算機輔助設計等方面的基本理論、分析方法和工程實踐技能,具有計算機應用和開發的能力。
4、掌握計算機科學的基本理論,具有從事計算機科學研究的堅實基礎。
十 計算機專業基礎的四本書哪一本最難
計算機專業基礎的四本書中,最難的通常都認為是數據結構。
當然也因人而異,有句話叫:「會者不難,難者不會。」
《數據結構》
《計算機組成與設計》
《計算機操作系統》
《計算機網路》
『拾』 為什麼《演算法導論》中的數組序號是從1開始的
c語言下標從零開始是個錯誤,並且 index 也是一個有誤導性的名詞,它表示的是偏移量,明明應該用 offset。
然後 c 的徒子徒孫都學了它,導致現在很多人都誤以為下標應該從 0 開始。
早期蠻荒時代,很多東西都不科學,演算法導論作者致力於與落後文明作斗爭,然而卻遭到了樓主你的不理解,實乃編程屆一大憾事。
我再說一遍,C 是結構化的匯編,下標基 0 是受到了 PDP-11 指令集的影響,更老的語言(比如 Fortran)都是基 1 的。
另外用 0/非 0 代表 false/true 也是 PDP-11 中 TST 指令和 Z 位的行為。
可能是這本書強調演算法的求學思想,所以從一更加符合數學的數組規定。
但是編程的時候,指針這個東西會經常用到,如果用a(o)作為第一個元素 那麼*a+n就等同於a(n) 比較方便
演算法導論上的這個問題呢,我覺得我比較同意樓上的看法,這個書上面的很多的程序並不是可以敲上去直接運行的,他只是偽代碼,思想而已,給人看的,人類的普遍思維是從1開始,那麼書頁就是從1開始了
說編程語言是給機器看而偽代碼是給人看的簡直是逗大家笑吧...編程語言設計出來就是給人看的....
另外從0開始在很多方便都極好....我覺得寫多代碼都能體會到吧..
幫算導洗地:
演算法導論通篇用的是偽代碼 是給人類閱讀理解的 不是設計給機器去運行的
而絕大多數情況下, index 從 1 開始更符合人類直覺(如果你對這點有異議請參考的答案 )
但少數情況下, index 從 0 開始更符合人類直覺。例如書中 hashing 還有 FFT 那塊內容, index 是從 0 開始的。
其實寫幾天 Pascal 你就適應啦。。