Hello, everyone, I am the nuggets of the second brother ah!

(Nuggets this community is very good, all are quality partners, love love ❤️ full of desire for life)

There were many college students among my second brother’s readers, but a freshman friend came to ask him: “The school’s curriculum planning is quite strange. I learned C ++ in the first semester and Python in the second semester. Should I review or preview the content in class (Python, C ++) or expand myself (C, data structure) in winter vacation?

Because of my determination to love learning, I got the offer from An Internet company three years later.

To be honest, the courses arranged by my friend’s school are very similar to mine. I learned Java in my freshman year and C++ in the next class, and I didn’t arrange C language for transition.

So my advice to him is to take advantage of the winter vacation to play the king to get points!

Check out tsinghua university’s open source courses on GitHub

Oh, no! Take advantage of the winter vacation to read tsinghua 20K + STAR open source courses on GitHub!

Github.com/PKUanonym/R…

Let me take you through tsinghua’s curriculum, which is mainly for computer majors.

Freshman computer basic courses: Introduction to computer science, programming foundation

I have: Object-oriented programming fundamentals

Sophomore: Data structure

Sophomore: Introduction to Artificial Intelligence, Basic computer Graphics, introduction to High Performance Computing

In the third year, I have: computer composition principle, computer network principle, Compilation principle, software Engineering, introduction to database system, artificial neural network, computer network security technology, man-machine interaction theory and technology

Junior three: Operating system, computer system structure, Introduction to machine learning, data mining, search engine technology foundation, storage technology foundation, database special training, computer network special training.

The senior year is mainly practice, internship, graduation, etc., the rest of the computer courses are mainly network security engineering and practice, embedded system

It can be seen that the freshman and sophomore are basically in the fishing state, and the junior suddenly began to force, all kinds of computer basic courses, very crazy!

What is called:

Where there is a will, there is a way. Good Samaritan days, three thousand more can swallow wu!

Second, learn C language

Recommend a book and two video courses.

The book is an e-book, the book is called “Ruan Yifeng C language primer”, I read it for the first time, benefit a lot! Can say that I have seen the best C language tutorial, no one! The vast majority of domestic colleges and universities, freshman will arrange C language this course, Ruan Yifeng the teacher’s “C language introduction course”, is absolutely the Gospel.

Video class is zhejiang University Professor Weng Kai, a “C language programming introduction”, a “C language programming advanced”.

By the end of this, you will have learned at least what is listed in the following mind map.

For details, please click the link below:

How should freshmen learn C language, the book code can not understand how to do?

3. Learn data structures

What is a data structure?

Data structure is a set of data elements which have certain logical relation, apply some storage structure in computer, and encapsulate corresponding operation. It contains three aspects: logical relation, storage relation and operation. Different kinds of data structures are suitable for different kinds of applications, and some are even specialized for specific job tasks. For example, computer networks rely on routing tables to operate, and B-tree height is suitable for database encapsulation.

Novice tutorial on the definition of data structure I feel or quite formal (official), that is, data structure is a pile of data, according to a certain format knead into a tuo.

Do you like kung Pao chicken?

I like this dish anyway. Let me take Kung Pao chicken as an example to talk about the data structure. Wikipedia defines it this way.

Kung Pao Chicken (English: Kung Pao Chicken or Kung-Pao Chicken), also known as Gong Pao chicken, is a famous sichuan dish originated from Guizhou cuisine, spread to Shandong cuisine and then become a famous Sichuan cuisine. Guizhou, Shandong and Sichuan have different ways of making the dish and have different names for it. Guizhou is called paste spicy chicken, Shandong is called sauce fried chicken, and Sichuan is named after gong bao chicken.

Let’s abstract kung pao chicken.

struct KungPaoChicken {Chicken = [] peanut = [] Scallion = [] Pepper = [] pepper = []}Copy the code

The struct is a custom data structure that combines many different ingredients together. In the case of a computer’s data structure, these ingredients are simply replaced by basic data types.

In Java, for example, there are basic data types like int, char, double, and more complex ones like String (reference data type). The underlying data type is an array of char, and those custom types are just encapsulation of basic data types and reference types.

After the abstraction of Kung Pao chicken, let’s abstract the second brother.

classSecond brother{
  int age = 18;
  doubleWeight = 65 kg;void eat(Kung Pao chicken) {weight += 1kg; }}Copy the code

Pseudo code is not very rigorous, but you get the idea.

After all, data structures are nothing more than abstractions encapsulated. Like Java, one of the main reasons for its popularity is that it provides a wide variety of data structures that developers can easily invoke, Such as encapsulating arrays ArrayList, LinkedList, HashMap, ConcurrentHashMap, and so on. C doesn’t have that, so if you want to use it, you have to encapsulate it. However, the basic data types of Java and C are the same, such as int and float.

For beginners, the usual code is directly to call the data structure, is rarely to think about how these data structures are implemented.

As a beginner on the path to advanced programming, he must take a moment to understand the internal implementations of ArrayList and LinkedList, and understand that the difference in performance between them is due to the different data structures used inside.

To be fair, when I first learned Java in 2008, I really didn’t understand why Java would design LinkedList when there is ArrayList.

Harm!

Why are data structures so important?

I will magnify it directly, shake a paragraph of tsinghua University computer professor Deng Junhui teacher’s words.

Data structure is a key content of computer science and a necessary foundation for building efficient algorithms. The knowledge involved is always at the core of the curriculum system of the relevant major. Taking ACM/IEEE Computing Curricula (Computer Teaching syllabus) as an example, in the common requirements of several related majors (computer science, computer engineering, information system, information technology and software engineering), data structure and algorithm are the core of programming concepts and skills, closely following mathematics. In second place.

Data structures are neither complicated nor simple. It doesn’t matter. The important thing is to learn them!

Some people may ask, “I’m not good at math. Can I learn data structures?”

To be fair, there is no necessary relationship between data structures and mathematics. When I was in primary school, I took part in the Olympic Mathematics competition in Luoyang city and won the third prize. Junior high school, math has also maintained a good, but after high school, because of the fun, math performance plummeted, became a lame class. When I was in college, I did not learn much about discrete mathematics and calculus.

But that didn’t stop me from learning about data structures, really. In data structure, tree is the most difficult one, like array, linked list, stack, hash table these relatively speaking, computer professional, as long as a little effort, are able to master.

With all that said, how do you learn data structures?

If you have a C/C++ background, I recommend two books.

The first one, Interesting Data Structures.

Speaking of which, say more. In 2018, Mr. Zhang from Posts and Telecommunications Press invited me to publish a book on Java. I wanted to name it “Fun Learning Java”. Zhang teacher said, just before and Chen Xiaoyu teacher cooperation out of a “fun learning algorithm” book, or hair you see it.

Don’t tell me, it’s a good primer on algorithms. Later, Chen Xiaoyu teacher and out of a new book, called “interesting data structure”, I read, although from the “interesting” word a little distance, but very suitable as a data structure of the entry book.

The second book, data structures (C++)

Yes, tsinghua University professor Deng Junhui compiled, douban score is quite high. The book comes with video lessons, which are free and available online, and I’ve recommended them before.

The quality of the course is so poor that it is regarded as a national excellent course. If you have time, make sure you do it.

I also recommend two books if you have a Java background.

Data Structure and Algorithm Analysis (Java Language Description)

It’s a poor translation, but it’s comprehensive enough to serve as a primer on data structures.

Second book, Algorithms (4th Edition)

Although it’s called an algorithm, you all know that algorithms are based on data structures, arrays, queues, stacks, heaps, binary trees, hash tables, and so on.

If time is tight, C/C++ programmers should just read Data Structures (C++ edition) and Java programmers should just read Algorithms (4th Edition). If you don’t get it the first time, just watch it again.

A net friend “the husband of the three-color courtyard violets” said well.

A data structure is when you write millions of rows, and then you go down to 900,000 rows, and you double the performance, and there you go!

Four, take heart summary

In January 2022, it’s important to get off to a good start.

Then take advantage of the winter vacation to brush a wave of Tsinghua open source courses on GitHub, as well as C language and data structure, after the winter vacation, cliff is the king of the king of volumes.

Quietly tell you, many said the holiday must play games, must relax, these people are quietly volume.

So if you’re the one relaxing, watch out!

Don’t get caught up in a winter break.

Above, I hope I can help you!

Recently, my article “The Path to Java Programmer Advancement” was listed on GitHub Trending list, which indirectly proves that this open source column is gaining popularity and recognition from more and more friends.

Github.com/itwanger/to…

Here to share, also hope to help more Java enthusiasts, 2022 we come together!