国外高级计算机科学学什么?
在哥廷根大学读博期间,上了几门CS课程,浅谈一下感觉吧。 哥廷根的授课式和国内差不多,都是讲课+考试或项目。不同的是,教授讲课的时候不会讲太细,需要课下自己看讲义(也有不看的教授,但我跟的这个系似乎都比较严肃),期末考试也是以大题为主,考察对基本概念的理解程度。
我上的几门课里,操作系统是和国内一样的,讲解操作系统的原理以及各种设计决策,这些决策为什么这样做的论述题让很多同学很头疼,我也是。但这类问题其实平时不注意积累的话很难回答,即使考前复习也效果不佳,因为知识点太多太散,很难串起来。另外一门数据结构则是完全不一样的授课方式了。
这门课主要学习数据结构的实现,各种算法的优劣以及复杂度和应用场景。教授给我们讲了大量的实际例子,让我们体会什么时候用这种数据结构比用那种更好。另外还教了我们一些技巧,比如如何快速的构建二叉树,怎么快速判断一个数组是否构成一个动态排序等等。
课后作业就是实现教授讲的某种数据结构的某个操作,并且这个操作的时间复杂度要尽可能低。上课有小组发言和答疑,同学们一起探讨的问题大部分与题目有关,有些问题比较基础,有些问题则深入进去就会发现其实是前人已经研究过甚至写过了论文的问题。
虽然看起来好像没学到什么东西,但在和同学讨论的过程中自己的思路确实受到了很多启发。最后一道大作业题是要我们实现并优化一组简单的排序算法,由于时间限制,我们只实现了其中的快速排序,而其它几个没有实现。最终交上去的结果却出乎意料的全A! 后来拿到试卷看到大题时,才反应过来原来这卷试卷除了最后一题其他题目都相对简单,而且前两个大题只要答出框架就可以拿分(当然细节也很重要),最后一个难度大的大题如果前面答得好也可以轻松得分。果然,成绩出来全卷100道大题只有两道大题有同学问教授具体应该怎么解,剩余98道题全部是“是否正确”“为什么要这样设计”之类的简答题。
总之,这门课让我知道光刷题是不可能出好成绩的,理解知识的重要性远比死记硬背强;同时,学好基础知识对于深入科研也是必不可少。希望我的经历对题主有所帮助。