計算機專業大類下,還有哪些細分的專業,分別是幹什麼的?


之前就有想過寫一篇關於這個問題的長文,因為還有工作,慢慢寫了有兩天,很多觀點都會帶有個人知識水平的局限性,如果有說錯的地方,請大方的指出來,或者您也可以寫下你在這個行業的領悟,我最後希望這篇文章能幫助高考的孩子或者大一大二不太了解的新生或者有意從事計算機方向的人的一本入門指南。接下來,我會從就業人數、著名公司、產品代表、門檻、工具、技能、業內現狀和發展前景,從軟體和硬體兩個大方向分別描述,至於非技術方向類似於產品,推廣運營我並不是特別了解,不敢瞎說。請大家積極分享同時提提意見。

先來一個思維導圖。

## 硬體

### 硬體工程師

指在計算機領域裡,需要接觸到電路底層的工程師,實際上在電氣領域,在電方向上分為強電和弱電,強電指高壓傳輸,電動機等高電流作為能源動力領域,弱點就是指微電子方向的信息處理領域。計算機硬體工程師的工作範圍在弱電,主要內容主要有PCB設計(印製電路板),ic(晶元)設計,FPGA工程師。往上還包括涉及針對特定硬體做系統開發維護的嵌入式工程。

#### PCB工程師、FPGA工程師、IC工程師

專業術語大家可能不太懂,就舉例一下每種工程師對應的工程產品吧。

PCB工程師的工作就是設計一個高速穩健的交通網路,把電路板上各個功能不同的模塊連接起來。他們的工作環境如下所示。

FPGA全稱叫現場可編程邏輯陣列,就是理解為一個可以編程的硬體。傳統意義上的集成電路是定製化的,針對特定的需求設計特定的電路板。而fpga可以通過熔斷機制來動態修改電路的結構,達到動態編程的效果,簡單點說,針對一塊FPGA,你可以把他燒製成視頻編碼器,也可以燒製成無線wifi通信模塊。雖然這些演算法都可以通過軟體實現,但是硬體實現的效果演算法成本更低。開發語言常用的有VHDL(硬體描述語言)。

IC工程師就是設計一個高效運算的大腦,涉及到流水線機制,超頻,最重要的是解決納米級別下電流擾動問題,最大的制約因素也是材料工藝問題。

以上三種崗位其實在現代學術分支類還是屬於EE下的子類,事實上從事這個方向的人也大部分是學習電子電路工程的同學。這個專業的特點就是強者通吃,全球唯二的兩家晶元公司intel、AMD。而且他們的核心競爭力並不是晶元設計能力上,而是在製作工藝上。現在在移動終端統一江湖的還有英國Acorn有限公司設計的ARM晶元,它只是提供一個解決方案,設計圖紙,具體的製造還得是華為,三星自己開場設立。但是同時又有很多小眾領域,比方說無人機,安全門等等你又需要做專門的PCB設計,所以硬體工程師也是有市場需求基礎的,但是也不多。從技能需求來看,要求數學知識紮實,邏輯嚴密,電子電路知識更多,類似工具反而並不是顯得那麼重要。從未來的發展前景來看,隨著智能硬體物聯網的推廣,會有一波大紅利。

崗位需求:IC &<&< FPGA = PCB

薪資 :IC &>&> FPGA = PCB

#### 嵌入式工程師

**系統級別嵌入式**

主要是針對特定硬體移植一套操作系統,類似於linux,VxWorks等,甚至於自己開發一個只能滿足需求的未知系統,你需要讀管腳信息,讀時序。但是大部分還是使用成熟的系統移植,自己寫系統一來太慢,二來肯定很多坑。相對來說在這個層面上的人都是大牛。或者做一些驅動開發,比如說,每年讓無數遊戲宅剁手的最新NVIDIA顯卡,都需要這個級別的工程師來做相應的顯卡驅動。

薪資水平絕對高,起薪百萬級別,入門門檻也絕對高,業內最強不是在研究所,而是在公司。

**應用級別嵌入式**

在基於已經能跑的機器上做開發,比如說,操作系統已經提供了最基本的文件管理,內存管理,CPU管理的情況下。你在此基礎上做特定應用的開發。普遍打交道的語言工具是C。本人實驗室其實是這個方向的,有過軍工和國企的一些項目,從這層往上,到架構師之前,本人至少都接觸過一些。能說點自己的感悟,而不是查資料了。

做嵌入式應用開發最蛋疼的不是開發而是調試,在這一層做開發會有各種奇葩問題,比方說你昨天還跑得好好的,今天可能就崩了,可能是硬體問題,虛焊?電容擊穿?電路板電流擾動?也可能是軟體問題,野指針(很少有系統做了虛擬內存,你所有操作都是在實際的內存空間上操作的),內存溢出。

薪水來看,起薪比較低,今年華為給的算是不錯了,能到16K,但是隨著你對業務的熟悉,工資是沒有上限的,最終達到的升級狀態就是系統級別嵌入式工程師。

## 軟體

### 桌面程序工程師

傳統的桌面應用軟體類似於office,瀏覽器啊在PC端上運行的軟體。主流的開發框架有Qt,MFC,.NET。現在還比較強勢的一些桌面應用領域就是微軟的office和桌面遊戲公司。以及基於微軟的C#的開發應用,基於QT的C++開發應用。其他的不是特別了解,但是給我的感覺就是這個市場不怎麼活躍,招人很少,身邊也沒有認識的人走這條路線。經知友私信補充,這個行業的薪資並沒有隨著互聯網浪潮而有大幅度增長,該知友在.NET平台下使用C#開發,有5年的從業經驗,15年的薪資水平在11k左右,後來轉行去了android,當然這可能只是個例,有很多厲害的人我們可能不知道,先謝謝這位知友知友了。

### 網路應用工程師

從google發跡以來,基本上所有新興的巨無霸公司,facebook,bat,amazon都是依賴於互聯網的發展,依賴於這群互聯網應用工程師。同時他們也就是在網上自稱為碼農的這個群體。他們這個群體應該能佔到計算機領域70%以上的研發人員。

#### 前端開發

廣義的前端就是指呈現在用戶視覺的領域,直接可以讓用戶感受到的開發,往下會細分為web,andoroid,ios。

#### web前端(h5前端)

web前端指在瀏覽器(包括手機和pc瀏覽器,或者是webview控制項,甚至於搭載JS引擎的任意環境)上運行的一系列應用。

傳統意義上的前端主要是指網頁,html,css,js那一套了,或者再加上html5,css3。但是最近幾年前端發了很多變化。

這個方向是這幾年的大熱門,隨著機器性能的提高,v8引擎的普及,雖然js和c,java的運算效率還是差上很遠,但是目前來看對於呈現展示內容已經基本夠用,所以,近幾年出現了各種叛逃,比如說cocos2d-js來做遊戲,react-native來做客戶端啊。同時,隨著大量人才的湧入,特別是這兩年,大量的前端框架,解決方案讓你感覺跟不上時代,講真,兩年前還是JQuery的天下,現在你不知道Vue,Angular都不好意思打招呼。同時由於機器性能的提高和V8引擎的強勁有力,腳本語言的另一個優點就是無須編譯運行,導致了它可以實現一個其他語言無法做到的事情---動態更新,可以在app不發版的情況下動態的大幅度更改它,進一步的增加了JS的需求量。

薪資比起前兩年來看漲了不少,而且市場需求量也很大,基本上任何應用都沒有完全脫離web的框架內。門檻也不算高,但是往下深入一樣會有很多東西要學。

#### android和iOS

android是一個基於linux內核開發的開放源代碼移動操作系統,由Google成立的Open Handset Alliance(OHA,開放手持設備聯盟)持續領導與開發,主要設計用於觸屏移動設備如智能手機和平板電腦。iOS(原名 iPhone OS,自 iOS 4 後改名為 iOS)是蘋果公司為移動設備所開發的封閉源代碼操作系統,所支持的設備包括 iPhone、iPod touch 和 iPad。

目前看來,智能機市場上,android的市場份額在四分之三以上,ios佔了大概五分之一,剩下的都是什麼塞班,winphone我們應該不用考慮,你應該也不會想做這個的。雖然android和ios市場佔有率相差懸殊,但是android工程師和ios工程師基本上能維持相同的人數,所以你如果想從事移動端開發,就業市場來看的話,沒有很大的區別。

技術層面來看兩個其實比較像,主要的區別其實是生態圈的比較。

相應來說,可能android的入門成本門檻比較低,java相對於Object-C,swift來說還是比較流行的,同時,相對於iOS(mac電腦+蘋果手機+一年100刀的開發者賬號)的起始1.5W的投入來看,可能android的競爭會更激烈一些。

由於android的開放性,基於開源的linux開發,所以業內會有很多公司針對於android做所謂的「深度定製」,「適合國人的智能手機」等,那就導致了android的各式各樣,不同的手機廠商在某些細節方面又有不同的理解,倒是android開發最大的一個問題就是適配。同時由於android的許可權開放性,他會有很多可以hack的地方,針對android的木馬病毒(360管家)很多,你要考慮到的東西會很多,不過目前來看,android的每次發版,安全性也越來越好,許可權管理也越來越規範,以後會越來越好。而iOS的封閉特性,相對來說被發現的漏洞少(並不是不多,我個人覺得絕對比android多),但是每次爆出都是大新聞,它的開發相對來說規範很多,有很多成熟的解決方案,他的主要問題其實是iOS審核這塊,大部分的公司都有過app被appstore斃過的經歷。

另外,最近蘋果公司也在推swift,如果你要做iOS,由於各種歷史問題,OC並不能完全棄掉,但是swift也會成為你求職的考點或者亮點,通過同事的反應來看,swift比OC更爽,它更願意做swift。

#### 後端開發

後端開發指的是,在為前端提供數據支撐的一個大的總類,包括資料庫,業務邏輯處理,數據處理等。主要的開發語言分兩個方向編譯型語言,java,c/c++等,他的特點就是運行效率高,相同機器配置的情況下能支撐更大的訪問量,適用於超高並發度,比方說淘寶後台是java,網易遊戲騰訊遊戲是c++。另一種就是以php、python等解釋性語言,他們的特點就是開發效率高,無需編譯,寫完就能運行,主要針對一些運算量不大的中小型網站,比如說你的個人博客,管理後台。

##### 運維工程師

特意把它從後端中拿出來,主要是他的開發任務比較少,但是同樣很重要,當數量量達到一定程度,資料庫伺服器都有上千台的時候,就需要專業的人士做做數據維護的工作了,它的工作難度一樣很多,容災備份,熱替換。而且目前的趨勢都是服務化,組件化,虛擬化,一樣有各種難題有待於你去解決。但是從市場需求來看,只有大廠才會招專業的運維工程師,創業公司100台伺服器以下的小公司一般都是託管到各種雲,然後由後台工程師兼任。

##### 通俗意義上的後台開發

也就是那些經常說自己是業務狗的屌絲碼農,覺得不做架構設計比較low,他們主要的工作就是實現pm的工作需求,比方說雙十一來了,pm說,這個要添加一個搶紅包的功能,然後後台業務狗就忙起來,要解決高並發下的死鎖啊,重複請求啊,帶寬啊各種功能,當然也需要前端,但是前端並不需要考慮複雜的並發性問題。而如果這些業務狗在處理高並發問題上有所建樹,那麼他們就能一步步升級為架構師。那個時候就可以把屌絲碼農的屌絲去掉了。

### 測試工程師

一個產品或者一個新的功能需要上線,必須要經過完備的測試,測試工程師目前其實有兩種,一種是純測試,另一種是他的升級版測試開發工程師,它能在測試的過程的順手把小bug改了而不需要返工。好的測試開發工程師工資也可以比做開發的工資高。

而且你們也不要小看測試這個東西,不要以為你只會點點滑鼠看看對不對這麼簡單,合格的測試工程師需要熟悉各種測試工具,能自己寫測試腳本,能找到bug,而且還能知道為什麼會出現bug。這個工種一般也都是大公司才會配置的,對於小公司來說,一般就是開發人員自己也是自己的測試人員。

### 安全工程師

同樣一個產品或者一個新的功能需要上線,不僅需要要經過完備的功能測試,還有一向就是安全性測試。而由於安全性測試可能需要的知識比較多,所以又會有一個單獨的工種來這個。

或者你們也許更喜歡叫他們黑客(壞孩子),白帽子(好孩子)。他們遊走在法律的邊緣,或做著俠士的行為而不為人所知,或調皮搗蛋想整一個大新聞,更有甚者違法牟利。但是必須指出,他們確實互聯網圈子裡最有創新精神,反抗精神的人,當然我不是說的那些連腳本都不會寫的工具小子了。我指的是阿桑奇,中本聰(主要是技術吊,思維吊,但是沒做啥好事)。他們是IT圈的安拉,耶穌基督,精神偶像。必須指出,走安全工程師這條路必須得先走一條邊緣線,要想有最好的防守你得先知道別人是怎麼進攻的。薪水來看並不是特別有競爭力(不包括黑產)。從業人員這幾年很多看到的情況是好孩子越來越多,但是中國的大環境不是特別好(烏雲都被關了)。

### 架構師

從這裡往後,已經算是程序員界的高富帥了,可以稱的上是半個科學家。架構師的工作差不多已經基本脫離代碼了,他的主要工具從VIM,EClipse變成了word,ppt。他主要覺得技術選型,針對大容量高並發的問題制定解決方案。基本上他們都是由後台工程師升級打怪升上來的,好像聽聞業界也有前端工程師升級為了CTO做架構的,但是畢竟還是少數,node的效率還是差了很多。

### 演算法工程師

這類人,基本都是大學參加ACM競賽拿過獎,或者本身思維邏輯嚴密性高,數學基礎紮實,演算法牛逼。如果你是一個數學系或者物理系的優秀畢業生想轉IT,這個可以作為你的主要方向。這個算是建築系裡的學院派,從學校畢業之後就直接達到了這個等級,起薪很高。

#### 數據挖掘

它的作用就是從一堆數據中挖去你你想要的信息。打個比方,給你2008年到2016年所有的房屋成交量,房屋成交價格,土地成交量,人口增長,銀行貸款利率變化等等很多信息,讓你預測明年房價變化情況。他們就是干這個的,這個工作分三步走,爬數據,建模,寫演算法驗證。

爬蟲工程師,就是從各種國家統計局網站,鏈家網站爬去數據,存儲為結構化的數據。

數學建模,建立各種數據之間的影響關係,影響因子。

寫演算法驗證,大部分數據挖掘工程師好像都是用python,工具比較多,語法簡單。

難點其實不是在寫代碼部分,而在於建模,如果設計一個有效的模型來量化這些數據間的聯繫。其中的影響因子權值就是他們的生命價值所在,所有他們會光榮的把自己稱呼為「調參俠」,顧名思義,就是天天調整參數,讓模型運算結果來匹配實際情況。

薪水很高,一般統計分析局或者大公司才會招人,而且還可以獨立創業,像是知乎很有名的團支書,拿數據打臉的那種牛逼轟轟的人物。

另外再而外介紹一下量化交易,量化交易是指以先進的數學模型替代人為的主觀判斷,利用計算機技術從龐大的歷史數據中海選能帶來超額收益的多種「大概率」事件以制定策略,極大地減少了投資者情緒波動的影響,避免在市場極度狂熱或悲觀的情況下作出非理性的投資決策。這個是計算機屌絲和金融高富帥融合的比較成功的一個新的工種,通過一個優秀的交易員建立一個理論交易模型,再有程序員實現代碼,這個算是數據挖掘領域比較直接的變現交易,著名的知乎英國五毛,Lightwing(李軼睿)就是從事這個方向的,他們的薪水是按照日來的,關鍵也在於模型建立,而且都是通過技術面分析,確保收益,比如說從10塊錢漲到了10.1塊,即便它很可能漲到11塊,他們也可能就會賣掉(演算法策略),然後通過超高頻率的買賣來確保收益,比如說雖然每次買賣只能賺一毛錢,但是他一天內買賣了幾十手,而且大部分都賺了,總的收益可能也會有1塊,所以量化交易也有叫高頻交易的.

#### 人工智慧

我好久也沒看過這方面的書了,可能理解有誤。大家經常看到的siri,或者聊天機器人之類的都是屬於這種東西。他的本質還是一個有限自動狀態機,在一個狀態下在很多因素的影響下走向下一個狀態,理論上你把你在三維世界所有的輸入都考慮進去,而且都分別定義了相應的輸出,他是可以做到人工智慧的。但是這樣寫出來程序會非常大,電腦跑不動。我個人的理解,基於計算機簡單的01唯一向性,真正意義上的人工智慧還是蠻難實現的。比如說之前非常火的李世石大戰阿法狗,在這種特定的應用下,輸入很簡單,圍棋上的落子16*16,狀態也很簡單,2的16*16次方,在這個複雜度下,肯定也是沒辦法枚舉的,他們會有降維演算法各種演算法來聚類他們的狀態。

#### 深度學習

我們上面所說的數據挖掘會有一個調整參數的過程,而在深度學習領域,他會添加一個正向反饋,讓你的參數由機器自動調整,讓他計算的結果去自動匹配實際的結果。這個就是所謂的機器學習,就是把人為調參的過程讓機器自動完成。

此外,人工智慧,深度學習,數據挖掘並不是分開來看的,他們會存在一定程度上的重合。他們其實真正的難點實在各種降維演算法,概率論,退火等數學領域。所有說他們算是半個科學家也就是這樣原因了。

#### 性能效率支持

這個才是普遍意義上的互聯網的演算法工程師做的事情。比方說,我要求一個數的平方根,現在我們編程很簡單,只需要sqrt()就可以了,但是你如果看過這個的源碼,你就會驚呼,感興趣自己去搜,他並不是用牛頓萊布尼茲公式做的,它比牛頓牛逼多了,能提高100倍的效率。這只是一個很簡單的例子,在實際應用中,當遇到大運算量的時候,就是他們該出場了。這部分功能其實大部分也是由後台工程是自己擔任的,但是不排除大公司類似google,fb會特意招ACM來做演算法支持,起薪很高。

在這裡我特意提一下效率工程的頭面擔當,遊戲引擎工程師(目前國內主要使用開源的unity3d)。主要做3D渲染,需要在計算機圖形學方面有較高建樹。類比於工業皇冠上的航天發動機一個級別。遊戲開發只是一個特定方向的開發,,一樣有客戶端,web端,pc端,後台,資料庫運維等。並沒有需要單獨拿出來一個講。不過遊戲開發工程師一般來說都是比較累的,但是同樣薪水也是高,陰陽師團隊今年估計年終獎拿100個月我都不稀奇。

### 標準化組織協會會員

這個也算是吧。比如說,美國電子工程協會,3GPP協會。他們主要是製作各種標準化協議。這個級別太高了,在特定領域,全球估計也就幾十個人能做的了主吧。工資多少,人家應該都不在意這個東西。而且大部分還都是國家撥款或者公益組織撥款,反正不是盈利性質的。比如說,TCP/IP協議制定,5G協議制定。我也不知道他們從拿招人,可能是大學教授或者行業領袖吧。

### 量子計算機工程師

這個超級吊,這個是先驅,未來的計算機,至於他們幹嘛的,怎麼做,別問我,我不知道!!!


目前國內高校的計算機專業基本上可以分成以下名稱:

計算機科學與技術----國內最早的計算機專業,也是最「正統」的計算機專業,理論上,這個專業畢業的叫做科班出身

軟體工程----好多高校新開的專業(有的院校這個專業學費趕上三本了),看名稱就知道,基本上主要學習軟體研發方向的內容

網路工程----與上同,區別就是主要學習計算機網路相關的內容

為什麼說計算機科學與技術算是科班出身?

首先,計科這個專業,後邊會分方向:軟體,網路。

然後,這個專業名字有點像 數學與應用數學 這種的名字,既學習科學也學習技術。

計算機科學,可以不嚴謹的說,偏向於科學研究,相對來說更加理論一些,比如新演算法或者改進演算法等等。

計算機技術,那就是偏向於技術了,都了解的敲代碼。

這麼說是不是稍微明白點。

列舉一下幾門計科必學的課程:高數、離散、軟體工程、資料庫、數據結構、操作系統、計算機原理、C語言、網路工程、模擬電路、數字電路

也就是說,就讀計科這個專業,你即可以學習基礎的理論知識,也會有編程技術相關的課程,計算機的軟體和硬體相關內容都會學習到。當然,也會貪多嚼不爛,啥都沒學好。


隨著互聯網產業的高速發展,隨著各行業快速智能化號角的吹響,我們正大踏步邁入工業 4.0 時代,計算機作為一種普適的計算設備已經逐步融入了我們生活的每一個角落。無論是電腦、智能手機、Pad、智能手錶、智能頭戴設備還是各類掛上「智能」字樣的家用電器,它們的本質其實都是計算機 + 一些外部顯示、交互的界面。

今日我們的社會,已經和計算機密不可分,除了生活中無處不在的計算機,各個其它專業領域也越來越依賴於計算機——物理、化學、生物的模擬實驗離不開計算機,數學的問題求解很多時候可以藉助計算機,統計金融的模型計算也需要計算機,甚至在海外的很多高校「計算機+化學」、「計算機+人類學」、「計算機+數學」、「計算機+航空航天」已經成為了新的熱門專業。

計算機專業是什麼?

如果我們身邊的親戚、朋友的孩子表示希望學習計算機相關專業時,我們應該怎麼給他們解釋計算機專業呢?

計算機專業最早起源於歐美國家。在歐美地區,除了在一開始我們提到的近些年出現的「計算機+X」這種交叉專業外,計算機專業一般被分為「計算機科學(更偏向於理論和應用)」和「計算機工程(更偏向於結構和系統)」;在另一部分國家,這一專業被稱為「信息工程專業」、「信息學」專業(注意其不同於國內的信息管理與信息系統專業)。在歐美國家,計算機相關專業在本科階段更多的是在訓練數理、工程構建等工程學科的基本能力,特別是在高年級階段(第三、第四年),再紮實基礎的前提下,歐美大學還會積極鼓勵學生找到興趣,自己選擇喜愛的專業子方向的課程,進一步進行學習。

而相較於海外在本科階段進行「基礎+興趣導向」的專業設置方式,國內的計算機專業的設置則更明確的展示了專業培養後輸出工種的差異,對專業方向進行了固定劃分,相關專業被劃為了「計算機科學與技術」、「數字媒體技術」、「網路工程」、「嵌入式工程(物聯網工程)」、「軟體工程」、「信息安全(信息工程、網路空間安全)」等常見專業,以及「大數據」、「雲計算」、「計算機模擬(虛擬現實)」等名稱比較趕時髦的專業。國內的計算機相關專業的專業設置在第一年主要訓練數學能力、程序表達能力,第二年到第三年主要為計算機方向基礎課程,第四年的課程一般為國內研究生課程的導論課(但是大多數學校的實際情況是學生大四除了做畢業設計,就不在學校上課,而是找實習工作去了)。

計算機專業學什麼、不學什麼?

在開始說計算機專業學什麼之前,我們先明確一下,計算機專業理論上是不應該教「Photoshop 等設計軟體使用」、「Excel、Word 等辦公軟體使用」或「如何打遊戲」的。

對於計算機專業學什麼,我們可以從社會對於計算機專業同學的預期來看。為了滿足企業對於計算機人才在工程上的要求,也達到進一步進入科研機構進行研究工作的基本水平,計算機專業的同學,在學完計算機專業的時候,應該要做到對計算機的體系結構、系統設計如數家珍;應該對利用計算機進行問題求解(演算法能力,數據處理能力)達到可熟練應用的水平;應該對應用軟體設計思想,合作流程、方法與工具有較為深刻的認識;應該對計算機相關法律法規、倫理道德有充分的了解。

相應的,計算機專業的本科同學會在以下幾個方向開展相關課程的學習(課程名僅供參考,各學校因師資和側重差異各有不同,如有更多歡迎補充):

0. 數理基礎:

  • 微積分
  • 物理力學 / 電磁學 / 熱學 / 量子力學
  • 線性代數 / 抽象代數(近世代數)
  • 博弈論
  • 概率論 / 隨機過程 / 數理統計
  • 複變函數 / 數理方程 / 微分方程
  • 數值分析(科學計算)

1. 計算機結構與組成:

  • 數字電路與介面技術
  • 計算機體系結構
  • 計算機組成原理
  • 並行計算

2. 計算機系統:

  • 操作系統
  • 系統程序設計
  • 嵌入式系統
  • 實時系統
  • 計算機網路
  • 無線網路與無線通信
  • 系統與網路安全
  • 分散式系統
  • 容錯系統設計

3. 計算機軟體技術:

  • 面向對象的程序設計
  • 設計模式
  • 現代軟體工程
  • 軟體測試方法與理論

4. 計算機理論:

  • 離散結構
  • 數據結構
  • 計算理論(形式語言與自動機)
  • 演算法(隨機演算法、快速演算法等)
  • 編譯原理與編譯器設計
  • 程序語言設計
  • 密碼學基礎

5. 計算機應用與學科交叉:

  • 資料庫
  • 信息檢索
  • 數據挖掘
  • 人工智慧
  • 機器學習
  • 數字信號處理
  • 數字圖像處理
  • 多媒體技術
  • 模式識別
  • 機器視覺
  • 計算攝影學
  • 圖形學
  • 虛擬現實
  • 生物信息學(計算生物學)
  • 量子信息學

6. 計算機與社會

  • 計算機法律法規與倫理
  • 用戶界面設計與開發
  • 人機交互理論與技術
  • 社會計算
  • 城市計算

是不是發現我沒有提到程序語言?對於計算機專業的同學們來說,程序語言的學習是必要但是也是最為不重要的。對於一個計算機專業的同學來說,在上大學前最好能做到就掌握 1~2 門程序設計語言(但是就現在國內的教育情況來看,這個過程可能需要放在大一完成);而在掌握 1~2 門程序設計語言的基礎上,計算機專業的同學就應該要做到舉一反三,找到各個編程語言的共性,在某一場景需要學習一門新的程序語言並且進行應用時,能做到 24 小時搞定一門新程序語言的基礎運用的能力了。相比與程序語言的使用,上面提到的這些學習的內容中的思想與方法要重要很多。

如何學習計算機專業?

很多同學(特別是低年級剛入學的同學)學習計算機專業的時候,是在用一種背單詞的方式。很多同學考前就努力的開始拿著書背概念、拿著筆記本背老師劃的「重點」、拿著同學的作業背代碼。這其實都是對於自己很不負責任的學習方式,試想畢業後的你如果去工作或者去做研究,還有什麼考試可以考嗎?只會背,不會自己寫代碼,而且還沒有人給你劃重點之後,你怎麼開始你的工作?你做研究怎麼可能有辦法下手?

計算機專業與其他的工科專業一樣,需要最多的是理解和實踐,而不是記憶。在學習每一門課程的時候,我們都要問自己,「這門課程學習的知識來源於怎樣的問題」、「學習了之後,我是否可以解決這些問題」、「我是否可以把這個知識運用到別的東西上,解決新的問題」。如果你弄明白這些知識的來源問題,並且可以試著用學的知識去重複一下前人解決問題的過程,你就已經基本學到了這個知識;而如果你可以進一步發現同樣的知識可以被運用去解決其他的新問題,並且真的通過實踐驗證了這個知識的可拓展性,你就算是對這個知識真正學得深入骨髓了。

切記!切記!學工科一定得用腦子想,而不是記憶,計算機專業是其中的一個典型代表,用心學、努力想才會有好的結果。

除了上面這些希望能對大家能有所幫助的信息外,我還不得不提醒同學們——我們國家的計算機相關專業在教育方面的發展水平還處於初級階段,選擇相關專業後,成就自己人生依然不能靠學校和老師,核心還得靠自己。

現在的互聯網上學習資源很多,上面那些排名世界頂尖的學校也在互聯網上開設了大量計算機專業相關的課程。Coursera、計蒜客、Udacity 一類的平台上也有很多的計算機專業課程可以加速同學們的成長,幫助同學們在學校的第一課堂之外更好的學習好計算機專業,為自己的未來創造更多的可能性。

作者:俞昊然

鏈接:計算機相關專業的你現在工作如何?對高考志願填報相關專業的同學有什麼建議? - 知乎用戶的回答


像我們學校就很直接,直接計算機專業

自動化就直接自動化專業

通信就直接通信專業

別人學校一個院,我們學校一個班。。。


現在跟計算機有關的工種很多。

美術類的

平面設計,廣告設計,三維建模,圖片處理,UI設計等

技術類的

碼農,網路工程師,集成電路設計師,硬體工程師等

應用類的

打字員,網站編輯,會計,股票交易員,業務員,客服等

以上是個人想到的和電腦有關的工種,也就是工作離不開電腦的工種,當然實際上不止這些,更多的歡迎留言補充


自己專業也算有點關係,也答一發

自己的專業是『數字媒體技術』

——「計算機科學與技術」專業下的二級學科

從專業的開設目的上來說主要涉及的計算機方向為:

應用類

「美工設計」:PS基本上是必修課了,我在的學校還開視覺傳達、廣告設計、原畫設計的課,班上很多走這個方向的,UI還挺缺人的。

「影視特效」:Adobe + Autodesk 全家桶系列,可以做各種聲音電視電影特效、二三維動畫、電視節目剪輯等等「感覺適合去B站當全棧網紅」

「編程開發」:也學了C、Java、HTML等編程技術,也能靠編程吃飯,專業上可能會涉及遊戲開發等東西,但估計都不多。

研究類

「圖形學/VR/AR」:各種圖形圖像實現的演算法研究|美圖秀秀一類的公司估計比較需要這類的

不同學校的側重點不一樣,我和其他學校的人交流就發現很大的不同,我學校重點是教我們「 三維動畫特效設計類」的課程,而他們學校的重點是「多媒體開發類」的課程(說白了就是編程的),具體來說舉個 就是,我們大三學了一年的3D Max Maya,而他們學了一年的Unity 3D 和 J2EE

以上


應該有計算機科學與技術、網路工程、軟體工程、物聯網工程、數字媒體與技術


你聽說過 信息與計算科學這個坑b專業嗎?


我就是這個專業的。

就我所讀的學校來說,計算機大類專業在大二第二學期分為三個方向:計算機科學與技術、網路工程、電子商務。當然不同的學校有不同的專業分法。

沒分流前,我們都要學習c/c++、java、數據結構、資料庫等計算機必備知識。

在分流之後,以我所讀的計算機科學與技術來說,我們會學計算機操作系統、計算機組成原理、網路安全、單片機這類比較偏硬體的知識。也會學演算法設計,J2EE,遊戲開發,這類偏向於軟體的課程。這個專業可以做硬體,也可以做軟體,看個人興趣,但一般很少有人學硬體。

網路工程分流之後,會學演算法設計這樣的理論知識,但更多的會學習計算機網路、路由器、交換機這樣的知識了。舉幾個課程名:linux編程、windows網路編程、交換機與路由器、嵌入式系統開發、網路編程技術。所以說網路工程主要偏向於硬體了,對編程的要求降低了很多。

電子商務不太了解,這個專業女生比較多。對編程要求不高,也不會整天折騰硬體,偏向於數據方面了。

總的來說,計算機類是一門比較籠統的專業,硬體和軟體都可以學習。如果僅僅喜歡編程,請查閱:軟體工程。


網路,嵌入式,多媒體,軟體工程,人工智慧


剛好,我也學計算機的,就答一下吧。

說出來你可能不信,我們是軟體學院(其實也就是計算機科學與技術學院)

我們分專業有個互聯網營銷!營銷!營銷!

以後的工作包含前端,SEO,營銷策劃等……

而且我就是互聯網營銷的╯▂╰


科班,刻板。數電模電搞死我,我不怕,顫抖吧,計算機網路,操作系統,編譯原理


軟體工程,網路工程,計算機科技,通訊工程


看到別人的答案 這要出來說一下

雖然最初 軟體工程是算在信科裡面的,但是現在很多高校已經把軟體和信科分開了 信科走硬體 軟工自然走軟體

但也不絕對 信科會學一部分的軟體知識 但是很少 軟體也類似 會學一點計算機組成 但是電路什麼的是真沒有


你選擇了計算機你就選擇了終身的學習,因為計算機是一個知識密集型的職業,軟硬體的知識更新很快,你必須通過不斷的學習來充實你自己。
計算機大體上分還就是軟體和硬體。軟體又分為開發和維護,開發對代碼的要求比較高,你必須能夠自己去寫代碼,去實現一些演算法,維護對代碼的要求不要,但是也必須要懂。 其次就是資料庫,開發和維護都離不開資料庫的,所以你必須學好資料庫,我們寫的程序很多其實都是對資料庫的操作。
計算機硬體,也是區分開發和維護的。不過本人不做硬體,不是特別熟悉,硬體的開發需要用到彙編語言。


現在應該把影視後期也加入計算機專業的一個分支,甚至有c++經驗的程序員在影視後期上也可有作為。


推薦閱讀:

你見過的最牛逼的命令行程序是什麼?
有沒有推薦的能顯示時鐘的,且簡單樸素的 Windows 屏幕保護程序?
拉比克偷取他人技能,在代碼程序層面時如何實現的?

TAG:編程 | 計算機 | 信息技術IT | 程序 | 計算機專業 |