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

面向对象软件开发实践之专业技能训练

所属微专业:

图片
课程概述

提示:自2019年起,本课程由网易云课堂管理人员负责每年创建新学期,每学期持续一年,采用随到随学的模式,仍然免费。

任课教师不再提供教学、作业批改的服务。

本课程除偏理论部分外,所介绍部分技术己经陈旧,任课教师在自己的教学网站上提供了更新服务,提供最新的开发技术自学资源,包容.NET Core 3.1,Android 10,Kotlin等在线课程,访问以下链接了解详情:

金老师的计算机技术自学网站


======================================================

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

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

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

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

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

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

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

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

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

可以这么进行概括:

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

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

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

证书要求

本课程不提供证书服务。

预备知识

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

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

授课大纲

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

第一系列:基本技能训练

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

第二系列:专业技能训练

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

第三系列:实战技能训练

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


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


2016年10月10日第二次开课,新添与更新部分内容


《面向对象软件开发实践》之《专业技能训练》


一、让一切并行起来

1.1  “甜蜜的”语法糖
1.2  神奇的λ——C#中的Lambda
1.3  TPL:基于任务的并行计算框架
1.4  异步的威力——.NET异步开发特性

【选修】Java 8中的Lambda

   

二、伟大的技术革新——LINQ
2.1  扫清LINQ学习技术障碍
2.2  “从历史走向未来”——LINQ进化史
2.3  七巧板的新玩法——标准集合查询方法
2.4  揭开LINQ的神秘面纱——LINQ底层架构及实现原理
2.5  熟能生巧——编写LINQ查询
2.6  并行的威力——Parallel LINQ
2.7  化繁为简——使用LINQ处理 XML数据
【选修】Java 8的Stream API

【选修】数据的Json序列化


三、数据为王——数据存取技术精讲
3.1  数据的存储中心——数据库的基础知识(SQL Server)
3.2  老当益壮——使用ADO.NET访问数据库
3.3  乔装打扮话数据——数据绑定技术应用实例
3.4  从诸侯到天子——Entity Framework发家史
【选修】Android数据存取技术概述

四、天空任鸟飞——走向互联网
4.1  互联网那些事儿——Internet程序设计基础
4.2  枝繁叶茂——HTML5、CSS3概述
4.3  史上被骂最多的编程语言——JavaScript语言精粹
4.5  人人都能当网页设计师——使用Bootstrap设计网页
4.6  Web前端设计之核武器——AngularJS





参考资料

本课程所涉及到的主要参考书如下:

1.《.NET 4.0面向对象编程漫谈》基础篇和应用篇 金旭亮

2.《重构:改善既有代码的设计 》Martin Fowler

3.《设计模式:可复用面向对象软件的基础》Erich Gamma等


有些与本课程相关的一些学习资料(比如教师针对某个技术点展开写一系列博客文章,或者是一些外部资源链接及下载等等),可能不适合放到网易云课堂,它们将在教师个人网站: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,则在学习之前就需要先学学Java了,你可以通过学习Java书籍,观看教学视频等方式掌握Java,另外,你也可以访问授课教师的个人在线教育网站http://www.jinxuliang.com,直接使用北京理工大学计算机学院的Java课件及实例进行学习,这门课程的授课教师与本课程是同一位。

对于C#,我在个人教学网站上录制了《我的第一门编程课(C#版)》,包容约120个短视频,循序渐进地系统地介绍了C#编程与.NET Framework技术基础,足以帮助你成长为一名C#软件开发者,对于己有经验的开发者,可以使用这个网上课程快速地把握C#编程技术。

最后一个是JavaScript,作为全世界使用者最多的编程语言,网上有数之不尽的技术资源可供学习。本课程第二系列中有一个单元向你介绍JavaScript编程精要,进而介绍当前最流行的Web前端开发框架,AngularJS,然后在第三系列中你将使用AngularJS开发移动互联应用前端。虽然由于课时有限,本课程不能系统地全面地介绍JavaScript,但所讲授的内容都是精选的,能为你学习与掌握JavaScript和AngularJS提供强大的助力。

授课老师
金旭亮

金旭亮

所属微专业

所属系列课程

分享