Skip to main content
LESSON

C++ Course - Week3

Given the following map, black indicates obstacles that cannot be passed through. It is required to implement an obstacle avoidance algorithm to find the optimal path from the red

DAY15: Lecture Sharing

1. Specific Requirements

(1) Lecture Sharing:

  • 14:30 - 15:30 Teacher Tao Simin shares the keynote speech. Meanwhile, everyone can share some improvement suggestions for the Water-Drop Plan, the parts interested in C++ programming, the mastery level of C++ concurrent programming/containers, etc.;
  • 15:30 - 16:30 Teacher Huang Zengrong shares the keynote speech. Meanwhile, everyone can consult some existing problems they have with the iEDA project, the directions they are interested in, their understanding and views on open-source EDA, etc.;
  • If there is no schedule for the speech, please watch the online video of the reference materials by yourself.

(2) Practical Learning

  • Download and review the Gitee repository of the iEDA project to understand its code structure, etc.

2. Learning Outcomes Presentation

  • Submit the daily learning records;

3. Reference Materials

DAY16: First Experience with iEDA

1. Specific Requirements

(1) Read the EDA project code to understand its engineering architecture, interfaces, configuration files, simple interaction logic, etc.;
(2) Try to draw the iEDA you have learned and understood, and sort it out in the form of learning notes, mind maps, flowcharts, etc.

2. Learning Outcomes Presentation

  • Make the architecture diagram of the iEDA project and describe it with text;
  • Summarize the main contents of each directory of the iEDA project;
  • Submit PR for the above two contents to the designated repository iTraining/EDA;
  • Submit the daily learning records;

3. Reference Materials

DAY17 - DAY21: C++ Major Assignment

Given the following map, black indicates obstacles that cannot be passed through. It is required to implement an obstacle avoidance algorithm to find the optimal path from the red starting point to the green ending point.

![](/res/images/train/water_drop/image.png)

Requirements:
(1) Model the map in the figure, abstract it into a class, and encapsulate the data;
(2) Consider the implementation of the path-finding algorithm, disassemble the problem, and also require the abstract interface class for the algorithm implementation;
(3) Use the given C++ project template, write CMakeLists.txt according to the templateopen in new window, Google Test unit tests, and use DoxyGen annotations.

1. Specific Requirements

(1) Implement the A Algorithm*:

  • Model the map, abstract it into a class and encapsulate the data;
  • Implement the path-finding algorithm, disassemble the problem, and the algorithm implementation requires an abstract interface class;
  • Use the given C++ project template, write CMakeLists.txt according to templateopen in new window, Google Test unit tests, and use DoxyGen annotations;
  • Extension Requirements
    • Implement the A* path-finding algorithm with weighted obstacle nodes;
    • Use a visual UI interface to display the map and the path-finding results;

(2) Output the PPT of the C++ Internship Summary:

  • Describe the content of C++ and C++ Modern that has been mastered, show it in the form of a list outline, similar to listing the technology stack; (1 min)
  • Describe the A* algorithm major assignment, similar to giving an academic report. You can refer to the reports of the algorithms of the students in the second phase of the iEDA Tutorial. The PPT should at least include: data structure design, input and output description, main algorithm idea, summary of experimental results, and the new features of C++ Modern used; (4 min)

2. Learning Outcomes Presentation

  • Submit the daily learning records;
  • The experimental report should at least include the textual description of data structure design, input description, output description, and the main algorithm idea, test cases and the running results of the cases (such as designing path examples between two points, dead-end situations, and the corresponding optimal path cost consumption in different path situations); Submit the code and the experimental report (as readme.mdopen in new window) together in a Pull Request;
  • Prepare and submit the PPT of the training summary.

3. Reference Materials

Note

Learning Notes: At this point, the systematic learning of C++ comes to an end. If students who have completed it in advance with spare capacity, it might be beneficial to simply consider how to achieve the shortest path in three points.