Some students have a basic knowledge of mathematics, but lack the C++/Python programming language. Some students have no foundation in mathematics. Can they learn it? To what extent does the foundation of mathematics need to be? Do you have any information to recommend if you study in advance?
Answer: First of all, you don't need a particularly high mathematical foundation to study this course, you just need to master advanced mathematics, linear algebra and probability theory.
Although from the application point of view:
If you want to study deep learning deeply, such as realizing networks with different structures by yourself, you'd better skillfully use the relevant tools in matrix theory when designing the number of layers and parameters of networks, but I believe that if the career road planning is not algorithm engineer, it will generally not go deep into this level.
Different mathematical tools are needed for different application fields, such as the fields related to image and signal recognition, and the basic skills related to graphics are necessary, but this is a complex practical application problem, which is beyond the teaching scope of this course, and the application fields of this course are relatively simple.
In fact, if you are an engineering student, you will find that the most difficult thing in learning mathematics is that you don't understand what problems these math tools can help us solve, because most university teachers are math teachers and won't explain math problems from the perspective of students' respective majors. But when you know what you need to do with math tools and have a clear goal, you will find a breakthrough in your motivation and learning ability, and you won't find these math knowledge boring. Therefore, even if you have a weak mathematical foundation and a clear purpose, I believe students can solve this problem by themselves. Mathematics is definitely not an obstacle to learning this course, but if you want to take this as a career, it is essential to lay a good foundation for this mathematics.
Finally, if you are a math major or a student who thinks you are good at math, you don't have to worry about not knowing 1 or 2, because computer language is just a tool, and the most important thing is to train your thinking. The core of this thinking is mathematics and algorithm. If you are good at mathematics, you can learn these languages quickly, and this course will not be applied to any special grammatical features except the final C++ development.
But on the other hand, don't ignore the importance of learning these tools well, just hope that students can weigh them themselves. For students who are good at mathematics, it may be the most fatal misunderstanding. Because the basis of computer is mathematics, it is no problem to solve computer problems completely with mathematical thinking. I can only say that computers have their own mode of thinking, even those algorithmic problems based on mathematical principles, so students majoring in mathematics must learn to recognize the difference of this kind of thinking and learn to solve problems with computer thinking. Machine learning is a typical representative of computer thinking, which will be discussed in detail in the course.
As for the required mathematical foundation, it is definitely hoped that students can learn the relevant knowledge of calculus, linear algebra and probability theory in higher mathematics. For students who have no practical programming experience, it is recommended to study discrete mathematics in depth (whether they are good at mathematics or not). That's all you need for this course.