CS50课程是美国哈佛大学的一门计算机课程,全名为“Introduction to Computer Science ”,主讲人David Malan。看这个名字,可以看出这是一个导论性质的课程,但是,与我(计算机专业大二学生)上过的导论课程,从内容与方式上完全不一样,大一的时候上导论课,就像听故事一样,老师讲讲有趣的事情,我们听听,然后,就没有然后了。

课程每集大概1小时左右,网易公开课上已经有中文字幕,我现在看了C语言部分,写写我自己的感受吧。

   

老师&&上课方式:可以用2个词语总结,幽默和互动。不时会请volunteer上台配合教授,印象中最深的是讲到搜索时,请volunteer上台直接撕书,台下也跟着鼓掌,就这样,大家的活跃度瞬间提升了。并且老师非常平易近人,笑容很亲切,最主要的是:很有激情!看着老师在台上手舞足蹈,时不时来个笑话,坐在下面还会睡觉???


课程内容:一个字,“难”。课程在第二集讲到了磁盘的存储原理,这应该是计算机组成原理里涉及的,虽然仅仅是介绍,但是,我觉得对于刚刚接触编程或者计算机(就像大一刚入学)的人来说,有点难理解。然后在C语言部分,与我接触的C语言课程思路有些不太一样,CS50讲解C语言时会讲部分的原理,比如调用函数时,其实就是在内存中维护了一个栈,然后说到了缓冲区溢出(大一的时候我们知道栈?知道溢出?)。虽然仅仅是入门级别的C语言,但作为一个同为CS专业的大二学生,听着都会觉得很新鲜,有点吃力。


让我感触最大的还是David Malan老师讲解C语言时的教授顺序。

“顺序?教C语言还有顺序?不都是从Hello world开始,printf啊,if else吗?”

也许有这样困惑的同学大有人在,我也不明白为什么会这样。

我们是从大一开始学C,在VC++里编代码,在cmd里显示结果,没人告诉我为什么要这样做,学长们都说C是基础很有用,但也没说明白这是为什么。今天,我看了这个视频,疑惑依然存在,但是,我明白了一件事,作为初学者应该明白的一件事情:什么是编程?为什么要编程?如何去编自己的程序?

CS50中老师是用一个图形化的IDE(姑且这样叫....),你需要做的也就是仅仅是拖控件,拖图像,拖Start,拖if else,拖switch......   没错,作为过来人,这绝对是一个很好编程的入门方式,图形化的界面,图形化的控件,最终的结果也是图形+声音展示,非常形象,这就很容易让初学者知道,我这样做结果是什么,为什么要这样做,更好的理解基本语法(if else,switch等)。记得一学长以前跟我说过,大一刚刚接触编程就应该从拖控件开始。没错,就应该这样,试想,刚刚接触编程的人,逻辑思维上还没有模块化程序化,照着书上的代码打出来后就只在一个黑框中出现一个“Hello Word”,难道这就是编程!  难道我以后做的就是在这个黑框中显示结果!!!

大部分学校的计算机专业大一的时候都会学习C语言,而且是泛泛的学,我想目的应该很简单,锻炼我们的编程的逻辑思维,模块化的思维,为后面的学习铺垫。但是,想想,当我们第一次看到代码时什么反应?main是干什么的?printf有什么用?为什么Hello world要用"" ?学习起来很痛苦,因为不懂,所以只能照着书上的敲,出现Hello World后,就没有然后了。

所以,个人觉得,对于无编程基础的人,教授C语言应该从图形化的界面开始,拖控件,图形化显示,而不是黑底白字的Hello World。锻炼编程的逻辑思维,养成模块化的习惯,然后再开始敲代码,这样可以更好的理解代码,而不是照搬书上的代码。