北京理工大学 北京理工大学

面向对象软件开发实践之基本技能训练

所属微专业:

图片
课程概述

当今时代,面向对象己经成为主流的软件开发技术,绝大多数与人们日常生活息息相关的软件系统,都是采用面向对象技术构建出来的。因此,掌握面向对象的软件系统分析与设计方法,精通至少一种面向对象编程语言,深入把握一种面向对象软件运行平台,掌握面向对象软件开发的各种技术及工具,己经成为对这一时代软件开发者所必须拥有的职业技能。

计算机专业高年级学生(大三下至大四),基本上已经学完计算机专业的骨干课程,比如《数据结构与算法》、《操作系统》、《面向对象程序设计》、《软件工程》等,这些课程都非常有用,但它们要不偏重于理论,要不偏重于编程语言的语法等细节,学生缺少一门这样的课,这门课能告诉他们:一个有用的软件到底是如何诞生的我们在学校里学的操作系统、数据结构等专业课程到底在开发中是怎样应用的……

另一方面,高年级本科生以及研究生面临着就业的考验,如果一个学生只是学了一脑子的理论知识,对当前主流的软件开发技术知之甚少,缺少软件开发经验,那么他的就业可能就会比较困难。

出于以上两点考虑,设计并推出了《面向对象软件开发实践》这门计算机专业课程。

这门课教学内容围绕着“一个真正有用的软件是怎样开发出来的”这样一个主题而展开,介绍人们在实际软件开发过程中 “真正”使用的开发技术、系统设计原则、软件开发流程等。这是一门综合性的实践课程,涉及到多门计算机专业课程所介绍的知识。

这门课力图帮助学生建立一种“工程师”思维方式,培养出实实在在的技能。

从我在北京理工大学近十年讲授此课程的经验,那些认真花时间学习了这门课程的学生都反映收获很大,不仅了解了许多当前业界所使用的主流开发工具和软件技术,还切实地把自己的开发技能提升了一个台阶,并且能对就业有直接的帮助。一些研究生还反馈他们能将在此课程上所学到的技术、思想和方法应用于各自领域的科研实践中,收获不少。

这门课程的特点是信息量大,没有一本统一的教材,只有指定的一批参考书和互联网资源。这也是由本课程的特点所决定的,因为涉及到的内容太广,没有一本教材能涵盖它们,同时,本课程所介绍的技术都是当前主流的开发技术,本身也更新很快。

那么,这门课程的教学具体是如何开展的?

可以这么进行概括:

以教学PPT为主线,以大量“活的”可运行的实例为手段,通过剖析当前一些主流的优秀软件平台、技术和系统,向学生展示出面向对象软件系统的内部构造、开发流程和技术实现,要求学生完成“认识-->理解-->模仿-->应用”这样一个流程,最终得到一个真正有用的软件作品或示例系统,在这个过程中培养出真实的软件开发职业技能。

需要指出的是:虽然本课程中大量用到软件工程的理论成果。但这门课重点放在培养学生在软件开发活动中的“单兵作战”技能之上,因此与重在培养“团队开发与协作能力”的《软件工程》有着较大的区别。如果学生在学过这门课程之后再重温《软件工程》的相关理论,会有更深的感悟。

总而言之,本课程是一门引导性的课程,帮助学生将所有己经学过的各种专业课程“整合起来”,逐步构建出一个比较完整的知识体系,通过一定量的开发实践,并培养出能满足软件开发工作需求的职业技能。



证书要求

证书规则将在开课前发布。

预备知识

必须学过:《C#/Java面向对象程序设计》、《操作系统原理》、《数据结构》

如果还学过以下课程则更好:《软件工程》、《数据库基础》、《计算机网络》

授课大纲

这门课程将分为三个循序渐进的子系列课程:

第一系列:基本技能训练

主要介绍面向对象开发的基础技术,培养面向对象编程基础技能。

第二系列:专业技能训练

主要介绍业界使用的各种主流技术,培养能胜任软件开发工作所需的职业技能。

第三系列:实战技能训练

偏重于系统分析与设计,介绍软件系统的典型架构,培养软件系统的分析与设计能力。


整个课程分为必修与选修两个部分。学生可依据自己实际情况确定选修内容,必修部分则要求所有学生必须学习。


2015年2月第一次开课结束,第二次开课时间待定:


《面向对象软件开发实践》之“基本技能训练”

一、千里之行,始于足下
1.1 欲谋其事,先正其意——课程概述与学习指南
1.2 工欲善其事,必先利其器——搭建学习与开发环境
1.3 温故而知新——重新认识面向对象
【选修】使用C#开发桌面应用——WinForm入门

二、练武不练功,到老一场空
2.1 万丈高楼平地起——把握面向对象开发基础技能
2.2 面向对象真实软件技术剖析——.NET 委托与事件揭秘
2.3 面向对象思想助推技术学习——聊聊Android开发中的Activity

三、拳不离手,曲不离口
3.1 重温儿时搭积木的乐趣——组件化开发
3.2 大牛 vs 菜鸟——重构与代码质量
3.3 好钢是如何炼出来的——单元测试与测试驱动开发
【选修】Android组件化开发技术基础

四、不识庐山真面目,只缘身在此山中
4.1 快点,再快点——多线程开发技术基础
4.2 无网不胜——网络开发技术基础
【选修】举一反三——掌握Android多线程开发基础技术
【选修】请遵守交通规则——线程同步
【选修】这里的世界很精彩——Socket网络开发技术进阶

五、山重水复疑无路,柳暗花明又一村
5.1 软件开发之道,简单易懂——聊聊面向对象软件设计基本原则
5.2 万丈高台,起于垒土——类设计指南
5.3 软件开发之内功心法——SOLID设计原则
5.4 软件开发之九阴真经——设计模式及应用选讲

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课件及实例进行学习,这门课程的授课教师与本课程是同一位。



授课老师
金旭亮

金旭亮

所属微专业

所属系列课程

分享