计算机科学基础班(第5期)昨天进行了第2课。做第1课练习的时候,已经有同学说“这个虽然叫「基础班」,但是练习有些好难……”
没错,「基础班」不等于「容易班」。基础的意思是 foundation,或者 fundamental。它是为将来的发展建立坚实的地基,这并不是容易的工作。
第一课只讲了三个概念,掰着手指头都能数出来。但练习却充分利用了这三个概念,要求学生用它们组合出非常强大的程序。我们相当于从头构造了自然数,接着定义了自然数的基本操作:加法,乘法,乘方,减法……
没有比自然数更”基础“的东西了吧?但是从无到有定义出自然数来,这却不容易。
第二课只讲了一个概念:递归。而且只讲了数值的递归。然而练习做完之后,我又增加了两个”隐藏关卡“,让学生用另外的方式再次定义自然数,并且重新实现它的加法,乘法,乘方,阶乘……
这样两次自己创造自然数之后,计算机科学的地基就牢牢地建立起来。而且同学们会理解,计算机科学并不是建立在数学的基础上的。正好相反,数学可以建立在计算机科学的基础上。