Programming self-learning guide for beginners

Source: Internet
Author: User

Programming self-learning guide for beginners

About this Guide

Many younger siblings asked me how to learn programming. According to the DRY law (Don't Repeat Yourself), I 'd like to organize some of my learning experience into a blog. As I am still at the learning stage, I have not learned all the content listed in the article. Therefore, there may be some problems with the objectivity of the article. I hope readers can determine it by themselves.

This Guide will be updated occasionally. If you have good suggestions, you can leave a message or send me an email.

  Preparation

All the tools you need are a computer that can connect to the network and yourself.

   Scientific Internet access

Unfortunately, even now, most of the students studying computer science still do not access the internet. In the current network environment, there is no scientific Internet access, which means you cannot use Google to search for information, and you cannot use Reddit to view the latest information. You need to endure the fast-paced GitHub and cloud. However, scientific Internet access is a very low cost. If you don't want to make any effort, you can spend hundreds of dollars a year to buy a ready-made service, you can buy a server and set up an Internet tool on your own. This step is very important and cannot be skipped. Otherwise, many of the content in the following guide can only be 404 for you.

I will not talk about the specific content of scientific Internet access. I will give you a keyword: Lantern.

   Learn to use Google Search

After learning to access the Internet scientifically, you can use Google. Why not Baidu? I believe you will understand it after using Google.

After one semester of teaching assistants, I found that many students are not aware of the use of search engines. If they encounter problems, they either die or turn to others directly. These two methods are not very good. The correct method is to have no results after you think about them, and then use the search engine to find the problem. At this stage, all the problems you encounter (almost) all of them can find the answers on Google. If they are not found, they are definitely incorrect methods for searching.

Using Google's basic search function can solve most of the problems. Of course, if you want to learn more advanced skills, here is a guide: how to make good use of Google and other search engines ?.

   English

You have to admit that, until now, the mainstream programming language is English, so the quality of English determines the upper limit of your programming ability. Compared with English documents, Chinese documents are too scarce, and the quality is relatively low. For example, many of the courses I mentioned later are in English.

Fortunately, the level of English required for reading programming materials does not need to be high. In my personal experience, Level 4 is enough, and there may be some new words, but it basically does not impede understanding.

English learning should always run through programming. As a tool language, it takes only a small amount of time to bring about great benefits (the 2/8 rule ).

My English skills are not good, but I can basically read technical books and documents and understand open classes, so I still have some simple experience to share.

   Change the system to English

Some people may have a headache when they see English, because they have been living in a Chinese environment for too long. For this reason, you can try to replace the commonly used system with an English one. Although you cannot learn a few words (such as Copy/Paste), it can make you not so exclude English, by the way, you can also upgrade the B lattice (by mistake ).

   Install an electronic dictionary

In OS X, we recommend the Oulu dictionary. You can purchase the full version in APP Store because you need to add an external dictionary.

Here we recommend a better dictionary: Collins English-Chinese dictionary, which looks like this:

It mainly depends on its English explanation. When a word is read more often, it will be remembered.

   Read English documents every day

Websites that are frequently read by individuals:

  • Quora: a q & A website similar to zhihu. You can read the content you are interested in.

  • Hacker News: IT information, the latest events in the IT field will be on top.

  • PROGRAMMING: the Programming section of Reddit, similar to Hacker News, focuses more on technical content.

Do not spend too much time on it. Just browse it every day.

   English learning Summary

English is not something that can be achieved quickly, nor can it be completed in just a few words. Here is a simple guide. Please search for more professional learning guides for specific learning plans.

  Programming Basics

After learning this part of content, you should have:

  • What is Computer Science?

  • Basic Computer mathematical capabilities

  • BASIC program development capabilities

  • Basic algorithm and Data Structure Knowledge

   Introduction to computer science
  • Introduction to Computer Science and Programming: for people without Programming basics or with only a few basics, use Python as the teaching language.

  • Intensive Introduction to Computer Science Open Learning Course: CS50, Harvard is a very popular class. You can find translation video content in the Netease Open Class. The topics covered include algorithms (design, application, and analysis), software development (abstraction, encapsulation, data structure, debugging, and testing), and computer architecture. It is basically an introductory course. The languages used are C, PHP, and JavaScript.

  • Programming into actions: introduces more advanced Programming topics (recursion, algorithm analysis, data abstraction, etc.), using C ++ as the teaching language.

  Mathematics
  • Mathematics for Computer Science: Describes some mathematical knowledge required to learn computers, including set, relationship, proof method, number theory, and graph theory.

  • Discrete Mathematics: Discrete Mathematics.

   Programming Language
  • Learn to Program: The Fundamentals: for people without a basic programming or only a few basics, use Python as The teaching language.

  • Learn to Program: Crafting Quality Code: How to Write efficient and correct Code. The foundation of Learn to Program: The Fundamentals is required.

  • The Structure and Interpretation of Computer Programs: The Python version of The classic SiC file.

  Computing Theory
  • Introduction to the Theory of Computation

  • Principles of Computing (Part 1): Describes basic mathematical and programming theories in CS, and requires Python basics.

   Algorithm and Data Structure
  • Introduction to Algorithms: MIT is an Introduction to Algorithms. Using "Introduction to Algorithms" as a teaching material, you can find video resources online. Netease has an old version of translation in open classes.

  Core Courses

After learning the "programming basics" section, you should be able to develop some simple programs. The "core courses" will go deep into several important aspects of computer science theory.

   Mathematics
  • Coding the Matrix: Linear Algebra through Computer Science Applications: Linear Algebra and Applications in computers.

  • Discrete Mathematics and Probability Theory: Discrete Mathematics and Probability Theory.

   Computing Theory
  • Theory of Computation-Fall 2011: Describes machine models, context-independent grammar, and Turing machines. the teaching material used is Michael Sipser's Introduction to the Theory of Computation.

   Algorithm and Data Structure
  • Data Structures and Advanced Programming

  • Efficient Algorithms and Intractable Problems

   Operating System
  • Operating Systems and Systems Programming: The UCB classic Operating system course introduces the basic concepts, system Programming, network, distributed system, memory allocation, multithreading, and so on of the Operating system.

  • Introduction to Linux: introduces Linux and some simple command line usage.

   Programming Language Theory
  • Programming Paradigms: Programming paradigm.

  • Compilers: Stanford's compilation principles course.

  • Principles of Programming versions

   Computer Architecture
  • Computer Architecture: CMU

  • Computer Architecture

   Computer Network
  • Computer Networks

  • Fundamentals of Computer Networking

  Programming tools   IDE
  • Python: PyCharm

  • Java: IntelliJ IDEA

  • C/C ++: Visual Studio

  Editor
  • Emacs/Vim

  • Sublime Text 3

  • VS Code

  • Atom

It is not necessary to use Emacs or Vim. The ST is actually very powerful, and it is enough for daily simple editing. (Here Atom is hacked, so the startup speed is very touching, so it is placed on the last one .)

 

Use version control to manage the code that you usually write.

Recommended reading:

  • Git-recipes

  • Pro Git 2nd Edition

  • Git tutorial-liao Xuefeng

  How to overcome latency

What should I do if I don't learn the information about procrastination?

  • Tomato work method

  References
  • Https://github.com/prakhar1989/awesome-courses

  • Http://blog.agupieware.com/2014/05/online-learning-bachelors-level.html

  • Https://docs.google.com/spreadsheets/d/1_kdHrT8izbROJNaxGflpcZm2ivsjRGF8j1hMzl3b8O0/htmlview

  • Https://www.reddit.com/r/programming/wiki/faq

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.