Please advise me about the learning plan during the study period!

Source: Internet
Author: User
Document directory
  • General concepts of programming languages
  • Mathematics
  • Algorithm
  • Professional skills in project development
  • Product Development

I haven't posted any blog posts for a long time! Since the four-year weighted score of the University was not very good, I joined the Postgraduate Entrance Exam's large army in last September. After four months of retreat, I finally got admitted to the master's degree of this school and will enter a three-year postgraduate career (note: since the beginning of this year, the number of masters of science in colleges and universities nationwide has changed from 2.5 to 3 years ). I plan to write a blog post about how graduate students spend the past three years focusing on the knowledge and skills they should learn. I also ask you to give me some advice.

University Experience

First, let's talk about my four-year college experience ~ After being admitted to huake in, he was very blind in his professional choice. He didn't know what he was trying to do or what the major was about. He only knew how to choose engineering... finally, the photoelectric major was selected. The choice of photoelectric technology is purely because it has the highest scores in the school, and the Hubei examinee, who suffers from the destruction of exam-oriented education, naturally assumes that the higher the score, the better the profession.

Freshman year, as hard-working as high school students, won a good performance naturally, and ran for the Study Committee member in the class. Looking at myself at the time, my mind is very monotonous, and my vision is too narrow to be described as a "frog at the bottom. I did not participate in any community. I only had to attend classes, do questions, take exams, and turn my senior three online versions. I started to access computer knowledge through the course "C language programming". However, my attitude at that time was also more utilitarian, not because I liked it to study hard, it is to pass the Computer Level Test (level 2 C language ). I remember that after I got the certificate, I was so happy for several days. Now it seems silly. Computer knowledge only through continuousTheoretical learning-> practice-> theoretical learning-> practiceIn order to truly grasp the essence of it, just reading a book for one month like me, and doing a test, it is really ridiculous to say that I have mastered the C language.

When I first came into contact with professional courses in my sophomore year, I gradually increased my understanding of my major and learned what it was doing. Needless to say, although the future of the photoelectric industry is a bit exaggerated, it also proves that the breakthrough of the photoelectric technology will generate a huge boost to society. The terms "Optical Fiber Communication", "laser", "bio-photonics", and "micro-Nano Manufacturing" will be in the future (or already) it revolutionizes the development of society and other industries. However, I feel very painful for some people who are interested in photoelectric courses. The formulas and theories in a book become more and more headaches. The more you read, the more you suspect that these cold letters will be associated with my life. Maybe a person will have a natural resistance to a subject in his life! For him, everything in this discipline is gloomy, mechanical, and alienated (just like a liberal arts student's attitude towards science and engineering ...). Unfortunately, this is what photoelectric gives me. As a result, skipping classes has become a common practice, and the scores naturally plummet.

When I was a sophomore, I entered a technical community in the school and started to get in touch with it. NET Technology: Asp. net, made some websites, and later participated in a competition, learned the development of Windows Phone 7 and so on. But at that time. net is always confused, although I can use it more smoothly, but there is always a lack of peace of mind, I always feel that it is floating on the surface, there is no touch on its essence (maybe it is the reason for my basic computer courses and lack of it !). However, since then, I have become interested in computer technology. This kind of code control program can bring value to myself and others. I'm coding, I can control it by myself, I can make a difference (though sometimes it seems to be so small) by myself, not anyone else in the universe! This feeling made me discover for the first time that a subject can have such a close connection with an individual (this feeling is totally different from the feeling of achieving a high score in college mathematics, physics, and C language exams ), in this process, I am the leader, rather than being forced to do something due to external pressure. From that time on, I began to think about the transformation from photovoltaic to computer.

When I was a junior, I escaped many professional courses and focused on "Two Phases of single-chip microcomputer" and "two phases of Photoelectric System Curriculum Design" (the first stage is class. What is the so-called two phases, that is to say, the students who are interested can follow the teacher to do additional things without being forced ). I made a "digital thermometer" and a "photoelectric Heart Rate Detector", and had a personal understanding of PCB Board Production and embedded development of 51 single-chip microcomputer. Then I purchased the ZigBee Development Board and learned it for a while, leaving a series of blog posts on the "ZigBee Journey.

Later, I began to become interested in the Web Front-end. I learned JavaScript, HTML, and CSS for a while and made transy (a chrome plug-in used to assist manual translation ), and released to the Chrome app store. I personally feel pretty good, now there are more than 400 users (although few, but the encouragement to me is still very large), I also use (Address: https://chrome.google.com/webstore/search/Transy? Utm_source = chrome-NTP-Icon ).

After my postgraduate entrance exam, I started my graduation project under the guidance of a teacher. The subject is "Machine Vision-Based Multi-Motion Human Body Tracking Algorithm Design ", specifically, the C language is used to implement a multi-body tracking algorithm on a PC and then transplanted to the DSP. Currently, coding and debugging for the two platforms has been completed, just waiting for field testing.

After three years as a graduate student, I still choose to study in this school. The direction is "Machine Vision", which basically belongs to the computer field and is getting farther and farther away from optoelectronics. Now, I have basically completed the transformation from the photoelectric> Computer Major!

Graduate Program

Three years later, I worked very hard to get in touch with computer technology, but I lacked the basic knowledge of computer science in a very small number of systems, And I lacked the professional skills that a programmer should possess. Therefore, there is still a clear gap with students born from the computer science class (on the premise that he has learned it carefully and put it into practice. Therefore, I want to leverage the three years of experience of graduate students to supplement relevant knowledge and skills (this is also a very important reason for my research). I am going to list it. I also ask you to give me more suggestions!

General concepts of programming languages

I have been familiar with these languages since my sophomore year: C, C #, JavaScript, and PHP. Although I have a certain understanding of each language, and can complete some programming tasks. However, I think we should understand the general concept of programming language. For example, variables, data types, expressions, control structures, subprograms, and other topics. The benefits of doing so are as follows:

  • Enhance the ability to learn new languages
  • Enhance the ability to use code to express ideas
  • Improve code Quality

Currently, my reference books are programming language concepts (version 9th) (by Robert W. sebesta ):

  

Mathematics

Mathematics is a headache for many people, but some mathematics (especially computer-related mathematics, such as discrete mathematics) will improve the connotation of the Code. For example, I used probability theory to distinguish foreground and background pixels Based on the 3σ principle of normal distribution, and matched the human body using Bayesian formula. These mathematical principles are not difficult, but with it, I can track multiple human bodies in the scene in real time, and be able to cope with the interference of occlusion and shadow, so as to achieve the intersection traffic statistics.

However, the branches of mathematics are complicated. Programmers are not mathematicians, and there is no need to understand the complex branches of mathematics. They should not study mathematics as they did in the exam. My personal opinion is to understand some mathematical theories and apply them to coding to see if the effects are good. If they are good, OK. Continue to learn more and use them again. (Note: In my personal opinion, projects that require mathematics often have some professional backgrounds, such as games, image processing, and signal analysis. If it is just crud, mathematics plays a limited role in it .)

At the graduate stage, I plan to focus on the following mathematical subjects: probability theory and mathematical statistics, linear algebra and matrix theory, numerical analysis, and some parts of discrete mathematics, you can use a general university textbook for reference.

Algorithm

There are two types of algorithms. The first is algorithm theory in the general sense, and the second is the algorithm discussed in the specific professional background.

The first algorithm is very scarce for me. Previous projects rarely make the algorithm play a major role. However, after entering the Postgraduate stage, the project involved is real-time image processing on the embedded platform, which imposes strict real-time requirements on algorithms. Therefore, learning algorithm theory is necessary. My reference material is "data structure and algorithm analysis-C language description (version 2nd)":

  

Because I am a graduate student in machine vision, the second algorithm is specifically an image processing algorithm. In this regard, my reference material is image processing, analysis and Machine Vision (version 3rd). (Of course, Google's academic papers are also very good learning materials, in particular, High-level papers with a very high number of references and strong originality ):

  

Professional skills in project development

Nowadays, it is increasingly felt that a good programmer must possess excellent professional skills. Compared with non-professional programmers, a professional programmer may have several times the productivity gap. I have summarized some important aspects: Code building, user communication, and document writing. In this regard, my reference books are: Code Daquan and software process:

  

  

Product Development

PreviouslyIt comments for external journalsOnce I saw an article "differences between programmers and coders", I decided to add this item to the end.

If a programmer has done a lot of successful projects and mastered excellent professional skills and accomplishments, but all his life is based on the design and will of others, I always feel a little sorry. However, if he is able to do something he like in his spare time that can bring value to others, then I think he truly integrates work skills with personal values. Furthermore, if he is able to start a business with a group of like-minded people after several years of work accumulation, he will be able to elaborate on one that can promote social development (even if it is very small) although the process is very difficult to improve the quality of life of others, I think this is the best happiness that a programmer can experience. I once read in an article "the nature of programmers" that the nature of programmers is the bond connecting the human world and the computer world. Therefore, I think that if a programmer can focus on the real world, daily life, find conflicts, difficulties, violence, and unreasonable, and then create a product concept, is a rare quality. This kind of ability should be part of programmers. However, in modern society, a high degree of division of labor has taken this part from programmers and injected it into these functions of Product Planning and product manager.

With regard to this skill, I do not feel that I can learn it through reading books. The key lies in practice. I think it can be developed through the development of amateur projects. My personal experience is as follows:

  • You must be a user
  • Select a professional platform to publish your work, which brings the following benefits:
    (1) There is no need to consider compatibility. For example, if you select the Chrome app store, you can use HTML5 with confidence.
    (2) users are directly oriented. Professional platforms often provide developers with user feedback tools, so that you can directly listen to the suggestions of real users.
  • Product Positioning is very important and often requires repeated polishing. We must examine similar products in the market, so as to select unique entry points and highlight unique product values.
  • Continuous iteration to improve code structure, performance, and maintainability
  • Design is very important. The role of user experience is often underestimated by programmers.
  • Document Writing (important)
  • In the face of failure: Failure promotes thinking and changes. The best idea is often not the one that is expected between development, but the idea that is being constantly changed.
Conclusion

For three years as a graduate student, the length is not long, and the length is not short. I hope that in the past three years, I will be able to accumulate knowledge and skills, and strive to reach a programmer's pass when I graduate! My personal experience, vision, and abilities are extremely limited. Many of the above ideas are hypothetical and will inevitably be subject to a strong subjective color. Please give me a lot of suggestions for prawns in the garden!

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.