斯坦福大学公开课《编程方法学》之笔记一的材料补充

在网站上下载了课堂的讲义,看的同时又随便生了点感想,就一起记录下吧。

其中,1-4的讲义是第一节课任务一的时候用的,我意识到如果那天看视频的时候就把材料看了的话就更好了,下次改进吧,凡事都有个过程嘛。

01-general-information.pdf:“All examinations are open-book."我很好奇,计算机的考试要如何开卷呢?

02-syllabus.pdf:很仔细贴心的课程大纲,列出了上课日期,每堂课的授课内容并且标注了学生需要提前进行材料阅读的部分。我很自然的就想起了本科上课的时候经常出现预习多了,预习少了,预习错了各种情况,后来索性就不预习了。现在真想厚着脸皮说上一句,“看来,这也不全是自己的责任啊”。

03-course-placement.pdf:一系列CS的课程以及选课建议,能够很大程度上防止学生“诡异”地选课。毕竟,本末倒置的学习总是事倍功半的,虽然,这种事情常常发生。

“Learning to program computers unlocks the full power of computer technology in a way that is both liberating and exciting.  At the same time, programming is an intellectually challenging activity that comes easily to very few people.  Taking a programming course requires a great deal of work and commitment on your part, but you will not be able to master programming without putting in that level of work somewhere along the way.  The payoffs, however, are quite real.  If you make the effort and keep up with the demands of the material, you will be able to make computers do amazing things. ”编程的乐趣总是伴着艰苦的学习和付出而来,少数人除外。

讲义里提到学习这门课的条件是不需要编程背景,但是却是需要想当的付出和艰苦学习(The course requires no previous background in programming, but does require considerable dedication and hard work),而这门课程的内容简单来说是使用Java语言来教授良好的软件工程编程原则(CS106A  teaches the widely-used Java programming language along with good software engineering principles),目的是教授编程方法而不是某一具体的编程语言(

The course teaches you about programming, and not about a particular programming language)。

04-honor-code.pdf:详细的讲解了国外广为流传的“honor code”以及一些具体的规则,参考别人的代码是不被允许的,哪怕是互联网上的解题代码也是不被允许的,甚至当获得了别人的帮助而最终解决了问题,都要在作业里面进行标注。针对学生提交的作业,学校的相关部门会进行抄袭检测。可以说,”honor code“在很大程度上保障了学生独立思考的权利,虽然这个权利很多时候都不是非常受到欢迎的,而这些都进一步提高了学生解决问题的能力。

05-downloading-eclipse.pdf:对于Stanford Eclipse的使用给出了一些指导。

06-karel-in-eclipse.pdf:讲解了如何使用Eclipse框架来写Karel项目。使用starter projects确实降低了任务的复杂度,能够使你忽略制作一个新项目的一些细节而专注于解决任务的问题。此外,文中针对”调试“有话说:

Debugging is a skill that comes only with practice. Even so, it is never too early to learn the most important rule about debugging:In trying to find a program bug, it is far more important to understand what your program is doing than to understand what it isn’t doing.(调试是一种仅仅能够从实践中获得的技能。即使这样,学习关于调试的最重要的规则永远都不嫌太早——在试图找到程序漏洞的过程中,理解你的程序在做什么比理解你的程序没有在做什么要远远重要的多。)

现实情况是,大部分的人在编程中遇到问题的时候会退回到原始问题,然后试图弄明白为什么他们的程序没有在做他们想要它做的事情。在某些情况下这种方法是有帮助的,但是更有可能的是,这种思考的方法使你对真正的问题视而不见。所以,你应该去尝试另外的方法。要知道,你的程序的确在做些什么。所以,暂时忘掉它应该干什么,去找出现在正在发生什么。指出程序正在做什么是一项相对简单的任务,而且Eclipse有很多的工具帮助你监督程序的执行。


展开阅读全文
博主设置当前文章不允许评论。

没有更多推荐了,返回首页