很多top大学的cs都有一门课,课程通过要求学生两、三个一组完成一个project。这个project就是在老师提供的处理器(比如自编的在仿真器上运行的某种mips架构的处理器)和编译器(交叉编译器)上编写一个稳定的,functional的操作系统。
具体地说就是你要写出内核的进程管理器,scheduler,内存管理器,文件系统,外设输入/输出管理(比如最简单的键入/显出),等等。期间俺娃遇到过很多crashes,内存泄漏等常见难调的问题。学生通常需要能够熟练编写、编译、加载、调试写好的程序,因为是teamwork,还要建立git repository等以便彼此同步工作。
对俺娃来讲,进大学前早就熟练在Linux系统开发,知道怎么用manpage找每一个库函数的功能和语法,能够轻松使用gdb调试,对处理器的结构有很多了解。所以基本就是开始编各个模块。可对他的很多从来没有过计算机历练的同学就太难了,要补的东西太多,甚至是要搞懂什么东西要补都是一个大问题。呵呵,那个乱象俺是知道的。
当然像俺娃的水平其实也只介于其间。更厉害的娃其实已经过了这个阶段,开始着手编写他的开源/商业产品了。
大学里的CA也是要面临许多基础相差很多的学生,还要政治正确,所以基本上都要看每个孩子自己。能不能活出来,要不要吸食一些能量增补剂就很难说了。
作为家长能够做的就是如果孩子想学CS的话,要趁早提供一些条件。千万不要滞留在“编写密码”的水平。:)