HNUCS-Junior Year Course Overview

Computer Architecture

About the course

My teacher for this course is Teacher Luo Huizhang, and the main course content should also be revised by Teacher Luo. The main contents of this course are basic pipeline principles and instruction-level parallelism. The upper half is pipelined and the lower half is instruction-level parallel. The content of the course is relatively small, and it feels like it only takes up 2/3 of the class time. The teacher will repeat the key points. The following are the key sections:

1.2.6 1.3 (This part is in Appendix A) 1.4.1 1.9

3.1 3.2 3.4&3.5

5.2&5.4 (This part is enough to learn in the experiment)

Appendix A.1-A.8

Appendix B.1-B.3

Appendix C.1-C.4 C.7

The focus of the first half is to understand the pipeline diagram, and you may see different pipeline diagrams. The difficulty is in Appendix C. The focus of the second half is the caching part and dynamic scheduling algorithm. However, the caching part has already been learned in CSAPP, so there is actually very little content to learn.

About teaching ginseng

The content of this course is very small, and there are no recommended online courses. Just reading books is enough. There is no unified PPT for the course group, and the teacher also switches back and forth between the required parts of many different PPTs.

The textbook is "Quantitative Research Methods of Computer Architecture". The Chinese electronic version of this book, the purchased Chinese fifth edition, and the English sixth edition all have some inconsistencies and errors. The fifth edition uses MIPS as an example, and the sixth edition uses RISC-V as an example. Don’t get confused when learning. If you understand the pipeline, the teacher will take you to see MIPS. You can read RISC-V or not. It is not difficult. It is mainly lectures or sixth edition textbooks. RISC-V is used by default. The legends in my experiments are directly Used RISC-V. There are many aspects of the RISC-V version that seem difficult at first glance. You need to read it in conjunction with the instruction manual. Remember that RISC-V uses dynamic branch prediction.

The textbook is the 6th English edition which is more accurate (but also contains errors). If you find that the example questions in the textbook use data that is not included in the questions, it is basically an error in the textbook. There is another inconsistency between MIPS and RISC-V. MIPS puts simple branch judgment in the ID stage, but this will cause additional pauses. RISC-V performs branch condition judgment in the EX stage and uses the branch prediction result to jump in the ID stage.

About the experiment

There are three experiments, all very simple. The first one requires more time to complete carefully. The first one is basically a review of what you have learned in the first half. The last two are very simple and do not require much time. The main thing is to understand the principles.

About the exam

The exam content is not very routine. Because level 20 is the first time, there are no test papers from previous years. This year’s teachers also said that they will not release the final papers, and they will just review according to the key points.

project

I used Verilog to write a five-stage pipeline CPU (copied from the book), which is also a big assignment for many schools' architecture. If you are interested, you can read the book "Writing a CPU Yourself". If you copy this CPU, you will know what the assembly line is about. (I feel that no one will be interested, most people will like AI-related directions). The project with the best architecture is the one-core-for-life plan, but this project is very large and has a long cycle.

Introduction to Artificial Intelligence

About the course

This course mainly introduces some basic principles of artificial intelligence. Students who want to take the direction of AI or pan-AI can spend more time learning the content of this course. This course is very routine in every sense of the word and can be completed normally. You can just read the PPT, and when you encounter problems or areas that are not detailed, read the book. The teacher's PPT has marked the key contents. There are many professional elective courses that talk about artificial intelligence-related content, and many courses will cover it, so there should be no problem with this part of the content.

About the experiment

There is only one final acceptance check, which is very easy.

About the exam

It's relatively simple. You can find the previous test papers, and the basic content is the same.

project/competition

There are quite a lot of artificial intelligence projects, and interested students can just find and work on them themselves. One of the more famous competitions/platforms is Kaggle. Many students studying artificial intelligence will participate in competitions on this platform. You can go and take a look.

database

About the course

This course mainly introduces the basic principles of database and the use of SQL. The whole thing is very simple, just read the book, and the class basically covers the content in the book.

About the experiment

The course experiment is the last one to accept all experiments at once. The experiment is not difficult, but it takes time to do. It is recommended to start doing it when studying the previous chapters. You can complete most of the content around the midterm. Don't wait until the last time to complete it all at once. .

About database/project

This course explains the most basic database principles, which is so basic that I didn’t learn much about database implementation. For students who want to further understand databases, you can have an in-depth understanding of database engines and some non-relational databases (redis, rocksdb). A good course on database systems (a course you can try if you want to learn databases in depth) is CMU-15-445 , MIT 6.830/6.814. The supporting experiments of these two courses are all about implementing databases. They are relatively hard-core, but there are more people doing it and there are more materials.

computer network

About the course

Computer network can basically be said to be the most important course in the junior year. This course will be used in work/entrance exams/postgraduate studies. This course is also the course with the most content, and this content is not even enough. It is best to learn a lot more things in order to be enough. The curriculum of this school only covers the application layer, transport layer, network layer, link layer, and the physical layer is not covered, but you should also take a brief look at it (it is not in the book, just read the online class mentioned below, the teacher may also teach some of). This course has fewer hours, and only a few things can be covered in class. Most of the content needs to be read by yourself. The content is very scattered, but it is indeed very basic and very commonly used.

Textbooks and References

The textbook used in our school's curriculum is "Computer Networks: Top-Down Method", and another commonly used textbook is Xie Xiren's Computer Networks. The content of the two editions is similar, but the order is different. Recommended online course https://www.bilibili.com/video/BV1c4411d7jb/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click. This is taught from the bottom up, but the order and organization are different. Everything that needs to be said is covered. Having said that, the duration is relatively short, and it is almost enough with the textbook. In addition, the computer network of the University of Science and Technology of China is also better https://www.bilibili.com/video/BV1JV411t7ow/?spm_id_from=333.788.top_right_bar_window_custom_collection.content.click. No matter which online course you take, reading the textbook is necessary, because this course is indeed more important.

About the exam

The exam questions are relatively free and divergent, and there are no test papers from previous years. You still need to understand the content of the entire book, but my impression is that there is no pure concept test.

About the experiment

The experiments are very simple. They are all packet capture experiments. They are worth studying carefully. They are very helpful for understanding the content of the course, especially the last two experiments for understanding the work of the link layer.

project

The most common project is web server, which is also a small project with one person in the C++ development direction. There is a lot of information and related source code on the Internet. If you have time, you can implement it yourself. Implementing a web server is also an experiment in Teacher Chen Guo’s cloud computing course (many students should choose this course. There is also an experiment in this course to implement a distributed database. If you are interested, You can find out more).

Design and Analysis of Algorithms

About the course

This course takes the last quick talk about data structures and algorithms and explains them again in detail, along with many classic problems. You can take advantage of this course to catch up on the basics of algorithms. My class teacher is Teacher Xiao Guoqing. The teacher is very nice and the course progress is just right. The supporting experiments are to implement some classic algorithms, which are not difficult.

Regarding algorithms,
if your algorithm foundation is not very good, you can study more questions during your junior year. I only learned C++ after I transferred here, so the basics are very average. The route to study the questions is ACWING Algorithm Basics Course –> Leetcode (Hot100 and the like) –> Luogu Question List. Students with better algorithms can just follow their own pace. Students who are not good at algorithms can refer to my route. If you feel that the ACWING algorithm course is relatively simple, you don’t have to read it, but the templates are worth reading and memorizing. There is a big difference between being able to write and being able to write accurately and quickly.

Compilation principle

About the course

This course mainly talks about the front-end processing (lexical analysis, syntax analysis) and optimization part of compilation principles. My class teacher is Teacher Song Bosheng. The teaching in this class is basically based on the compilation principles of the University of Science and Technology of China. The experiments are also from the University of Science and Technology of China. The teaching method of the University of Science and Technology of China is more practical, so the course content is not too much. Teaching materials are not used very much. Basically, a combination of class and PPT + online class supplements are enough. The content taught by this group seems to be from the Tiger Book, the other group is from the Dragon Book (black compilation principles), and the other group teaches more content. Generally speaking, the focus is still on specific methods. Due to different teaching methods, there are some differences in many terms and methods, but the differences are not huge. When learning, learn one method, don’t mix and learn different methods.

The main examination methods and core contents of the examination are:

Regular expression to NFA

NFA to DFA (subset construction method)

DFA minimization (Hopcroft)

How to find FIRST FOLLOW set

LL(1)

LR(0) SLR LR(1)

abstract syntax tree

control flow graph

Code optimization

About the experiment

The first three experiments are relatively simple, and the last experiment is more difficult and can be started earlier. The acceptance times for several experiments are very close, so it is best to complete them early at your own pace.

Guess you like

Origin blog.csdn.net/Aaron503/article/details/131198490