<h3>经过了编程基础课的系统学习,相信很多同学已经对编程有了初步的认识。具备从问题出发,形成编程思路的能力。那么我们下一步将要如何继续学习呢?学习什么内容呢?</h3><h3><br></h3><h3></h3><h3>要知道,虽然我们已经经过了编程基础阶段的学习,但是在编程生涯中我们依旧处于起步阶段,计算机技术飞速发展了几十年,各种技术和知识浩如烟海,如果说每一种技术的应用好比是武术套路,那么要想逐一攻克显然是不可能的。那么我们就要将有限的精力投入到核心知识,或者说叫做编程“内功“的修炼当中。那么什么是编程的“内功”呢?其中之一当属算法与数据结构了(algorithm and data structure)。作为老师,我会推荐学生在基础入门之后学习算法和数据结构,从简单的部分开始,慢慢向更深入的内容学习。可能有些机构或者课程会强调带领学生制作一些实践项目,体现编制知识的实用性的特点。但我认为这样的出发点虽然很好,比如,通过制作一些项目,学生能够体会到学以致用,提高学习兴趣。但是不应该作为教学的重点。学生刚刚进入编程世界的大门,我们应该利用这个宝贵的时间将他们领向更核心精华的部分。算法与数据结构相当于是提供给了学生更多解决问题的工具,让他们在想问题的时候更加聪明,写出更合理有效程序,而不是一味的暴力编程(Brute Force)。并且在学习算法与数据结构的过程中,学生的思维能力会得到进一步的锻炼。我授课的宗旨一直是希望帮助学生提高编程的能力,帮助他们修炼“内功”。在能力和水平得到提升以后,学生并不需要老师太多的指导,就可以自主制作编程项目。</h3><h3><br></h3><h3></h3><h3>有什么途径可以检验学习的效果?</h3><h3>具体来讲,我们学习的算法与数据结构除了能够整体提升编程能力以外,最直接的一个应用就是各种编程竞赛和AP课程。竞赛很大程度上是考验算法的了解和数据结构的使用能力。那么竞赛的成绩,无论从升学还是提升自信都是有巨大的帮助。</h3><h3><br></h3><h3></h3><h3>最后我简单列举算法和数据结构会接触的内容以供参考:</h3><h3>OOP</h3><h3>List</h3><h3>Recursion</h3><h3>Sorting and searching</h3><h3>Simple sort</h3><h3>Merge sort</h3><h3>Quick sort</h3><h3>Divide-and-Conquer</h3><h3>Stack</h3><h3>Queue</h3><h3>Tree</h3><h3>Priority Queues</h3><h3>Map and Hash tables</h3><h3>Search tree</h3><h3>Graph and Graph theory</h3><h3>...</h3><h3><br></h3>