Computer science and technology learning route & programming & application base four pieces of programming and practice (including C ++ learning course)

Computer science and technology learning route & programming & application base four pieces of programming and practice (including C ++ learning course)

basic introduction

I am 211 majors in college, university graduation present, wanted to give fellow travelers confused or later people some suggestions and recommendations, detours. Think once they have been losing some garbage school curriculum and teaching materials (not part of all) the destruction interest in learning, with almost graduated, I recommend four years to experience it, to share my view, a better computer science and technology learning course, be all my current experience.

For the reader:

  • C ++ beginners
  • We have mastered a programming language & want to improve programming skills for beginners
  • Want to learn programming basics four pieces (data structures and algorithms, computer networks, operating systems and computer composition principle, design patterns), and Cobain's life linux
  • After the completion of C ++ syntax, you should learn the four basic pieces of programming and application programming practice
  • Keep in mind: Programming Fundamentals 4 bulky than the programming language itself is much more important
  • But C ++ syntax and programming knowledge is the basis of four pieces of things, like the ability to convert must go through application programming practice (based on linux)

As for why to learn linux because linux enterprise applications are based on the, ah, there is no master linux or junior programmers (someone who has personal humble opinion, because I have no job, but these experiences are work experience to say). I do not understand linux / Unix importance of free to Google Baidu

0.C ++ grammar learning

Network video lesson recommend
Recommended small turtle B station C ++ quick start of instructional videos, easy to understand and speak the depth (also suitable for contact with students C ++ tutorial again)

Recommended books
to read sequentially from shallow to deep

  • First book "Essential C ++" watercress score 9.1 (c by the transition to c ++, this science had seen C ++ or C ++ quick start video can not see)
  • This second "C ++ Primer fifth edition of the" watercress score 9.4 (very wide, but not deep, suitable for entry for object-oriented programming and generic programming and STL have a preliminary understanding)
  • This third "Effective C ++" watercress score 9.6 (55 best practices, optimization tips)
  • IV of the "More Effective C ++" watercress score 9.2 (35 best practices, smart pointers, reference design, and the like)
  • This fifth "C ++ Standard Library" watercress score 8.9 (STL-depth study)
  • VI of the "in-depth exploration of C ++ Object Model" watercress score 9.1 (very difficult experience for several years before the project would be difficult to read it before you can read it to find a job, the interviewer might ask. Content is very deep, about the underlying principle, such as virtual function table has virtual functions, how to implement the internal virtual function table)

1. The base four pieces

Four base includes data structures and algorithms, computer networks, computer operating system & computer composition principle, design patterns
recommend a learning sequence it: data structures, algorithms, namely, group, OS, network meter, design patterns.

1.1 Data Structures and Algorithms

After learning the basic concepts of higher strength to brush the topic leetcode

"Westward data structure" C / C ++ watercress score 7.9 (entry-level, easy to understand)
, "Data Structures and Algorithms Graphics" watercress score 9.0 (out of 2019, the data structure is to serve the algorithm, this book be a combination of both the primer)

"Algorithm graphic" watercress score 8.4 (algorithm introductory book, easy to understand, but the lack of code implementation)

"Algorithm" fourth edition of watercress score 9.4 (undergraduate I use is this, for the data structure based on the students to read, contains code to achieve, using Java,Highly recommended

"Prove safety offer" watercress score 8.9 points (to find a job will brush)

The remaining energy to brush title

1.3 operating system and computer composition principle

Total group operating system and I say together, because the content of the two cross

1.2.1 computer operating system

It estimated that there are many like me undergraduate or self-study time operating system do not understand it, or think OS learn very castles in the air. So how do you learn to understand the operating system? The following passage is the best answer I've ever seen
Here Insert Picture Description
in order to understand the operating system, need to learn to compile, recommended books

OS Recommended Books

  • "In-depth understanding of computer systems" (the original book version 3) watercress score 9.8 (a lot of people recommend a book, more like a programmer needs to know computer knowledge including OS, meter group, compilation, assembly, etc., can be read more several times, read their own part to want to read)
  • "Operating System Design and Implementation" (the book) watercress score 9.1 (a lot of people known as "modern operating system," watercress score 8.6 , and this book is the same author)
  • "Operating System Concepts" watercress score 8.9

1.2.2 Principles of Computer Organization

Total group and a compilation of more recent, in addition to involving the OS memory management, disk management, but also relates to computer architecture, CPU and so on principle

  • "Computer Organization and Design" watercress score 9.1 (superficial just want to learn about literacy group count this one is enough)
  • "Computer Architecture" watercress score 9.5 (Computer architecture is a direction CS graduate student, the equivalent of advanced meter group, but this book is also very comfortable for the count after completion of advanced study group)
  • "Structure and Interpretation of Computer Programs" watercress score 9.5 (recommended by a lot of people, I heard that learning time 100h +, the following is my pick watercress Book Review)
    Here Insert Picture Description
    if you want to be lazy, operating systems and computer together a recommendation
  • "In-depth understanding of computer systems" (the original book version 3) watercress score 9.8 (included OS, meter group, compilation, assembly, etc., can be read several times, for want students to learn OS and count groups)

1.3 Computer Network and Communication Theory

TCP / IP protocol stack - a narrow sense

Master the principles, ARP protocol, IP protocol, ICMP protocol, TCP / UDP protocol

DNS protocol, HTTP and HTTPS protocols

Recommended Books

Here mainly to learn the principles of computer networks, network programming may want to learn to see other books. Because in the network, the basic principle of learning through the network, to learn socket programming and the like, to achieve a multiplier effect. I would only network programming fur, I will not recommend. You can know almost self Baidu. (I later learned again or fill the hole?)

1.4 Design Patterns

There are no people like me have not heard of design patterns TAT, I only heard a senior and starting to focus on design pattern
design model is the programming paradigm, even after not to engage in the development, design patterns learning for large projects is still very helpful.

23 design patterns, skilled common: Singleton, Factory, Proxy, strategy pattern, template method to

Recommended books

2. Application and programming practices

2.1linux operating system to learn

Enterprise development, the development of back-end (server-side development) are developed on linux

  • Common linux operating system instructions
  • The basic shell programming (shell programming is a productivity tool, batch processing, automated scripts)

Recommended Books

"Bird Brother linux private kitchens" watercress score 9.1 (very classic linux primer)

"Linux in respect of such a study" watercress score 5.7 (a little more than a new book Bird Brother, but the content could almost)

2.2 compiler and debugging tools

2.2.1 compile the compilation tools

The win is vs, using Microsoft's own MS compiler

Under linux is GCC, GCC is not mastered other issues

Compile actual action project called make, compiler course of action is written in the makefile

To write your own makefileThat the process of compiling their own to design their own to write

2.2.2 Debugging

Enterprise-class development and debugging vs Debugging is not the same, especially in the background of the development of C ++ on linux mainly used GDB Debugger

Recommended Information:
Note that the following is not a book that documents are online, Google Baidu itself, I do not attach a link

  • English good to GNU GCC and GDB official documentation on the
  • Chinese reference documentation has "debugging with gdb" Chinese version
  • Chen Hao, "and I wrote together makefile"

2.2.3linux programming environment

linux system programming

  • Use of the API to learn linux
  • Multi-threaded programming practice: Thread, resources, signal synchronization mutex lock
  • Network Programming: linux system specific network programming API, and some of the code programming function IO

Recommended Books

postscript

This article recommended a total of 30 books and four study documents, all my four-year undergraduate to meet mainstream, better resources, there are many books I actually have not read, can be considered their mark pages of it, come on!

Published 47 original articles · won praise 28 · views 30000 +

Guess you like

Origin blog.csdn.net/qq_41122796/article/details/104744772