如何自学计算机?自学历程

Learning-of-Computer-Science

0. Basic/Introduction

  • CS50: Introduction to the intellectual enterprises of computer science and the art of programming.
  • CS106B Programming Abstractions: this is a basic/introductory course from Stanford whose content includes knowledge of object-oriented programming, data structures (collections, graphs, etc.).
  • Computer Organization & Systems: CS107 is the third course in Stanford’s introductory programming sequence. The CS106 courses provide you with a solid foundation in programming methodology and abstractions, and CS107 follows on this to build up and expand your breadth and depth of programming experience and techniques. The course will work from the C programming language down to the microprocessor to de-mystify the machine.
  • Mathematical foundations of computing: This course is about mathematical techniques that are useful in computer science, to analyze algorithms and prove impossibility results. The course has four parts: (1) introduction to the kind of discrete mathematics that is useful in computer science, including sets, graphs and proofs by induction; (2) finite automata, which model simple linear-time algorithms and capture the power of regular expressions — we will be able to understand the power and limitation of this class of algorithms inside out; (3) turing machines and undecidability, in which we study the power of arbitrary algorithms that are allowed arbitrarily large running times — we will show that there are several important problems that are unsolvable even under such conditions; (4) complexity theory and NP-completeness, which is concerned with the study of what we can do with efficient algorithms.

1. Mathematical Background

1.1 Calculus

  • Thomas Calculus: Thomas’ Calculus helps students reach the level of mathematical proficiency and maturity you require, but with support for students who need it through its balance of clear and intuitive explanations, current applications, and generalized concepts. In the 14th Edition, new co-author Christopher Heil (Georgia Institute of Technology) partners with author Joel Hass to preserve what is best about Thomas’ time-tested text while reconsidering every word and every piece of art with today’s students in mind. The result is a text that goes beyond memorizing formulas and routine procedures to help students generalize key concepts and develop deeper understanding. This course (Course Link) could definitely help you intuitively get a better understanding of Calculus and it is really the best course I have ever taken.

1.2 Linear Algebra

  • MIT Linear Algebra: This course parallels the combination of theory and applications in Professor Strang’s textbook Introduction to Linear Algebra. The course picks out four key applications in the book: Graphs and Networks; Systems of Differential Equations; Least Squares and Projections; and Fourier Series and the Fast Fourier Transform. This course (Course Link) could definitely help you intuitively get a better understanding of Calculus and it is really the best course I have ever taken. Moreover, this interactive book (Book) could help you learn Linear Algebra more interestingly.

1.3 Probabilistic

  • MIT RES.6-012: Probability is the science of how likely events are to happen. At its simplest, it’s concerned with the roll of a dice, or the fall of the cards in a game. But probability is also vital to science and life more generally. I really recommend this course from MIT, and this book (Book) is the most comprehensive dictionary of probability and statistics I have ever seen.

Besides, as the course is too long, people have to spend a lot of time following it, there are some lecture notes which could help you have an overview of probalistic quickly.

1.4 Statistic

This course from MIT, named Statistics for Applications (video). This course offers an in-depth the theoretical foundations for statistical methods that are useful in many applications. The goal is to understand the role of mathematics in the research and development of efficient statistical methods. And for people who prefer slides, this Site may could help you, and chinese version blog.

2. Core Course in Computer Science

2.1 Operating system

2.2 Compiler

2.3 Computer network

2.4 Algorithm

  • DESIGN AND ANALYSIS OF ALGORITHMS: This course will cover the basic approaches and mindsets for analyzing and designing algorithms and data structures. Topics include the following: Worst and average case analysis. Recurrences and asymptotics.
  • fucking-algorithm: Crack LeetCode, not only how, but also why.

2.5 Computer/Digital system design/architecture

2.6 Database

  • Data Management and Data Systems: This course covers how to use databases in applications, first principles on how to scale for large data sets and how to design good data systems.

3. Complementary

更多更新:点击这个Link

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值