面向对象设计与构造是北京航空航天大学计算机学院的专业核心课程,共64学时,其中理论授课为32学时、实验为16学时、翻转课堂研讨为16学时。三部分共同围绕课程知识体系,采取问题导向的方式来开展教学,其中问题导向所强调的问题主要来自于同学们应用课程讲授的方法和技术来完成作业项目训练和实验中遇到的难题、摸索的经验和可以延伸讨论的技术点。本课程涉及的知识点多,跨越基础知识、技术设计和应用拓展三个层面,在对知识体系的系统性梳理基础上,通过线上自学和线下课堂相结合来讲授和引导学习。
理论课教学内容按照单元来组织,四个单元的主题分别聚焦于层次化设计、线程安全设计、规格化设计和模型化设计,每个单元安排3次理论讲解、2次实验、2次翻转课堂研讨和1次单元总结分析。每次理论讲解基本围绕一个知识块展开,安排有针对性的作业训练;在单元总结部分把3次授课的知识块进行串接,并把3次作业、2次实验和2次翻转课堂中讨论关注的问题进行总结分析。
在翻转课堂讨论环节,本课程同样突出问题导向,即围绕作业训练和实验中遇到的问题和摸索的经验,采取同学们自主安排研讨主题和课程组出题引导相结合的方式来开展。每个报告一般控制在半小时以内,同学上讲台为全班同学讲解和分享,同学们可以提问,老师进行点评。这些研讨分享和积极参与提问等都会纳入最终的课程考核环节。
除了知识点讲授和学习的线上线下混合,本课程通过部署于云端的在线训练平台来支撑课程的作业训练和实验,使得同学们可以自主安排时间,在线上完成实践训练任务。这种在线训练模式使得课程组可以及时掌握同学们的训练完成情况和完成质量,基于平台所收集的学习行为数据和结果数据,以可控方式来培养同学们的面向对象软件开发能力。综上所述,《面向对象设计与构造》是一门在知识点学习和实践训练方面的线上线下混合课程,突出问题导向的自主线上学习和翻转课堂研讨。
本课程教学目标定位在从技术构造及应用角度来培养本科生的面向对象软件能力,经过多年的建设已经形成了内容精深、训练富有挑战、研讨活跃和过程严格的风格,多次在全国性的教学研讨会上报告和分享建设经验,并两次获得全国性的教学比赛奖励,还连续两次在教育部新工科联盟组织下进行全国性的暑期师资培训,效果显著。
在课程建设过程中,我们一直注重和美国MIT的《软件构造》课程(Software Construction,6.031)进行对标分析。本课程注重调研国内外诸多课程,并博采众长。需要指出的是,虽然都在规格化设计方面进行了训练,本课程选择了JML语言进行训练,而MIT课程则仍然选用基于自然语言和形式语言混杂的方式来训练。其差异是,使用JML语言所写的规格可以被自动解析和验证,这使得我们可以把规格化设计的训练贯彻的更加深入。对比而言,本课程在评测方式、评测深度和成绩评定三个方面发展出了我们自己的特色。