当今时代,面向对象己经成为主流的软件开发技术,绝大多数与人们日常生活息息相关的软件系统,都是采用面向对象技术构建出来的。因此,掌握面向对象的软件系统分析与设计方法,精通至少一种面向对象编程语言,深入把握一种面向对象软件运行平台,掌握面向对象软件开发的各种技术及工具,己经成为对这一时代软件开发者所必须拥有的职业技能。
计算机专业高年级学生(大三下至大四),基本上已经学完计算机专业的骨干课程,比如《数据结构与算法》、《操作系统》、《面向对象程序设计》、《软件工程》等,这些课程都非常有用,但它们要不偏重于理论,要不偏重于编程语言的语法等细节,学生缺少一门这样的课,这门课能告诉他们:一个有用的软件到底是如何诞生的,我们在学校里学的操作系统、数据结构等专业课程到底在开发中是怎样应用的……
另一方面,高年级本科生以及研究生面临着就业的考验,如果一个学生只是学了一脑子的理论知识,对当前主流的软件开发技术知之甚少,缺少软件开发经验,那么他的就业可能就会比较困难。
出于以上两点考虑,设计并推出了《面向对象软件开发实践》这门计算机专业课程。
这门课教学内容围绕着“一个真正有用的软件是怎样开发出来的”这样一个主题而展开,介绍人们在实际软件开发过程中 “真正”使用的开发技术、系统设计原则、软件开发流程等。这是一门综合性的实践课程,涉及到多门计算机专业课程所介绍的知识。
这门课力图帮助学生建立一种“工程师”思维方式,培养出实实在在的技能。
从我在北京理工大学近十年讲授此课程的经验,那些认真花时间学习了这门课程的学生都反映收获很大,不仅了解了许多当前业界所使用的主流开发工具和软件技术,还切实地把自己的开发技能提升了一个台阶,并且能对就业有直接的帮助。一些研究生还反馈他们能将在此课程上所学到的技术、思想和方法应用于各自领域的科研实践中,收获不少。
这门课程的特点是信息量大,没有一本统一的教材,只有指定的一批参考书和互联网资源。这也是由本课程的特点所决定的,因为涉及到的内容太广,没有一本教材能涵盖它们,同时,本课程所介绍的技术都是当前主流的开发技术,本身也更新很快。
那么,这门课程的教学具体是如何开展的?
可以这么进行概括:
以教学PPT为主线,以大量“活的”可运行的实例为手段,通过剖析当前一些主流的优秀软件平台、技术和系统,向学生展示出面向对象软件系统的内部构造、开发流程和技术实现,要求学生完成“认识-->理解-->模仿-->应用”这样一个流程,最终得到一个真正有用的软件作品或示例系统,在这个过程中培养出真实的软件开发职业技能。
需要指出的是:虽然本课程中大量用到软件工程的理论成果。但这门课重点放在培养学生在软件开发活动中的“单兵作战”技能之上,因此与重在培养“团队开发与协作能力”的《软件工程》有着较大的区别。如果学生在学过这门课程之后再重温《软件工程》的相关理论,会有更深的感悟。
总而言之,本课程是一门引导性的课程,帮助学生将所有己经学过的各种专业课程“整合起来”,逐步构建出一个比较完整的知识体系,通过一定量的开发实践,并培养出能满足软件开发工作需求的职业技能。
证书规则将在开课前发布。
必须学过:《C#/Java面向对象程序设计》、《操作系统原理》、《数据结构》
如果还学过以下课程则更好:《软件工程》、《数据库基础》、《计算机网络》
这门课程将分为三个循序渐进的子系列课程:
第一系列:基本技能训练
主要介绍面向对象开发的基础技术,培养面向对象编程基础技能。
第二系列:专业技能训练
主要介绍业界使用的各种主流技术,培养能胜任软件开发工作所需的职业技能。
第三系列:实战技能训练
偏重于系统分析与设计,介绍软件系统的典型架构,培养软件系统的分析与设计能力。
整个课程分为必修与选修两个部分。学生可依据自己实际情况确定选修内容,必修部分则要求所有学生必须学习。
2015年2月第一次开课结束,第二次开课时间待定:
5.5 从OOP到CBD再到互联网—— 一个计算器软件的演化过程
===============================================
本课程第二系列《专业技能训练》于2015年3月1日开课。
请点击以下链接访问课程主页以了解后两个系列所讲授的具体内容。
http://mooc.study.163.com/course/BIT-1000013000#/info
本课程所涉及到的主要参考书如下:
1.《.NET 4.0面向对象编程漫谈》基础篇和应用篇 金旭亮
2.《重构:改善既有代码的设计 》Martin Fowler
3.《设计模式:可复用面向对象软件的基础》Erich Gamma等
4.《敏捷软件开发(原则模式与实践)》Robert C. Martin
5.《UML和模式应用(第3版)》Craig Larman
有些与本课程相关的一些学习资料(比如教师针对某个技术点展开写一系列博客文章,或者是一些外部资源链接及下载等等),可能不适合放到网易云课堂,它们将在教师个人网站:http://www.jinxuliang.com 上提供。有些示例的数据需要从教师网站上实时下载,有些实例本身就直接部署在教师网站上,学生可以通过浏览器直接运行之。
这门课怎么写作业,怎么考核?
这门课几乎没有什么其他课程常见的单选、多选之类的标准化题型,因为我们的目标是写出真实可用的软件,因此,多数作业都要求学生编程,或者针对某个具体开发场景设计解决方案并进行讨论。
结课时,每个学生都要求写一个功能相对完备的程序,同时配上相应的开发文档。
分数主要是由学生互评确定,必要时由教师进行审核和调整。
这门课程使用哪种编程语言,有哪些软硬件要求?
面向对象编程语言有多种,本课程主要使用Java/C#,在Web开发技术部分,我们还使用JavaScript。
软件开发环境使用Visual Studio 2013和Eclipse 4.4,操作系统使用Windows 7/8/8.1,你应该有一个4.0以上版本的Android手机或平板,以便测试和运行手机应用。
我需要做哪些准备?
这门课程要求学生具备使用Java/C#/JavaScript三种编程语言写程序的能力,考虑到几乎所有的大学都己经开设了Java课程,几乎所有学生都学过,因此,本课程提供了C#和JavaScript的快速入门视频及学习资料,以帮助那些不熟悉这两种编程语言的同学扫清学习障碍。在学习过程中,你需要花费比其他同学更多的时间,先学会C#和JavaScript,然后才做作业。
如果你不会Java,则在学习之前就需要先学学Java了,你可以通过学习Java书籍,观看教学视频等方式掌握Java,另外,你也可以访问授课教师的个人在线教育网站http://www.jinxuliang.com,直接使用北京理工大学计算机学院的Java课件及实例进行学习,这门课程的授课教师与本课程是同一位。