計算機科學與技術


計算機科學與技術(CS)專業學生該如何系統地自學?
目前cs專業大一學生,因為興趣選擇了這個專業,學校課程太少,唯一能上關於計算機的課程就是計算機導論,每天看着老師照着ppt念着一些籠統的概念,下學期才能學習c語言,我自己已經通過自學掌握了c語言的一些基礎,所以我想通過自學更多更快地掌握專業知識,可不知道該從哪學起,經常刷知乎,看到許多我不懂的知識就會感到自己的無知,不知從何學起,周圍的同學室友只會整天lol、玩手機,對比之下常對未來感到迷茫,希望有經驗的前輩傳授一些自學的步驟或經驗。
題主你好,在大批前輩趕來為你指點迷津之前,我查閱了一下我校CS專業大一大二的課程。專業直接相關的方面列舉如下,英語課、統計學課、物理課等未予收錄。這些課程網易公開課,iTunes U,coursera,edX等等地方都有豐富的課程資源;每個方面也有各自的經典教材。希望能拋磚引玉,也助樓主一臂之力。
離散數學(基礎的邏輯運算、集合等)
算法與數據結構 (無數次聽前輩強調這是CS專業萬變不離其宗的核心要義)
軟件工程(開發軟件的范式和方法)
計算機結構(了解從電路構成到 CPU 指令等底層的構造)
更多類型的語言(面向過程,面向對象,函數語言,腳本語言等)
操作系統
網絡(主要是 TCP/IP 這套東西)
數據庫
信息安全
圖形圖像,多媒體

以上這些方面都有涉獵之后,其他的CS專業知識基本上都建立於此基礎之上了。我校的高年級課程基本上也都以以上列舉的這些為前提要求。另外關鍵是要上手,刷出題目來/寫出代碼來,實踐起來,切忌只看書不實踐。

歡迎各位前輩、同學補充更多信息,靠譜的課程資源、經典書籍等。
以下是Berkeley的cs專業的一些必修課以及我個人認為很有必要的課,希望可以幫助你選擇自己學習的方向:
1. 數學類:
微積分
線性代數
概率論
離散數學
2. CS類:
程序結構與理解 Structure and interpretation of computer programs
數據結構 Data structure
機器結構 Machine structures
算法 Algorithms
人工智能 Intro to AI
操作系統 Intro to OS
編譯器 Intro to compiler
數據庫 Database
安全 Intro to security
機器學習 Intro to ML

(以上排序並不是嚴格的從簡入難,一些講cs的不同分支的課完全可以混着順序上

學習方式有很多,上網上豐富的公開課、自己看書、看名校這些課的視頻,都是很棒的選擇。

(至於很多人提到的語言:比較受認同的觀點是不必要特別去學語言,以上的這些cs核心知識比單純的語言更加有用。個人建議是在學習這些知識的過程中慢慢達到精通一兩門語言,會用四五門。其余的需要再pick up就是了。

除此之外,根據我個人的一些簡單的經驗,我建議盡量在有系統地學習的同時,思考一下自己學習cs,除了滿足求知欲和興趣之外,想要達成什么樣的追求。常見的一些,比方說:工作、科研、創業、投身於cs相關的一些公益組織、留學,等等。其實這些都是需要在學習之外付出很多額外的精力的。

畢竟大學里前進的道路遠遠不只是學習好知識這一個方面,做好人生下一步的規划並為之努力是更重要的一部分。如果現在還不確定想做什么,那就去盡可能多體驗多了解一些吧。日后不斷改變自己的目標不要緊,但一定要有個目標啊。

加油吧。

有問題請盡管回復,我很樂意幫忙。

同CS狗,年級較你稍高。
同一直自學,但一樣認真上課,切勿以自學為借口而逃避上課。
而且,每個人有自己的選擇,LOL是一種,電視劇也是一種,我們認真啃書編碼同樣也是一種生活方式。
首要放正心態,正視他人的選擇,找到適合自己的環境學習,然后剛開始不求精,只求廣,就是在各方面都應該懂些,這樣才能更好的知道自己的興趣所在。
然后確定方向,切記切記,既然選擇了就一直走下去,不要隨意被他人改變,貴在堅持
還有就是要充分利用資源,不只是書本和教學視頻,博文等等,更重要的是當被一個難題困住之后要及時解決,比如向老師請教。
最難得的是時刻保持謙卑,渴望的心,keep fool,keep hungry!
手機碼字,共勉
GitHub - open-source-society/computer-science: Path to a free self-taught education in Computer Science! 從數學到UX Designer, 都是各大MOOC平台上的免費課程
首先,為題主的態度點贊,記得我上大學那會光顧着玩游戲,沒有為自己的職業好好規划一下。
作為一個過來人,我說說我的看法: 看樣子樓主要走開發這條路了,這樣的話不論考研與否,首先要打好基礎,學校開設的課程如c語音,數據結構,離算數學,操作系統,組成原理,計算機網絡等,相信我這些都很重要,如果不考研的話,大三大四多關注一下業界,看看自己感興趣的方向,是嵌入式還是服務器亦或是前端,再做相應分涉獵,這個網上資料還是挺豐富的,做的這些我相信以后找個滿意的工作還是挺輕松的。

最近做了一張關於計算機科學與技術專業課程的 Concept Map,發現可以從數學課程開始構建這個專業的知識體系,我刪除了部分自己不感興趣的課程(網絡、數據庫、游戲等),從而作出了如下的課程安排,以下學習順序與大多數高校的課程設置有很大不同,也並不適合完全沒有編程基礎的同學自學,但非常適合有一定編程基礎且想要系統掌握該學科知識體系的同學,從而做到知其然也知其所以然。以下安排完全偏向計算機科學方向(技術基本被忽略了…需要的同學可以自行補充相關領域的技術知識)。

集合論

 - Set Theory [Kenneth Kunen]
 - Set Theory [Thomas Jech]
 - 集合論:對無窮概念的探索 [郝兆寬]

圖論

 - Graph Theory [Adrian Bondy, U. S. R. Murty]
 - 圖論 [王樹禾]

數理邏輯

 - Logic for Applications (應用邏輯) [Anil Nerode, Richard Shore]
 - A Mathematical Introduction to Logic (數理邏輯) [Herbert B. Enderton]
 - 數理邏輯 [汪芳庭]

電工電子學

 - 電工學簡明教程 [秦曾煌]

拓撲學

 - Basic Topology (基礎拓撲學) [M. A. Armstrong]
 - Topology (拓撲學) [James R. Munkres]

組合學

 - Discrete Mathematics and Its Applications (離散數學及其應用) [Kenneth H. Rosen]
 - Introductory Combinatorics (組合數學) [Richard A. Brualdi]
 - Concrete Mathematics : A Foundation for Computer Science (具體數學:計算機科學基礎) [Ronald L. Graham, Donald E. Knuth, Oren Patashnik]

計算理論

 - Introduction to the Theory of Computation (計算理論引導) [Michael Sipser]

數字邏輯電路

 - 數字電路基礎 [閻石]

形式語言與自動機

 - An Introduction to Formal Languages and Automata (形式語言與自動機導論) [Peter Linz]
 - Introduction to Automata Theory, Languages, and Computation (自動機理論、語言和計算導論) [John E. Hopcroft]

可計算性理論

 - Computability and Logic (可計算性與數理邏輯) [George S. Boolos]

計算復雜性理論

 - Computational Complexity : A Modern Approach [Sanjeev Arora, Boaz Barak]

計算機組成原理

 - Computer Organization and Design : The Hardware/Software Interface (計算機組成與設計:硬件/軟件接口) [David A. Patterson, John L. Hennessy]

形式語用學

 - Programming Language Pragmatics (程序設計語言:實踐之路) [Michael L. Scott]

形式語義學

 - The Formal Semantics of Programmin (程序設計語言的形式語義) [Glynn Winskel]

編譯原理

 - Compilers, Principles, Techniques and Tools (編譯原理) [Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman]
 - Modern Compiler Implementation in C (現代編譯原理:C 語言描述) [Andrew W. Appel]
 - Advanced Compiler Design and Implementation (高級編譯器設計與實現) [Steven S. Muchnick]

微機原理

 - 微機原理與接口技術 [孟虎]

計算機體系結構

 - Computer Architecture : A Quantitative Approach (計算機體系結構:量化研究方法) [John L. Hennessy, David A. Patterson]

程序設計語言

 - Thinking in Java (Java 編程思想) [Bruce Eckel]
 - CLR via C# [Jeffrey Richter]
 - The C Programming Language (C 程序設計語言) [Brian W. Kernighan]
 - The Standard C Library (C 標准庫) [P. J. Plauge]
 - C Programming : A Modern Approach (C 語言程序設計:現代方法) [K. N. King]
 - C Interfaces and Implementations : Techniques for Creating Reusable Software (C 語言接口與實現) [David R. Hanson]
 - C++ Primer [Stanley B. Lippman]
 - The C++ Programming Language (C++ 程序設計語言) [Bjarne Stroustrup]
 - The C++ Standard Library : A Tutorial and Reference (C++ 標准庫) [Nicolai M. Josuttis]
 - STL 源碼剖析 [侯捷]
 - Effective C++ [Scott Meyers]
 - More Effective C++ [Scott Meyers]
 - Effective STL [Scott Meyers]
 - Effective Modern C++ [Scott Meyers]
 - Inside the C++ Object Model (深度探索 C++ 對象模型) [Stanley B. Lippman]
 - Modern C++ Design : Generic Programming and Design Patterns Applied (C++ 設計新思維) [Andrei Alexandrescu]
 - Python Cookbook [Alex Martelli]
 - The Python Standard Library by Example (Python 標准庫) [Doug Hellmann]
 - Python 源碼剖析 [陳儒]

數據結構與算法

 - Introduction to Algorithms (算法導論) [Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein]
 - The Art of Computer Programming (計算機程序設計藝術) [Donald E. Knuth]
 - Data Structures and Algorithm Analysis in C++ (數據結構與算法分析:C++ 語言描述) [Mark Allen Weiss]

算法分析與設計

 - Introduction to the Design and Analysis of Algorithms (算法設計與分析基礎) [Anany Levitin]
 - Algorithmic Puzzles (算法謎題) [Anany Levitin, Maria Levitin]

匯編語言

 - 匯編語言 [王爽]

操作系統

 - Modern Operating System (現代操作系統) [Andrew S. Tanenbaum]
 - Operating Systems : Internals and Design Principles (操作系統:精髓與設計原理) [William Stallings]
 - Understanding the Linux Kernel (深入理解 Linux 內核) [Daniel P. Bovet, Marco Cesati]
 - Linux Kernel Development (Linux 內核設計與實現) [Robert Love]

 - Programming Applications for Microsoft Windows (Windows 核心編程) [Jeffrey Richter]

線性代數

 - 線性代數 [李尚志]
 - 高等代數簡明教程 [藍以中]
 - Linear Algebra Done Right (線性代數應該這樣學) [Sheldon Axler]
 - Introduction to Linear Algebra (線性代數導論) [Serge Lang]
 - Linear Algebra and Its Applications (線性代數及其應用) [David C. Lay]
 - Introduction to Linear Algebra [Gilbert Strang]
 - Linear Algebra and Its Applications [Gilbert Strang]

數學分析

 - 簡明微積分 [龔昇]
 - 數學分析新講 [張築生]
 - Thomas’ Calculus (托馬斯微積分) [George B. Thomas]
 - 數學分析 [卓里奇]
 - 數學分析習題集 [吉米多維奇]
 - Mathematical Analysis (數學分析) [Tom M. Apostol]
 - Mathematical Analysis [Vladimir A. Zorich]
 - Principles of Mathematical Analysis (數學分析原理) [Walter Rudin]

概率論

 - A First Course in Probability (概率論基礎教程) [Sheldon M. Ross]
 - An Introduction to Probability Theory and Its Applications (概率論及其應用) [William Feller]
 - 概率論 [蘇淳]

數理統計

 - 概率論與數理統計 [陳希孺]
 - 數理統計學簡史 [陳希孺]
 - 數理統計學教程 [陳希孺]
 - Introduction to Mathematical Statistics (數理統計學導論) [Robert V. Hogg, Allen T. Craig, Joseph W. McKean]
 - All of Statistics (統計學完全教程) [Larry Wasserman]

 - 數理統計 [韋來生]

矩陣論

 - 線性代數與矩陣論 [許以超]
 - 矩陣論 [方保鎔]
 - Matrix Analysis (矩陣分析) [Roger A. Horn]

常微分方程

 - 常微分方程 [阿諾爾德]

實變函數

 - 實變函數論 [那湯松]

復變函數

 - 復變函數 [嚴鎮軍]
 - 復變函數論方法 [拉夫連季耶夫, 沙巴特]

隨機過程

 - 隨機過程 [伊藤·清]
 - Stochastic Processes (隨機過程) [Sheldon M. Ross]
 - Introduction to Probability Models (應用隨機過程:概率模型導論) [Sheldon M. Ross]

回歸分析

 - 回歸分析 [謝宇]

運籌學

 - Introduction to Operations Research (運籌學導論) [Frederick S. Hillier]

偏微分方程

 - Basic Partial Differential Equations (基礎偏微分方程) [David Bleecker]
 - Partial Differential Equations [Lawrence C. Evans]

實分析

 - 陶哲軒實分析 [陶哲軒]
 - Real Analysis [Halsey L. Royden]
 - Real Analysis : Measure Theory, Integration, and Hilbert Spaces [Elias M. Stein, Rami Shakarchi]

復分析

 - 簡明復分析 [龔昇]
 - Complex Analysis (復分析) [Lars V. Ahlfors]
 - Complex Analysis [Elias M. Stein]

數值分析

 - Numerical Analysis (數值分析) [Timothy Sauer]

最優化理論

 - 最優化理論與方法 [袁亞湘]
 - 最優化理論與算法 [陳寶林]
 - 非線性優化計算方法 [袁亞湘]
 - Nonlinear Programming (非線性規划) [Dimitri P. Bertsekas]
 - Convex Optimization (凸優化) [Stephen Boyd, Lieven Vandenberghe]
 - Numerical Optimization (數值最優化) [Jorge Nocedal, Stephen Wright]

多元統計分析

 - 多元統計分析 [王靜龍]
 - 實用多元統計分析 [管宇]

 - Applied Multivariate Statistical Analysis (實用多元統計分析) [Richard A. Johnson]

泛函分析

 - 實變函數論與泛函分析 [夏道行, 吳卓人, 嚴紹宗, 舒五昌]
 - Introductory Functional Analysis with Applications [Erwin Kreyszig]
 - Functional Analysis (泛函分析) [Walter Rudin]

測度論

 - 測度論講義 [嚴加安]
 - Measure Theory (測度論) [Paul R. Halmos]

數學模型

 - Mathematical Modeling (數學建模方法與分析) [Mark M. Meerschaert]
 - A First Course in Mathematical Modeling (數學建模) [Frank R. Giordano, William P. Fox, Maurice D. Weir]

機器學習

 - 機器學習 [周志華]
 - Computational Intelligence : An introduction (計算智能導論) [Andries P. Engelbrecht]
 - 統計學習方法 [李航]
 - The Nature of Statistical Learning Theory (統計學習理論的本質) [Vladimir N. Vapnik]
 - 支持向量機:理論、算法與拓展 [鄧乃揚, 田英傑]
 - Machine Learning (機器學習) [Tom M. Mitchell]
 - Machine Learning in Action (機器學習實戰) [Peter Harrington]
 - Pattern Classification (模式分類) [Richard O. Duda]
 - Pattern Recognition And Machine Learning [Christopher M. Bishop]
 - The Elements of Statistical Learning [Trevor Hastie, Robert Tibshirani, Jerome Friedman]
 - Machine Learning : A Probabilistic Perspective [Kevin P. Murphy]
 - Probabilistic Graphical Models : Principles and Techniques (概率圖模型:原理與技術) [Daphne Koller, Nir Friedman]

電路分析

 - 電路原理 [江緝光, 劉秀成]

 - Introductory Circuit Analysis (電路分析導論) [Robert L. Boylestad]

信號與系統

 - 信號與系統 [鄭君里]
 - Signals and Systems (信號與系統) [Alan V. Oppenheim, Alan S. Willsky]

數字信號處理

 - 數字信號處理:理論、算法與實現 [胡廣書]
 - Digital Signal Processing : A Practical Guide for Engineers and Scientists (實用數字信號處理:從原理到應用) [Steven W. Smith]
 - Discrete-Time Signal Processing (離散時間信號處理) [Alan V. Oppenheim, Ronald W. Schafer, John R. Buck]

數字圖像處理

 - Digital Image Processing (數字圖像處理) [Kenneth R. Castlema]
 - Digital Image Processing (數字圖像處理) [Rafael C. Gonzalez, Richard E. Woods]

計算機圖形學

 - The Nature of Code (代碼本色:用編程模擬自然系統) [Daniel Shiffman]
 - Fundamentals of Computer Graphics (計算機圖形學) [Peter Shirley, Michael Ashikhmin, Steve Marschner]
 - Computer Graphics : Principles and Practice in C (計算機圖形學原理及實踐:C 語言描述) [James D. Foley, Andries van Dam, Steven K. Feiner, John F. Hughes]
 - Physically Based Rendering [Matt Pharr, Greg Humphreys]

 - OpenGL Programming Guide (OpenGL 編程指南) [Dave Shreiner]

認知神經科學

 - Principles of Neural Science (神經科學原理) [Eric R. Kandel]
 - Cognitive Neuroscience : The Biology of the Mind (認知神經科學:關於心智的生物學) [Michael S. Gazzaniga, Richard B. Ivry, George R. Mangun]
 - The Quest for Consciousness : A Neurobiological Approach (意識探秘:意識的神經生物學研究) [Christof Koch]
 - Theoretical Neuroscience : Computational and Mathematical Modeling of Neural Systems [Peter Dayan, Laurence F. Abbott]
 - 視覺信息處理的腦機制 [壽天德]
 - Neuronal Dynamics : From single neurons to networks and models of cognition [Wulfram Gerstner, Werner M. Kistler, Richard Naud, Liam Paninski]

神經網絡

 - Neural Networks : A Comprehensive Foundation (神經網絡原理) [Simon O. Haykin]
 - Neural Networks and Learning Machines (神經網絡與機器學習) [Simon O. Haykin]
 - Neural Networks for Applied Sciences and Engineering (神經網絡在應用科學和工程中的應用) [Sandhya Samarasinghe]
 - Neural Network Design (神經網絡設計) [Martin T. Hagan]
 - Parallel Distributed Processing [David E. Rumelhart, James L. McClelland]
 - Deep Learning [Ian Goodfellow, Yoshua Bengio, Aaron Courville]
 - Learning Deep Architectures for AI [Yoshua Bengio]

計算機視覺

 - Concise Computer Vision : An Introduction into Theory and Algorithms [Reinhard Klette]
 - Computer Vision : A Modern Approach (計算機視覺:一種現代方法) [David A. Forsyth, Jean Ponce]
 - Computer Vision : Algorithms and Applications (計算機視覺:算法與應用) [Richard Szeliski]
 - Multiple View Geometry in Computer Vision (計算機視覺中的多視圖幾何) [Richard Hartley]
 - 計算機視覺中的數學方法 [吳福朝]

 - Learning OpenCV : Computer Vision with the OpenCV Library (學習 OpenCV) [Gary Bradski, Adrian Kaebler]

其他

 - Code : The Hidden Language of Computer Hardware and Software (編碼:隱匿在計算機軟硬件背后的語言) [Charles Petzold]
 - Computer Science : An Overview (計算機科學概論) [J. Glenn Brookshear]
 - Structure and Interpretation of Computer Programs (計算機程序的構造和解釋) [Harold Abelson, Gerald Jay Sussman, Julie Sussman]
 - Computer Systems : A Programmer’s Perspective (深入理解計算機系統) [Randal E. Bryant]
 - Artificial Intelligence : A Modern Approach (人工智能:一種現代方法) [Stuart J. Russell, Peter Norvig]
 - On Intelligence (人工智能的未來) [Jeff Hawkins, Sandra Blakeslee]
 - Introduction to Data Mining (數據挖掘導論) [Pang-Ning Tan, Michael Steinbach, Vipin Kumar]
 - Refactoring : Improving the Design of Existing Code (重構:改善既有代碼的設計) [Martin Fowler]
 - CUDA by Example : An Introduction to General-Purpose GPU Programming (GPU 高性能編程 CUDA 實戰) [Jason Sanders, Edward Kandrot]
 - The CUDA Handbook : A Comprehensive Guide to GPU Programming (CUDA 專家手冊:GPU 編程權威指南) [Nicholas Wilt]
今年已經大三了,對於cs還是有一些體會的。
我曾經問過我的老師一個問題:cs的核心是什么,學習的重點應該放在哪里?他沒有馬上回答我,而是反問了一個問題:什么是計算機這碗飯的核心,什么知識使得你和電子、電氣、自動化、軟件這些專業的同學不一樣?當然,也必須是 高等職業技術學院 之外的東西?
題主,現在我已經有了我的答案,這個問題我也送給你,希望你能夠想一想。

我看了一下我們的培養計划,把大一大二我覺得比較重要的課程挑出來,供參考。
數學類:線性代數,微積分,離散數學(這是我覺得數學類里面最重要的)還有概率論與數理統計。覺得數學類的自學主要還是做題,先看書,然后做題,做題不會了再回去看書,然后再回頭做題。
語言類:我們是用Python入門的,我個人也覺得Python比較容易上手,我覺得開始學習的時候Python太高級的特性不用去了解,了解一些基礎的工具就可以,然后開始動手寫代碼,做到能夠編寫一些簡單的程序,在其中加深了解函數,數組,列表等的用法。然后再學C語言,主要再加深對於數組,字符串,指針的理解。最后過渡到C++,深入了解一下面向對象,類,繼承這些概念,然后用C++大量的練習代碼(主要指數據結構和算法),然后可以再回過頭看Python的高級特性。我覺得在本科階段能夠熟練使用C++和Python就足夠了。
計算機專業課程類:數據結構,算法(這兩個我覺得是最重要的),還有計算機組成原理。自學的方式:練題,把你學到看到的數據結構和算法全都實現一遍,同時也練編程語言和思維。

其實在實際編程的過程里面我說的那些數學類除了離散數學其他的用到的並不多,但是如果想在計算機方面有一些發展,那么我建議還是要打好數學的基礎。
然后,不要只是看,一定要動手寫,只有在實際動手的時候才會注意到一些細節,印象也更深刻。
有了問題要學會去搜索,爭取自己找到解決問題的方法,快速定位問題也是能力。
網易雲課堂上面有一些我上面提到的課程,我看過一些,也上過一些老師的課,希望題主能夠利用上。(王宏志老師的算法課非常好,而且內容比我們上課時還多一些)

有什么問題也可以私信我,如果能提供幫助我也非常願意,畢竟原來也走了很多彎路。

原來也有一個和你情況差不多的,我也說了好多,然后發現根本執行不下去,可能你們的學校內環境也不太好,怎么樣堅持住自己的想法就變得尤其重要,希望你能成功。

最后說了這么多,也只是建議,而已,僅此而已。實際去做的時候說到底還是只能靠你自己,外界能夠提供的幫助有限,非常有限。資源遍地都是,相信你也能找到更好的。執行才是最根本的問題。所以少想多做吧少年,只有動手的時候思路才會更開闊。

以上。
補一句個人意見也是請教大家的一個問題
我就是照這個搞得,我個人認為這個書單在保證最簡的模式下涵蓋了全部計算機的核心知識,而且恰都是實用且通用的。希望有前輩看后也能順便指出我的知識結構中的漏洞。

——————

樓上的前輩們給的路線都是偏向工程的。
我可以給你推薦一個我親自用過的書單,私認為很適合“計算機科學”這個專業的修行體系。如果你想省心的話,以下是最簡模式。

第0層:理工基礎
《數學復習全書》數一 《英語六級》
第一層:
《離散數學及其應用》《計算理論導引》
第二層:
《軟件設計師教程》第四版
第三層:
《算法》||《算法導論》
if cpp
《數據結構算法與應用cpp語言描述》
第四層:(具體工程類)
《軟件體系結構設計》等等。

對於普通大學生我非常建議以考帶學,因為考試本身帶給你一直繼續的動力,目標明確,考察結構合理清晰,但不要為了考試而考試。

ps:第0層是一個理工類學生的基本素養,
英語幾乎算是計算機的專業課了,此外數一中的前二者基本是現代數學體系的開始(分析與代數)而概率則是現代科學解決許多問題的根本原理。
第一層則是一個cs方向的基本理論素養,離散中已經涵蓋了數門學科,如果有興趣的話可以再單獨掌握《組合數學》一些《運籌學》知識,就構成了完善的通用計算機科學基礎。
第二層是cs的一個實用基礎,特別是面對現代計算機工程領域的一個精簡,推薦你另外考計算機四級數據庫方向和ccna,這三個方向很重要是因為他基本代表了數據的存儲(數據庫)處理(計算機)和傳輸(網絡),是每個cser都應該掌握的核心線。
第三層則是軟件構建層面的部分,工程的基礎部分,算法。
第四層則是工程的具體部分軟工,軟件體系結構,設計模式等等,自行決定具體便好

手機打字,見諒

下邊也補一句
這個書單的另一個好處就是你三年搞完了還多出了考研能力,一個國家中級職稱(工程師),一個四級計算機證,一個六級英語證,一個ccna證。基本本科找工作把這些證摔出去對大多數公司也是很強的說服力了
我想這張圖應該對題主有用:

>

這是網易公開課的學習路徑圖,對哪個感興趣就去學吧,計算機的很多知識都是相互關聯的,不用糾結切入點,隨便選一個,最后都能連成網。

我說一下我上過的課程順序吧。

大一上:
c語言,高數上,線性代數
大一下:
c++,數字邏輯,高數下,匯編語言,概率論和數理統計
大二上:
java,數據結構,計算機組成原理,離散數學上
大二下:
操作系統原理,編譯原理,軟件工程概論,離散數學下,UML
大三上:
XML,數值分析,嵌入式操作系統(linux,android),J2EE,數據庫系統原理,軟件測試,雲計算
大三下:
計算機網絡基礎,軟件體系結構,多媒體技術,移動互聯網應用開發技術,軟件體統分析和設計,計算機視覺,VC++程序設計

有些是選修課,僅供參考
先把語言基礎打好,c的話可以看 the c programing language和c primer plus,至少掌握一門面向對象語言,然后學離散數學,數據結構與算法。以后可以上操作系統,數據庫,計算機網絡,不要在大一時候學太多商業化技術(比如說web開發,app開發),雖然很容易激發興趣,但是以后很可能會發現自己浪費了很多時間在寫白菜代碼。基礎是萬年不變的硬道理。基礎扎實了學啥不容易?

1.學好英語
2.刷完伯克利61A 61B 61C,推薦再看看龍書
3.刷完leetcode
到這步差不多也知道要學什么更細的方向了

Ps:編程實踐及其重要,每一個知識點都一定要編程實現一下,可以動手寫一個操作系統、編譯器之類的對整個計算機體系結構理解會加深很多,千萬不要只看書
好多課程,比如說coursera,還有一大堆國際名校課程,比如說cs61a,還有網易雲課堂,挺好的,
想做程序員的行政管理本科生
我也大一,這是我從一本書里截的圖,希望能幫到你。

作者用類似金字塔的結構體現了本科四年的課程體系。電路和數學是基礎,然后是各種數據結構、語言、組原、操作系統等等。
然后……其實我也很糊塗,,,Orz。還是看圖吧,按這個學肯定沒問題……就是太多

執行力特別重要!!!!!!
我只是來推薦些書的

有趣的科普(故事)書:
《世界是數字的》 《浪潮之巔》
《黑客與畫家》 《線上幽靈》(這本純屬故事書~沒什么科普,但是了解了社工的帥氣)
輕松的科普書:
《編碼》《程序員的數學》
科普書:
《C程序設計語言》《C Primer plus》

嗯,暫時就這些都是我看完了的,或者正在看的~

其實學計算機感覺自學能力和找資源的能力比較重要啦~幾本幾本都是次要的~

慕課也是一個不錯的自學網站。

:轉自知乎


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com