自学计算机专业课程-it指南

自学

​```sequence
title: 计算机自学路线图
participant 数学基础&专业基础理论 as C
participant 编程语言&实用技术 as S
C->S: 1.高等数学;离散数学;线性代数;概率统计
S->C: 2.C/C++;Java/C#;Python;JavaScript
note left of C: 0基础
note right of S: 深入钻研
C->>S: 并行学习
S->>C: 并行学习
C->S: 3.数据结构与算法;计算机组成原理;操作系统;计算机网络
S->C: 4.各种流行的开发框架和工具
note right of S: 人工智能;图形图像;云计算;物联网
note over C,S: 特定技术领域
​```

计算机自学路线图

​ 浪潮之巅-it产业讲的比较好

title: 计算机自学路线图
participant 数学基础&专业基础理论 as C
participant 编程语言&实用技术 as S
C->S: 1.高等数学;离散数学;线性代数;概率统计
S->C: 2.C/C++;Java/C#;Python;JavaScript
note left of C: 0基础
note right of S: 深入钻研
C->>S: 并行学习
S->>C: 并行学习
C->S: 3.数据结构与算法;计算机组成原理;操作系统;计算机网络
S->C: 4.各种流行的开发框架和工具
note right of S: 人工智能;图形图像;云计算;物联网
note over C,S: 特定技术领域

ACM总结的18个计算机科学关键领域

缩写 关键知识领域(英文名称) 说明
AL Algorithms and Complexity 算法与复杂度
AR Architecture and Organization 体系结构与组织
CN Computational Science 计算科学
DS Discrete Structures 离散结构
GV Graphics and Visualization 图形与可视化
HCI Human-Computer Interaction 人机交互
IAS Information Assurance and Security 信息安全
IM Information Management 信息管理
IS Intelligent Systems: 智能系统
NC Networking and Communication 网络与通讯
OS Operating Systems 操作系统
PBD Platform-based Development: 基于特定平台的开发
PD Parallel and Distributed Computing 并行与分布式计算
PL Programming Languages 编程语言
SDF Software Development Fundamentals 软件开发基础
SE Software Engineering 软件工程
SF Systems Fundamentals 系统基础
SP Social Issues and Professional Practice 社会性主题与职业实践

关键知识领域(Knowledge Area,KA)

  • 核心(Core)内容
  • 选修(Elective)内容

衡量掌握程度

  • Familiarity(了解):What do you know about this ?

  • Usage(会用):What do you know how to do ?

  • Assessment(评估与决断):Why would you do that ?

    熟悉():你知道吗?

    使用():你知道怎么做吗?

    评估():你为什么要这样做呢?

一、数学基础

高等数学(同济版)必修!

  • 主要微积分,主讲法则定理证明习题;不讲发展历史,应用,强调具体的思路
  • (普林斯顿的)微积分读本:就是作者的内心独白,

线性代数

  • 先读科普的 《漫画线性代数》

  • 《线性代数及其应用》 真实的展现了应用

离散数学=高等数学+线性代数 。必修!

  • 《数学之美》 先学《离散数学导学》

  • 推荐: 《离散数学及其应用》

概率统计 大数据需要的

二、专业基础课

前四个是考研必须要的,还有编译原理,面向对象的方法,数据库理论,软件工程。。。

全局观:

1、《计算机科学概论》

Nell Dale的《计算机科学概论》

采用剥洋葱的方式从内向外介绍计算机科学

J.GlennBrookshear的《计算机科学概论》

每一个主题自然而然地引导出下一个主题,由具体到抽象逐步推进。

2、《深入理解计算机系统》

1.数据结构与算法

Data structure and algorithm

主要内容:数据结构与算法的理论基础、各种数据结构/算法的介绍

书籍:《数据结构与算法分析》(java语言描述)、《算法图解》、《算法基础》

学习目的:

算法要培养的核心能力–是–>针对特定问题,设计解决方案—需要用到—>算法的设计算法的评估

算法要培养的核心能力–包容–>算法的设计算法的评估

学习前提:离散数学、编程语言

初步了解:《算法图解》《算法基础》

入门:《数据结构与算法》

深入学习:《算法导论》《算法》

2.0 计算机组成原理 (考研科目)

书籍:《计算机组成与设计》(看这个,也叫做计算机组成原理)

顺序:数字电路基础->计算机组成原理->操作系统->

​ ->编译原理->–

学习内容

  • 计算机系统概述
  • 指令集设计
  • 处理器设计
  • I/O与存储系统设计
  • 并行计算系统设计
  • 云计算平台技术

学习要点

指令集(Intel IA32/64 、MIPS 、ARM)<–汇编程序员看到的计算机

^ (实现)

(实现)

微体系结构 <–CPU(芯片)设计者看到的计算机

计算机体系结构 <–实现计算机设计者看到的计算机

学习顺序:

《编码》(隐匿在计算机硬件背后的语言)->《计算机组成与设计》->《计算机体系结构》

中间的书或者为:《计算机存储与外设》、《计算机组成原理》

2.操作系统

“操作系统”与程序员

软件工程—-〉第N+1层

操作系统—-〉第N-1层

多数程序员日常工作所在的技术层次—-〉第N层

学习前提:

数据结构与算法、计算机组成原理、编程语言(c语言)

可以做:

信息安全;编译原理;计算机网络

书籍:

经典教材:《操作系统-精髓与设计原理》

专业书籍

•《Linux内核》

•《深入解析Windows》第六版

“操作系统”的学习方法

主要学习的是 操作系统原理

  • C编程完成教材作业

  • 掌握Linux Shell编程,玩转Linux

  • 使用Java/C#等开发网络或多线程应用程序

  • 使用工具完成相应试验

3.数据库

crud增删改查(程序员必须掌握的)

crud 增查改删,sql

增加(Create)、读取(Read)、更新(Update)和删除(Delete)。 crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。

Create new records创造新的记录 read existing records阅读现有记录—主要的select * from users Update existing records更新现有的记录 Delete existing records.删除现有记录。

4.网络(计算机网络)

经典教材:(多遍阅读法)

《计算机网络教程》(自顶而下方法);计算机网络(第5版);计算机网路(系统方法)

学习前提:

编程语言(C/Java/Python);数据结构与算法;操作系统

学习方法:

科普读物;专业教材;特定领域技术书籍

加强途径:

开发网络应用;使用特定编程语言/平台的网络库

关键弄明白:

计算机是如何连接的;数据是如何在计算机网络中传送的;网络软件系统应该如何构建

“计算机网络”具体学习建议

  • 理解分层架构

  • 阅读相关科普书籍

  • 动手编写网络程序

  • 学会使用Wireshark之类工具抓包

三、编程语言:

从事软件开发必须要掌握的

  • C/C++ c数据结构与算法

  • Java/C# 面向对象;jdk学习算法

  • Python:大学、大数据时代很重要

  • JavaScript:web应用,动态语言,

无类型: 汇编 弱类型、静态类型 : C/C++ 弱类型、动态类型检查: Perl/PHP 强类型、静态类型检查 :Java/C# 强类型、动态类型检查 :Python, Scheme 静态显式类型 :Java/C 静态隐式类型 :Ocaml, Haskell

四、实用技术

各种流行的开发框架和工具

《 如何自学计算机专业课程 》
《 程序员是怎样练成的? 》 2017 年 7 月
《 人在 IT 计算机 专业学生职业发展规划》

解答:
计算机专业学习中观念坑人的?

• 学霸与学渣区别在哪?
• 计算机专业学习中有哪些做法是违背人类学习与认知规律的?
• 怎样选择一本合适的教材?
• 为什么我看不懂那些专业教材?
• 有哪些有效的计算机专业教材阅读方法?
• 如何以经济的方式应付大学里的专业课考试?
• 如何准备研究生入学考试中的计算机专业课?
• 针对具体课程给出一些学习建议:
数学、编程语言、软件工程、数据结构与算法、计算机网络、操作系统、计算机组成与设计……

深入钻研-特定技术领域

人工智能:我的最爱啦;机器学习(必须要学习好数学的基本知识,不然不好懂)

  • 《人工智能》李开复、《智能时代》吴军

图形图像 :数据可视化

云计算

物联网

记忆

学习之道

  • 学习是形成组块的方法,组块可以做成长期记忆。
  • 紧密连接的知识集合,构成“组块”
  • 人类学习的过程,就是把吸收的知识转换为组块,并将其移入长期记忆的过程。

–适当休息与及时整理,让信息有条理且彼此之间联结牢固

–短时间向大脑灌入过多的知识,不给消化吸收的时间,神经元之间的连接难以形成和巩固。(培训班,速成学习)

场景式学习法:

零散的组块,重组的过程,不是一次完成的,需要多次,建立了关联的组块

(1)我们要干特定事,解决特定的问题……

(2)我们主动学习,掌握足够多的组块

(3)我们应用组块,聪明地解决特定的问题

有效学习的基本原则

  • 学习必须循序渐进,并且通常需要多次反复
  • 学习需要高度可控、即时反馈和一个进度条
  • 学习需要明确目标,不同的目标导致不同的学习策略

学习要遵循人的认知规律

  • 从感性到理性
  • 从具体到抽象
  • 理论必须在实践中才能真正学好

知识之网的遍历(学习)方法

  • 中心开花式的学习方法

  • 从己经掌握的节点出发,进行广度遍历

  • 从己经掌握的节点出发,进行深度遍历(推荐)

分类阅读法:偏理论

  • 科普读物:(感性)了解背景,明了术语和概念,建立全局观

  • 计算机专业教材:(理性)打好计算机科学理论基础,培养学习后劲

  • 特定领域技术专著了解背景:(较为复杂与抽象)针对典型场景,总结开发经验,解决各种实际问题针对特定领域,深入探究其中的规律与奥秘

偏实践

  • 21天/7天/零基础 :从实践入手,引发兴趣,带入大门

  • XXX框架/XXX开发:系统介绍特定领域基础开发技巧,教你学会使用这个框架或工具

知识的形成

最后配图


​```sequence
title: 知识的形成
participant 零散的Knowledge as C
participant 组块化的Experience(经验) as S
participant 网状Creativity(创造力) as Z
C->S: 路漫漫其修远兮
S->Z: 想一想
note left of C: 
note left of Z: 
note right of S: 好好学也
note over C,S:
​```
title: 知识的形成
participant 零散的Knowledge as C
participant 组块化的Experience(经验) as S
participant 网状Creativity(创造力) as Z
C->S: 路漫漫其修远兮
S->Z: 想一想
note right of S: 好好学也

他山之石

计算机考研基础

常用工具GUI图

GUI图
Tkinter : Tkinter
wxPython: wxPython
PyGTK: PyGTK
PyQt: PyQt
PySide: PySide

Web框
django: django
web2py: web2py
flask: flask
bottle: bottle
tornadoweb : tornadoweb
webpy: webpy
cherrypy: cherrypy
jinjs: jinja

科学计算
numpy: numpy
sciPy: scipy
pandas: pandas
blaze: blaze
cryptography: gyp!egepby
hashids: hashids
Paramiko: Paramiko
Passlib: Passlib
PyCrypto: PyCrypto
PyNacI: PyNacI

爬虫技术
urllib	urIIib2	requests
scrapy:  scrapy
pyspider: pyspider
portia: portia
htm12text: htm12text
BeautifulSoup: BeautifulSoup
Ixml: Ixml
selenium: selenium
mechanize: mechanize
PyQuery: pyquery
creepy: creepy

图像处理
bigmoyan: scikit-image
Python Imaging Library (PIL) :  
pillow: pillow
python-qrcode: python-qrcode

自然语言处理
nltk: nltk
snownlp: snownlp
Pattern: pattern
TextBIob: textblob
Polyglot: polyglot
jieba: jieba

数据库驱动
mysql-python: mysql-python
PyMySQL: PyMySQL
PyMongo: PyMongo


编程书籍-附带链接

经典编程书籍大全

100+ 经典技术书籍,涵盖:计算机系统与网络、系统架构、算法与数据结构、前端开发、后端开发、移动开发、数据库、测试、项目与团队、程序员职业修炼、求职面试 和 编程相关的经典书籍。

这个列表综合了伯乐在线网站以往推荐经典书籍文章中的列表,以及在微信和微博中被广泛推荐的好书。虽然已经包括了100多本,覆盖的面也比较全。仍然有很多方面需要补充,而且相信还有很多没有被收录的好书。欢迎大家在 issues 中推荐或自荐。

  1. 计算机系统与网络

  1. 编程通用

  1. 算法与数据结构

  1. 职业修炼与规划

  1. 大师访谈

  1. 架构/性能

7. Linux / Unix

Web前端

Java开发

.NET/.NET Core

Python

Android

iOS

PHP

C语言

C++

机器学习和数据挖掘

数据库

测试

项目与团队

求职面试

编程之外

参考文献


打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦