Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Jiaying Liu 刘家瑛, Ph.D. and 郭 炜

算法代表着用系统的方法描述解决问题的策略机制,北京大学《算法基础》课程将带你一一探索枚举、二分、贪心、递归、深度优先搜索、广度优先搜索、动态规划等经典算法,体会他们巧妙的构思,感受他们利用计算解决问题的独特魅力。顺利完成本课程,你将不但能够掌握这些算法的原理,还能够对这些算法进行灵活应用以及准确实现。本课程的中的编程任务,将充分训练你的思维能力和动手能力,促成全面、缜密思考问题的习惯。达到本门课程的要求,即意味者你具备了初步的算法基础和较强的编程实现能力。

Enroll now

Here's a deal for you

Save money when you learn with a deal that may be relevant to this course.
All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Syllabus

欢迎加入我们!
好的算法是程序设计的灵魂!拥有了骄人战绩的你,在熟练掌握程序设计语言的同时,只有掌握了算法这个利器之后,才能在驾驭程序开发项目中出其不意、鬼斧神工!欢迎加入《算法基础》课程,为你的程序插上飞翔的翅膀!PS:我们这门课程一直处在不断地建设与优化当中,吸取了很多以往课程的经典视频,所以如果你看到视频中出现了不同课程的名字,也不要惊讶哦,因为你正在集百家所长:)
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Guides students in visualizing solutions to problems by introducing concepts such as enumeration, binary search, recursion, and dynamic programming
Led by instructors who are well-known for their expertise in algorithm development and implementation
Teaches skills in implementing searching and algorithm techniques for software development
Builds a solid foundation in algorithm design and analysis techniques

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

算法基础:系统讲解与实践并重

根据学员反馈,北京大学的《算法基础》课程被普遍认为是一门质量非常高的算法入门课。学员们称赞老师的讲解清晰深入,能够将复杂的算法原理讲得通俗易懂,尤其是动态规划等章节。课程内容扎实且系统,覆盖了最重要的基础算法,为后续学习打下了坚实的基础。课程提供的编程练习和作业是课程的一大亮点,学员们认为它们非常有价值,能够有效巩固知识,并显著提升编程能力。不过,也有部分学员提到编程练习平台体验不够流畅判题系统有时不够友好,以及期末考试难度相对平时习题有跳跃。此外,课程中包含部分早期视频,教学风格可能偏传统。总体而言,这是一门备受推荐的算法基础课程,尤其适合希望通过大量实践来掌握算法的学习者。
部分视频引自旧课程,教学风格偏传统。
"有些视频是以前课程的,感觉不够新颖。希望未来能有更新。"
"教学方式有点传统,互动比较少。"
"有些视频画面比较旧。"
期末考试难度较大,与平时习题有差距。
"期末考试有点压力,需要提前充分准备。"
"感觉期末考试难度有点大,和课后习题的难度跳跃比较明显。"
"虽然平时作业能掌握知识,但期末考试感觉难度提升不少,需要花更多时间准备。"
课程内容丰富扎实,覆盖基础算法体系。
"课程内容很扎实,覆盖了基础算法的方方面面。"
"课程安排循序渐进,从简单的枚举递归到复杂的动态规划和搜索,体系完整。"
"课程内容丰富,讲解深入。我感觉学完这门课,对以后学习更高级的算法和数据结构打下了坚实的基础。"
"非常系统的算法入门课程,涵盖了最重要的基础算法。"
习题和作业锻炼能力,有效巩固知识。
"习题和期末考试难度适中,但需要认真思考和练习。通过这门课...提高了编程能力。"
"作业设计得也很好,能够巩固所学知识。"
"编程练习很有挑战性,能锻炼解决问题的能力。"
"配套的编程作业是提升的关键。"
"编程作业是课程的精髓,虽然有难度,但做出来很有成就感。"
老师讲解透彻易懂,原理推导清晰。
"老师讲的深入浅出,证明和推导都很清晰..."
"课程质量非常高,老师的讲解通俗易懂..."
"老师讲的算法清晰易懂,配合习题和练习,能快速掌握。"
"老师的讲解非常专业,对算法的原理和应用讲得很透彻。"
编程练习平台老旧,判题系统不够友好。
"就是感觉编程练习的平台有点老旧,体验不太顺畅。希望能更新一下平台..."
"感觉编程作业的判题系统不太友好,有时候代码没错但因为格式或者其他小问题被判错..."
"希望编程练习平台能改进,有些功能不太好用。"

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in 算法基础 with these activities:
Review notes and past assignments on recursion
Refresh your memory on recursion to prepare for more advanced topics.
Browse courses on Recursion
Show steps
  • Gather your notes, assignments, and any other materials on recursion from previous courses.
  • Go through the materials, focusing on key concepts and examples.
  • Identify any areas where you need additional clarification or practice.
  • Seek help from a classmate or instructor if needed.
Review the book 'Algorithm Design' by Jon Kleinberg and Éva Tardos
Expand your knowledge of algorithm design by delving into a comprehensive textbook.
View Algorithm Design on Amazon
Show steps
  • Read the book thoroughly, taking notes and highlighting key concepts.
  • Work through the exercises and problems at the end of each chapter.
  • Summarize the main ideas of each chapter and discuss them with classmates or a study group.
Participate in a discussion group on the trade-offs of different algorithms
Gain insights into the strengths and weaknesses of different algorithms by engaging in discussions with peers.
Show steps
  • Find a discussion group or forum where you can connect with other students.
  • Prepare by reviewing the course materials on algorithm comparison.
  • Actively participate in discussions, sharing your thoughts and asking questions.
  • Summarize key takeaways from the discussion and reflect on how they enhance your understanding of algorithms.
Two other activities
Expand to see all activities and additional details
Show all five activities
Complete practice drills on 二分查找(binary search)
Reinforce your understanding of 二分查找 by working through practice drills.
Browse courses on Binary Search
Show steps
  • Find practice drills on 二分查找 online or in textbooks.
  • Set a timer for 60 minutes and complete as many practice drills as possible.
  • Review your answers and identify any areas where you need additional practice.
Create a visual representation of the 贪心算法(greedy algorithm)
Deepen your understanding of 贪心算法 by creating a visual representation of its key concepts.
Show steps
  • Choose a specific greedy algorithm to focus on.
  • Identify the key steps and decision-making criteria involved in the algorithm.
  • Create a visual representation that clearly illustrates the flow of the algorithm and the decision-making process.
  • Consider using tools like flowcharts, diagrams, or infographics.

Career center

Learners who complete 算法基础 will develop knowledge and skills that may be useful to these careers:
Algorithm Engineer
Algorithm engineers develop algorithms and data structures to solve specific problems. They use their knowledge of mathematics, computer science, and algorithm design to create efficient and effective algorithms. This course on algorithm fundamentals provides a strong foundation for algorithm engineers by teaching them the core concepts and techniques used in algorithm design and analysis. By understanding how algorithms work, algorithm engineers can develop more efficient and effective algorithms.
Machine Learning Engineer
Machine learning engineers design and develop machine learning models. They use their knowledge of algorithms, data structures, and machine learning techniques to create models that can learn from data and make predictions. This course on algorithm fundamentals provides a strong foundation for machine learning engineers by teaching them the core concepts and techniques used in algorithm design and analysis. By understanding how algorithms work, machine learning engineers can develop more accurate and efficient machine learning models.
Computer Scientist
Computer scientists conduct research and develop new computing technologies. They use their knowledge of mathematics, computer science, and algorithm design to create new algorithms, data structures, and software systems. This course on algorithm fundamentals provides a strong foundation for computer scientists by teaching them the core concepts and techniques used in algorithm design and analysis. By understanding how algorithms work, computer scientists can develop more efficient and effective computing technologies.
Software Engineer
Software engineers apply engineering principles to software design and development. They use their knowledge of programming languages, algorithms, and data structures to create efficient and reliable software systems. This course on algorithm fundamentals provides a strong foundation for software engineers by teaching them the core concepts and techniques used in algorithm design and analysis. By understanding how algorithms work, software engineers can develop more efficient and effective software solutions.
Data Scientist
Data scientists use their knowledge of mathematics, statistics, and computer science to extract insights from data. They develop algorithms and models to analyze data and make predictions. This course on algorithm fundamentals provides a strong foundation for data scientists by teaching them the core concepts and techniques used in algorithm design and analysis. By understanding how algorithms work, data scientists can develop more accurate and efficient models.
Software Architect
Software architects design and develop the overall architecture of software systems. They use their knowledge of software engineering, algorithm design, and data structures to create scalable and reliable software systems. This course on algorithm fundamentals provides a strong foundation for software architects by teaching them the core concepts and techniques used in algorithm design and analysis. By understanding how algorithms work, software architects can develop more efficient and effective software systems.
Quantitative Analyst
Quantitative analysts use mathematical and statistical models to analyze financial data and make investment decisions. They develop algorithms and models to analyze data and make predictions. This course on algorithm fundamentals provides a strong foundation for quantitative analysts by teaching them the core concepts and techniques used in algorithm design and analysis. By understanding how algorithms work, quantitative analysts can develop more accurate and efficient models.
Operations Research Analyst
Operations research analysts use mathematical and statistical models to solve business problems. They develop algorithms and models to optimize processes and make decisions. This course on algorithm fundamentals provides a strong foundation for operations research analysts by teaching them the core concepts and techniques used in algorithm design and analysis. By understanding how algorithms work, operations research analysts can develop more efficient and effective solutions to business problems.
Artificial Intelligence Engineer
Artificial Intelligence Engineers use their knowledge of mathematics, computer science, and algorithm design to design and develop AI systems. This course on algorithm fundamentals provides a strong foundation for AI Engineers by teaching them the core concepts and techniques used in algorithm design and analysis. By understanding how algorithms work, AI Engineers can develop more efficient and effective systems.
Systems Engineer
Systems engineers design and build complex systems. They use their knowledge of systems engineering, algorithm design, and data structures to create efficient and reliable systems. This course on algorithm fundamentals provides a strong foundation for systems engineers by teaching them the core concepts and techniques used in algorithm design and analysis. By understanding how algorithms work, systems engineers can develop more efficient and effective systems.
Blockchain Developer
Blockchain developers design and develop blockchain systems. They use their knowledge of cryptography, computer science, and algorithm design to create secure and efficient blockchain systems. This course on algorithm fundamentals provides a strong foundation for blockchain developers by teaching them the core concepts and techniques used in algorithm design and analysis. By understanding how algorithms work, blockchain developers can develop more efficient and effective blockchain systems.
Data Engineer
Data engineers design and build data pipelines. They use their knowledge of data engineering, algorithm design, and data structures to create efficient and reliable data pipelines. This course on algorithm fundamentals provides a strong foundation for data engineers by teaching them the core concepts and techniques used in algorithm design and analysis. By understanding how algorithms work, data engineers can develop more efficient and effective data pipelines.
Mobile Developer
Mobile developers design and develop mobile applications. They use their knowledge of native programming languages, mobile operating systems, and algorithm design to create user-friendly and efficient mobile applications. This course on algorithm fundamentals provides a strong foundation for mobile developers by teaching them the core concepts and techniques used in algorithm design and analysis. By understanding how algorithms work, mobile developers can develop more efficient and effective mobile applications.
Game Developer
Game developers design and develop video games. They use their knowledge of graphics, physics, and algorithm design to create fun and engaging games. This course on algorithm fundamentals provides a strong foundation for game developers by teaching them the core concepts and techniques used in algorithm design and analysis. By understanding how algorithms work, game developers can develop more efficient and effective games.
Web Developer
Web developers design and develop websites. They use their knowledge of HTML, CSS, JavaScript, and algorithm design to create user-friendly and efficient websites. This course on algorithm fundamentals provides a strong foundation for web developers by teaching them the core concepts and techniques used in algorithm design and analysis. By understanding how algorithms work, web developers can develop more efficient and effective websites.

Reading list

We've selected eight books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in 算法基础.
数据结构与算法分析是数据结构和算法领域的一本经典教材,本书注重算法的分析和证明,深入浅出地讲解了各种算法的复杂度和性能,是学习算法分析和提高算法能力的优秀参考书。
编程珠玑是编程领域的一本经典著作,本书收集了大量编程中的技巧和窍门,深入浅出地讲解了各种编程技术和算法的实现,是学习编程技巧和提高编程能力的优秀参考书。
代码大全是软件工程领域的一本经典著作,本书全面系统地介绍了软件开发中的各种最佳实践和反模式,是学习软件开发和提高编程能力的优秀参考书。
数学之美是一本数学科普著作,本书通过一个个生动有趣的故事,讲述了数学中的各种奥秘和应用,是培养数学思维和提高数学素养的优秀读物。
离散数学是一本离散数学领域的经典教材,本书全面系统地介绍了离散数学的基本概念和原理,是学习离散数学和提高数学素养的优秀参考书。
计算机网络是一本计算机网络领域的经典教材,本书全面系统地介绍了计算机网络的基本概念和原理,是学习计算机网络和提高计算机素养的优秀参考书。
软件工程是一本软件工程领域的经典教材,本书全面系统地介绍了软件工程的基本概念和原理,是学习软件工程和提高计算机素养的优秀参考书。
人工智能是一本人工智能领域的经典教材,本书全面系统地介绍了人工智能的基本概念和原理,是学习人工智能和提高计算机素养的优秀参考书。

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser