(注:公共部分由电工电子基地梁书宇执笔,项目部分由个人叙述,龚小聪整理)
早上我和葛挺为大家准备早餐。前一天晚上已经讨论好早餐是方便面,所以我们就带上了所有人的饭盒,拿了方便面和前天在中餐馆打包的剩菜,在宿舍楼下的厨房热菜、煮面。相对于电饭煲等厨具,速食使用微波炉加热更快。7点半通知大家吃早餐,饭后,每人喝了一杯酸奶,均衡营养。

图1 晨会上助教穿着希腊传统服装(床单)
每天早上8点半到9点钟是晨会时间,今天是学校的Chiton Day,助教和很多学生使用床单作为希腊人的传统服装Chiton穿在身上。晨会中,各个助教对于今天的日程安排进行了说明,并对昨天迟到的同学进行了“惩罚”。“惩罚”的形式很有趣,迟到的同学在胸前挂着写有自己名字的大牌子,既起到了教育作用,又不失娱乐效果,保持轻松活跃的气氛。
今天的活动包括Project Time和Career Choice Adviser,Project Time是各个老师带领学生继续做项目,而Career Choice Adviser是每个教授针对自己的专业进行职业生涯方面的介绍,给学生提供建议,让学生对于自己将来可能从事的行业有一个清晰的认识。
在课程正式开始之前,老师会在学生中进行统计,记录Career Choice的多个讲座中,每个学生最想要听哪些讲座。于是他们在白板上通过划线的方式计数统计,这种方式和中国使用的“正”字统计法很相似,先划四条竖线,然后划一条横线,这样就代表一个“5”。

图2 助教指导学生配置开发环境
上午的Project Time,Dr. Anderson和助教帮助学生们建立了开发环境。每个学生使用Remote Desktop连接到服务器上的虚拟机,使用虚拟机进行开发。相对于国内的实验环境,开发使用的软件都是最新版本。这一点非常重要,因为国内的课程大多还在使用几年前的技术,由于IT行业日新月异,学生在课堂上学习到的和真正能够应用于实际开发的大不相同,这种情况让很多人感到困扰。

图3 高热量的午餐,包含生菜、肉和牛奶
中午只有一个小时的空闲时间,如果我们自己做饭,时间相当紧张。这两天都是在食堂吃午餐。美国人的饮食文化很有趣,由于食物主要是肉类、甜食,他们每天摄入的热量总是大于正常消耗,造成很高的肥胖比例,于是就出现了no fat milk等通过加工去除脂肪的食物,售价远高于加工前的食物。美国人对于蔬菜的处理主要是生吃、水煮两种方式,相对于中餐复杂的制作手段实在是简单。大量的肉类保证了他们的蛋白质供应,使他们不会在中午犯困,因此中午并没有午休,短暂的lunch time之后就继续工作。
午餐后继续Project Time。Dr. Anderson通过一个样例继续讲解Pygame的使用,原以为教授会详细介绍Python语言,但实际上他是直接用代码来讲解,并没有提及编程语言的诸多概念,比如函数、变量、算法等。这种教学方式和一个Python教程Learn Python The Hard Way十分相似,崇尚熟能生巧的理念,以实践为主,让学生自己学习和领会术语、概念,虽然一开始会让很多人感到困难,但是一旦度过迷茫期,之后的学习就会更加顺利。
讲解完样例之后,教授给学生一段时间自由练习,有的学生就开始自由发挥,做出动画效果,引得周围同学围观。这样的教学进度相对于国内学生来说似乎比较快,但是这些高中生中并没有人反映理解困难等问题,也许是习惯了这种方式,也许有人会在课下继续自学。教授则强调,如果有不理解的问题可以直接问他,如果感到课程进度较快,也可以反映。今天的课程也布置了课后任务,让每个人给教授发送一封邮件,标题为“How I am doing”,向教授说明自己的学习情况。

图4 在宿舍厨房中做饭
晚上,我们拥有了足够的时间来准备晚餐,于是刘洋洋、龚小聪和陈锦三人一起,利用上次去Walmart采购的食材,做出了一顿丰盛的中餐。连续吃了好几顿西餐之后,久违的中国菜让人胃口大开,月是故乡明,菜是故乡香。
今天Project Time就开始了。在晨会结束之后,选择Computer Programming的学生来到F217,Dr. Anderson以及两位助教已经在这边准备好了。首先,所有人按照教授的指示,使用Remote Desktop连接到学校服务器提供的虚拟机上,使用虚拟机环境进行开发。虚拟机已经配置好了开发环境,所以教学很快就开始。教授在大屏幕上编写代码,下面的学生也跟着练习。整个课堂只有教授的讲解和学生敲代码的声音。
课程并没有讲解太多理论性的内容,而是直接开始使用代码教学,学生们跟着老师的讲解编写代码和运行。这种以实践为主的方式能够有效锻炼学生的动手能力,不过概念性的内容就需要学生自己的努力来理解了。这些高中生并没有对这种方式提出太多问题,似乎已经习惯了这样的学习方式。接下来可以和他们深入交流,看他们是如何在没有基础的情况下学习一种编程语言。
在做observer的同时,张老师、陈锦、葛挺和我一起着手做一个rail runner(楼梯扶手攀爬机器人,夏令营众多项目中的一个)。经过讨论,我们大致制定了三套方案。其一,在他们往届的成功案例中做改进;其二,运用重心控制的方法,实时监测实时控制;其三,几乎全部利用机械结构来保证机器人的平稳性,虽然没有控制的成分,但不妨一试。所以今天下午陈锦和我利用空余时间在inventor里面建立了一个大致的三维模型,以分析其可行性。

图5 rail runner方案三的简易模型
如图所示,保证稳定性的关键在于用上下两个凹形轮把栏杆扶手完全卡住,再利用重物重力保证位置基本不变。目前看来,在一些障碍物的影响下,此套方案也基本能够完成上坡、下坡、过弯等功能。但方案的最终确定还有待于进一步的细节设计和多种限制因素的综合考虑。
昨天ECE项目组对catapult成员进行了电路基本原理培训,在此基础上,同学们今天学习了一阶无源滤波电路。宋老师在讲课时提到了d V/d t,然后推导频率响应时直接使用了1/ JWC,对此我感到很奇怪,难道美国高中生已经学习了微分方程和复数理论?具体细节有待探究。但不管是否学过,他们心态很好,从听课和实验的表现来看他们并没表现出太多疑惑和压力,反而是一种寻找乐趣,have fun的方式。从平时交流中也可以明显体会到这种积极向上的生活态度,比如见面时经常说“Have fun!”,“Have a nice day!”。在课堂上,积极向上的态度还表现在提问的自由性上,不管是晨会、报告还是课堂、实验,同学们只要有问题都可以举手提问,老师也很乐意解答,这种方式可能不一定是最高效的,但对于老师和同学之间交流以及知识的传递是有很大帮助的,从教育核心理念角度考虑,这种效益可能比“高效”更为重要。
理论上课结束后,同学们迅速转换模式,进入实验环节。我和张征老师也参与其中,作为adviser,帮助他们了解仪器、连接电路和测试等等。其中有人想做rail runner,来询问有关servo如何控制的问题。由于对servo单词的不了解,我和张老师刚开始将servo理解成了DC motor,但后来从其他角度分析出这其实不是DC motor,而是舵机或伺服电机,于是及时纠正了过来,并最终向咨询的同学顺利地讲解了servo的控制方式。第一次完整地向美国“小朋友”解答一个问题,感觉还是很不错的。
其实在整个教学过程中最为耐心负责的还是要数宋老师,不管多么简单的基本理论,多么容易的基础实验,只要同学们有问题,他都耐心仔细地向他们分析清来龙去脉。其中有五个组参加的是机械项目,但希望做成的作品是rail runner,与电子电路关系紧密,于是分别来找宋老师寻找帮助。宋老师对于每一组不仅耐心讲解相关技术,还带领他们实地演示前年的rail runner,就这样演示了五次。宋老师认真的工作态度,杰出的为师风范值得赞赏。
当然,我们自己的项目也在向前推进,在器件和制板方面有一定改动,使之可以更加方便完成。特别是当看到一块覆铜板时,心里无比激动,终于可以做山寨PCB了,期待Hust-rail runner的诞生~
今天主要是跟随Adams教授所带的小组,此前与Adams教授交流过,他希望开头这几天我和郭朝科还是作为Observers,到各个小组讨论他们的想法和计划,到后期实物制作的阶段再帮助他们解决一些技术层面的问题。在和各小组讨论的同时,自己也在网络上搜索了不少与他们项目相关的资料,包括往届学生的作品,其中关于Frisbee Thrower(飞盘投手)项目,往届学生的一些想法让自己很是汗颜。
Frisbee Thrower的规则很简单,设计出来一个机械投手,能够固定的朝一个方向投掷出飞盘,飞出距离不能小于25feet。在一开始接触这个项目的时候,习惯性的就假设需要一个提供飞盘较大初速的装置,类似气动等能瞬间提供较大加速度的动力装置。但是在08年夏令营中,一个小组仅使用一个长木棍和一个电机(如下图),运用同轴转动同一半径方向各点线速度不同的运动规律,给飞盘加速,在调试完成后,使飞盘能飞出惊人的225 feet 远的距离。

图6 2008年夏令营一个小组设计的Frisbee Thrower方案
从这个事例中给自己的思考是,作为一个机械设计专业的学生来说,自己在遇到机械设计需要的时候,应该花更多的时间去了解设计需求,很快能想到一个设计思路固然很好,但是更重要的是要尽可能找到最优的解决方案,将设计方案在满足设计要求和设计需求的前提下尽可能的简单化,也许能得到意想不到的效果。
今天,Python项目开始授课。我们领略了一把美国大学里编程相关课程的教学方法。Python是一门极其实用的编程课,Anderson教授在讲的时候,就很注重实践,他本人也一边编程一边讲过程。回想起国内的编程课程,教师很少现场编程,而是“站而论道”,或者一页一页的播放幻灯片,不论方法好坏,但是对于这种偏实践的课程,学生对前者的接收度要高很多。课堂上常见的场景就是教授一边敲代码一边讲解,学生则跟着敲代码,这样的学习速度非常快。Python项目的分组还没有确定,这几天都是授课阶段,我们作为助教,也跟着在一起编程。等到分组确定后,我们将分别指导1-2个组完成他们的Python游戏设计。