Computer, as an important tool for problem solving, has been deeply involved in every aspect of people’s daily lives. Data are the quantities on which operations are performed on computers. What is the logical relationship among data? How are the data stored in computers? What algorithms should be operated to solve the problems on the data? These are the questions that will be answered in “Data Structures and Algorithms”, one of the most important core courses in Computer Science. The course also covers fundamental data structures and classical algorithms which are widely used in the succeeding specialized courses, such as Operating Systems, Software Engineering, Database Systems, Compiler Principles, Computer Graphics and Human Computer Interaction.
What is the combination of data structures and algorithms? Niklaus Wirth wrote a book titled "Algorithms + Data Structures = Programs", which points out their important roles in computing discipline: algorithm and data structure are two closely linked and indivisible parts of programming.
The course will follow the idea of “Algorithms + Data Structures = Programs”, aimed at improving students’ knowledge and skills of theory, abstraction and design in problem solving. On a solid basis of the fundamental theory, the students will analyze the problems using problem, data and algorithm abstraction. Making a tradeoff between space and time complexity, the students will learn how to organize data reasonably, design efficient and effective algorithms, and implement high quality programs, so that they can solve real-world complex problems. After studying this course, students should be well prepared for further study, engineering and research in computer related areas.
The course uses the textbook “Data Structures and Algorithms” written by Prof. Ming Zhang and two other coauthors. The course is appropriate for sophomore students majoring in computer science or other science/engineering disciplines. Students should have learned "introduction to computing", with the knowledge of structured and object-oriented programming.
The course will last for 14 weeks and requires the students to study for 4-8 hours per week. After studying the course, the students’ ability of abstract thinking and problem solving should have improved considerably. Their programming skills and the quality of their codes would have increased as well.
To be qualified for graduation in Peking University, the students need to be familiar about the materials in the textbook, do homework and exam independently, and obtain the score of 60% or more (80% for A score).
The course is one of the PKU-DeTao MOOCs, which is a joint effort by Peking University and DeTao Masters Academy.