Day7 如何培养算法思维

  • 经历描述
  • 经验总结
  • 追求目标
  • 个人感触

算法目录

之前查到过一个比较好的算法学习方法总结,来自清华大学算法训练营 ,提出的“做中学” 方法,个人也是比较认同的,大家不妨看看下面的详细介绍。
事半功倍:Learning by doing 做中学

经历描述

在我初学编程时,因没有掌握计算机相关专业的学习方法,走了不少弯路。
我总是想先“打好基础”,再走下一步,但这需要时间、毅力与坚持。
我花了很大气力学习,但都事倍功半!
我想找到效率更高的学习方法,于是我开始浏览美国计算机四大名校的课程网站。

经过一番研究,自学几门课程后,我发现了他们的教学套路:

  • 教授理论知识(一),小作业,用于巩固理论知识(一)
  • 教授理论知识(二),小作业,用于巩固理论知识(二)
  • 大作业,编程实践,需要用到理论知识(一)与(二)
  • 教授理论知识(三),小作业,用于巩固理论知识(三)
  • 教授理论知识(四),小作业,用于巩固理论知识(四)
  • 大作业,编程实践,需要用到理论知识(三)与(四)
  • 项目作业,编程实践,多人协作,需要用到理论知识(一)~(四)+ hits
  • 重复上述过程,一般重复4~6次,中间穿插期中考试,最后期末考试

由此“套路”总结出另一种学习方法——“迭代学习”法:

  • 理解待解决的问题
  • 学习部分理论知识
  • 动手实践尝试解决,无法解决,回到1或2
  • 成功解决抓紧总结
  • 即使现在回头看,我也不能说第一种学习方法有错,“迭代”学习法更好!但这两种学习方法都是以同一个核心为基础的——动手做,做中学!
    你可以都尝试一下,然后选取自己喜欢、又高效的学习方法!当然也欢迎分享你的学习方法!

经验总结

越早适应“迭代”学习法对你越有利。
大多数时候你没有足够的时间来“学完再做”。
若你在“迭代”学习过程产生的焦虑、沮丧、挫败感,请及时排解
排解后记得回来,坚持才能胜利!

个人建议
学习《算法设计》在借鉴学习《数据结构》的经验的同时,需要做适当调整——在每次大迭代中应用“迭代”学习法:

第一次迭代,熟悉常用的算法设计策略,掌握策略的使用方法及适用的场景

  • 其实学习《数据结构》时你已经学了不少经典算法
  • 带着学到的算法设计策略回头总结、归纳经典算法
  • 可以在纸上画画设计策略与经典算法的关系图,是一对一,一对多,还是多对多
  • 这个阶段的重点,在脑中建立常用算法设计策略与经典算法的对应关系
  • 如果个人能力不错,可考虑与《数据结构》第三次迭代同时进行

第二次迭代,灵活运用算法设计策略,解决实际问题

  • 大量的解决问题,在此过程中总结出你个人解决问题的流程
  • 可以针对某项设计策略进行专项训练,但要考虑实际需求——工作、面试、竞赛
  • 此阶段的重点就是解决《数据结构》第三次迭代中的隐藏关卡,同时培养解决问题的感觉、自觉
  • 别忘了“迭代”学习方法
  • 大量训练、多与他人探讨、扩展自己的思路并及时总结

第三次迭代,对给定问题能运用数学证明你的算法设计策略是正确的、可行的、高效的

  • 这个阶段要做的事本应该融入到前两次迭代中的,甚至更早比如在离散数学课上
  • 之所以单抽出来是因为有太多的人因这个“拦路虎”而徘徊在“算法设计”的大门前迟迟不敢踏入半步,更有甚者转身离开了就再也没回来…
  • 如果你不擅长数学,或不打算从事科研及对数学要求较高的工作,可以跳过
  • 对于打算从事科研及对数学要求较高的工作的人来说,这也可以算迂回策略
  • 可以先从教材对经典算法的证明学习,然后重走第二次迭代实践(这才是看CLRS的
    时机)
  • 这个阶段的重点,有意识地运用数学来决定设计策略的选取

追求目标

你在学习《算法设计》的初期没能养成良好的推理、证明习惯,后期改正要费些功夫信心/底气不足,有强大的数学理论作为支撑你敲代码、测试或和别人辩论也底气十足尽管不完美但比起那些徘徊在门口、转身离开的人,你已进入“算法设计”的大门!
这难道不值得高兴吗?

个人感触

在很久之前,接触python的时候,我当时最感兴趣的是人工智能,在高考后一个星期,我就开始准备python的编程,并且我当时很喜欢python,因为觉得python很漂亮,最漂亮的就是他越简洁越好越短越好。除此之外,python中有很多科学计算库,算一个超级语言,我不用花那么时间去准备。
忘记什么时候,开始关心算法和数结构的问题,大概是有些代码的写法的内在逻辑让我头秃的时候。我不能忍受自己死记硬背一些明明很有逻辑的东西,而且有时候,因为你不懂内部的实现,无法进行逻辑的搭建与项目的整合,那时候愁死我了。
在上个学期,我已经学完了数据结构,下个学期还要算法设计,我是觉得Algorithm是非常重要的一环,ACM最注重的就是Algorithm,当然,我的水平还是不够ACM,但是我会不断努力,每天学一点,我相信,总有一天,我也可以成为我仰望的人。

每日一句
You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.
(你不能改变你的过去,但你可以让你的未来变得更美好。一旦时间浪费了,生命就浪费了)

Day7 如何培养算法思维相关推荐

  1. 郑可迪 : 培养数据思维,投身电力大数据领域研究 | 提升之路系列(一)

    导读 为了发挥清华大学多学科优势,搭建跨学科交叉融合平台,创新跨学科交叉培养模式,培养具有大数据思维和应用创新的"π"型人才,由清华大学研究生院.清华大学大数据研究中心及相关院系共 ...

  2. 近期活动盘点:数据化思维困局和0.01突破讲座、极简大数据决策,培养数据化思维讲座...

    想知道近期有什么最新活动?大数点为你整理的近期活动信息在此: 数据化思维.困局和0.01突破讲座 2019年6月12日 顺应数字化变革,培养数据化思维是企业与个人的共识.但即使是顶级数据专家,面对复杂 ...

  3. 学编程可以培养编程思维,而编程思维是什么?解读IT入门知识

    大家经常听说"学编程可以培养编程思维",而编程思维是什么?学编程和培养编程思维有什么联系你知道吗? 一.什么是编程? 在了解编程思维之前,首先,要和大家说一说什么是编程. 编程就是 ...

  4. 举例说明:学编程和培养编程思维有什么联系?

    大家经常听说"学编程可以培养编程思维",而编程思维是什么?学编程和培养编程思维有什么联系你知道吗?本文,带大家从多方面来具体了解下编程思维. 一.什么是编程? 在了解编程思维之前, ...

  5. 计算机思维相关实例,几个培养计算思维的教学小案例

    原标题:几个培养计算思维的教学小案例 计算思维的核心部分 BBC概述了计算思维的四大基石:分解.模式识别.抽象和算法. 分解:让孩子们将复杂的问题分解成更小.更简单的问题. 模式识别:引导孩子们建立相 ...

  6. UI设计培训分享:ui设计师如何培养设计思维?

    作为一名UI设计师,工作上经常会遇到思维碰撞的问题,培养自己的设计思维是大部分UI设计师都需要的,那么ui设计师如何培养设计思维呢?来看看下面的详细介绍. UI设计培训分享:ui设计师如何培养设计思维 ...

  7. AI一分钟 | 教育部公布高中新课标,编程、算法思维成必修内容;李彦宏否认百度会“All in AI”

    一分钟AI 李彦宏表示自己做事一向留有余地,否认百度会"All in AI". 教育部发布最新高中课程改革方案,对学生在编程.算法.人工智能和开源硬件方面的要求大幅度提升. 罗永浩 ...

  8. 报名 | 极简大数据决策,培养数据化思维讲座

    大数据挖掘是现在最受欢迎的职业技能之一,但即使是数据统计专业的同学,也常在步入职场后发现所谓的"Data scientist 的金色人生"很难实现.在数据时代,培养数据化思维变得越 ...

  9. 经典常用算法/常用算法思维---附伪代码以及实现

    本篇文章旨在分享一些常用算法的伪代码以及部分算法的具体实现,后面也会更新我在刷算法题中学到的或者从别的地方看到的经典算法思维 本博客并不提供算法说明,算法证明,算法分析,算法测试等内容,只提供算法的伪 ...

最新文章

  1. Linux网络相关、firewalld、netfilter及其5表5链、iptables语法
  2. android的33种常用组件1
  3. 玩转 Redis 集群之 Sentinel
  4. usg6000v 无法ping通_柯美复印机网络打印无响应?无法打印、扫描?原来这里出了问题...
  5. 有关ArrayList的toArray()方法的一些探究
  6. 简历python技能怎么写_简历怎么写?列出这10项重要的工作技能
  7. @autowired注解注入为null_Spring @Autowired 注解自动注入流程是怎么样?
  8. 深入理解Java虚拟机--笔记1
  9. rm: cannot remove `xxx’: Operation not permitted问题的处理方案
  10. 管理员登录页面html代码,自己做的一个后台管理员登陆界面 .cshtml
  11. Knex: Timeout acquiring a connection. The pool is probably full. Are you missing a .transacting(trx)
  12. C#设计一个Windows应用程序,在该程序中首先构造中学生、大学生等派生类,当输入相关数据,单击不同的按钮(“小学生”“中学生”“大学生”)将分别创建不同的学生对象,并输入当前的学生总人数,该学生的
  13. 手持PDA操作系统有哪些?哪个系统好?
  14. Linux系统连接校园网指南(JLU)
  15. 手机闪存速度排行_真机闪存实测:闪存读取速度到底什么鬼差距有多大
  16. tomcat的startup里为什么有突然多出来了一行这个NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-
  17. 中国芯片争论:买关键技术还是自己重新研发?
  18. Python3爬取国家统计局官网2017年全国所有城市县镇数据
  19. 【验证码功能合集】vue简单实现验证码功能,纯前端实现验证码,拿来即用【输入,滑动,拼图】
  20. 计算机教师年终考核,2021年计算机教师年终考核个人总结.doc

热门文章

  1. 金融学学习笔记第2章
  2. IronMCC 多媒体展厅中控系统
  3. 整数划分的递归实现算法c语言,整数划分算法原理与实现
  4. 基于Node+Vue+Express开发实现商城系统
  5. Flash拖拽元件的元件+元件的元件随鼠标移动:目的让元件的元件随着鼠标移动
  6. eventlet如何绿化pyserial最好
  7. 将rtthread-4.0.3 移植到LS1B的踩坑记录
  8. 线性稳压器ME6209A33M3G应用电路
  9. html网页转换成psd,网页设计PSD到HTML – 更直接的方式?
  10. Xmanager的下载和使用