CSci 5121 Data Structure and Algorithm II

This is my first CS course in UMN. I gain enough confidence and interest in computer science after taking this course. It 's also a neccessary basic course for computer science. You can learn some advanced data structure like heap, disjoint set, and hash table. You can also be taught some advanced sorting and graph algorithms. All these stuffs were what I never knew before, so they were so fresh and interesting to me. While I enjoy the smartness of all these data structures and algorithms, I realized how important a good data structure and efficient algorith are to a program. Comparedly, programming language is only some signals to implement them.

Most of the algorithms in this course are understandable and masterable. Not only the principle of an algorithm need you understand, but also you should know its running time. Running time is one of the factors that can decide the efficiency and quality of an algorithm. After this course, I always pay attention to the running time of my program and it's usually the biggest challenge for me to make my program run as fast as possible. However, here is the only place in this course where some mathematical knowledge is involved. To be a good algorithm designer, of course, you need more mathematics and even be genius as well. Fortunately, we were only required to understand and apply these algorithms. However, two basic algorithm designing methods were introduced in this course. They are Dynamic programming and Greedy methods. But we were not require to apply these two methods to design any algorithms. If you want to learn more about algorithm designing, there is a advanced course: CSci Algorithm Design.

The implementing programming language in this course was C++, which I wasn't very familiar with then. But it was a good chance for me to practise and master it. You can imagine how I was excited whenever I implemented a smart algorithm with advanced language. It's just great! I understand the advantage of generic programming of C++ better from this course. So I highly recommend this course to those who has taken some C++ course like CSci 3321 or Csci 5113! It's good course to solid your grasp of C++ and improve your programming skills.