一位美国达特茅斯学院毕业毕业生的自述。
DartmouthCollege(达特茅斯学院)位于美国东北部新英格兰地区的NewHampshire(新罕布什尔州),一年中有将近五个月的漫长冬季。从学校向北开车三小时可以到达加拿大的Montreal(蒙特利尔)大都市练习法语口语,往南开车三小时可以到达美国Massachusetts州的港口城市Boston吃小绵羊火锅。Dartmouth成立于年,作为美国常春藤大学联盟之一,在U.S.News的美国本科院校排名榜中占第11位。
起始:抱着对计算机的好奇心
在开始大学生涯之前,我对计算机这一门学科的接触不多,唯一记得的大概就是中学时代上计算机课时用VisualBasic写过几个小程序。用周围爸爸妈妈的话来讲,就是远远地输在了未来要当程序员的起跑线上。不过对于这一切,当时的我是并不知道的。
Dartmouth一年有四个学期,也就是美国俗称的QuarterSystem。每个Quarter学期的时间是10个礼拜上下,一般修3门课,一门课一个学分。毕业时每个学生要修满36个学分,并且有三分之一的课程(12个学分)是致力于某一个专业。Dartmouth有一点不同于其他七所常春藤联盟学校,它属于LiberalArtsCollege(文理学院)。
LiberalArtsCollege有一个我很喜欢的地方,就是刚进大学的前两年可以自由选修不同领域的课程,发掘自己的兴趣爱好,找到合适的专业。然后,在大二结束之前必须确立好专业,用剩下两年的大学时间来主修自己的专业课程。
每年的春季学期都会有一门计算机入门课,叫作CS5IntroductiontoComputerScience。抱着对计算机的好奇心,我在大一春季修了这门课。因为CS5是计算机入门课,选课的同学还是很多的,人数大约在70人左右,是我在计算机系修过的人数最多的课程了。
CS-计算机科学专业CS5比较hands-on,一半是学习Java这一编程语言,另一半是通过Java编程为媒介来学习递归、模块化编程、面向对象编程的概念,同时还涉及了一些用户界面实现的内容。一个学期10个礼拜,每个礼拜3堂课,包含了11个shortassignment,5个labassignment,2个期中考试和1个期末考试。Shortassignment的概念是正常花1到2个小时就能完成的编程作业。Labassignment是相当于完成3到4个shortassignment作业量的任务,涉及到编写比较大的程序,代码量在-行左右。考试的话就是一个小时的试卷答题。课程还配备一个TeachingAssistant(TA)和多个SectionLeaders(SL)。
TA会在每周固定的时间设置officehours,学生可以在officehour时间去找TA开开小灶,对课上未能理解的内容提问求解。而SectionLeader则会负责对学生讲解shortassignment和labassignment的需求,并为这些作业打分。TA主要来自计算机系的研究生,而SL主要来自上过该门课程并且当时成绩是A的高年级本科学生。
现在回想起来,我对TA没什么印象,应该是从来没有去过officehours。SL倒是还记得,是一个叫Luke的高年级学生,经常在作业布置的时间迟到早退,一副无精打采的样子,批作业也是经常出错,常需要找他去改正分数。说到分数,不得不说明一下,美国大学是按GradePointAverage来计算成绩的,也就是俗称的GPA。课程得分为A对应的point是4.0,A-是3.66,B+是3.33,B是3,以此类推。大学四年毕业的时候满分是4.0,也就是全部都拿了A,用现在时髦的话讲是学霸级人物的存在。
CS5这门课,如果是分的总分,只有拿到92分以上才能拿A的成绩,因为这门课学生的成绩普遍都比较高。学生对于包括10%的上课出勤分在内的每一分都是很在意的,所以对于作业或者考卷被扣错分数是无法容忍的,这大概也就是为什么我到今天还记得当时修这门课的SL。
进阶:定义功能需求与开发实现
虽然修CS5的整个体验中有些小小的不愉快,但我还是受到了howtosolveproblems