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

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

所属微专业:

图片
课程概述

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

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

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

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


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

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

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

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

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

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

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

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

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

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

可以这么进行概括:

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

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

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

证书要求

本课程不提供证书服务。

预备知识

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

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

授课大纲

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

第一系列:基本技能训练

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

第二系列:专业技能训练

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

第三系列:实战技能训练

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


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


2016年10月10日第三系列第一次开课


实战技能训练


一、起步(必修


第1单元 航行准备


1.1 互联网应用开发须知

介绍互联网应用的基础知识:比如Web Server,URL等

1.2 关于HTTP,你知道多少?

介绍HTTP协议

1.3 工欲善其事,必先利其器

介绍Chrome开发者工具,Fiddler和HttpClient组件

1.4 跨平台的web开发框架——ASP.NET core

1.5 百闻不如一见——与ASP.NET core的亲切会面


二、扬帆起航——ASP.NET core技术精要


第2单元 ASP.NET core(上)

2.1 移动互联应用时代的基本装备——Web API初识

2.2 协作的威力——中间件与HTTP请求处理管线

2.3 不在其位,不谋其政——依赖注入与IoC容器

2.4 你从哪里来?我的朋友——路由系统

2.5 摸透脾气,才能应对自如——学会编写Action方法

2.6 佛靠金装,人要衣装——View的设计技巧


第3单元 ASP.NET core(下)

3.1 把信送给加西亚——信息的传送方式

3.2 小心无大错——服务端数据验证

3.3 程序员的基本功训练——实现CRUD

3.4 军民团结鱼水情——C#与JavaScript的集成与协作


三、火热的领域——前端开发


第4单元 Web前端开发之AngularJS篇

4.1 开发团队中的主力成员——异步编程中的$q

4.2 多与老板沟通很重要——使用$http访问Web Server

4.3 强势的在野党——UIRouter使用基础

4.4 将问题扼杀于萌芽状态——客户端数据验证


第5单元 移动端开发与OOAD理论基础

5.1 移动互联时代的网页设计方式——响应式设计

5.2 一招鲜,吃遍天——Ionic开发初步

5.3 论本人继承王位之必要性——从结构化到面向对象

5.4 程序员进阶架构师修炼手册——面向对象分析与设计基础


四、 DDD与软件架构设计实践


第6单元 领域驱动与软件架构设计

6.1 要做正确的事——领域驱动之程序员视角

6.2 认识这个世界并不容易——构建领域模型

6.3 正确地做事——分层架构软件系统设计

6.4 别说废话,给我点干货——分层架构设计实践


第7单元:艺多不压身——实用技术拓展

7.1 NoSQL数据库中的佼佼者——认识MongoDB

7.2 老虎不发威,当我是病猫?——MongoDB之C#驱动概述

7.3 老虎是如何捕食的——MongoDB CRUD之C#编程手册

7.4 咱也搭个网盘玩玩——使用GridFS构建分布式文件系统

7.5 咱家新装防盗门——ASP.NET core安全基础

参考资料

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

1.《UML和模式应用(第3版)》Craig Larman

2.《领域驱动设计:软件核心复杂性应对之道》 Eric Evans

3.《实现领域驱动设计》Vaughn Vernon

 

有些与本课程相关的一些学习资料(比如教师针对某个技术点展开写一系列博客文章,或者是一些外部资源链接及下载等等),可能不适合放到网易云课堂,它们将在教师个人网站:http://www.jinxuliang.com 上提供。有些示例的数据需要从教师网站上实时下载,有些实例本身就直接部署在教师网站上,学生可以通过浏览器直接运行之。

常见问题
  • 这门课怎么写作业,怎么考核?

这门课几乎没有什么其他课程常见的单选、多选之类的标准化题型,因为我们的目标是写出真实可用的软件,因此,多数作业都要求学生编程,或者针对某个具体开发场景设计解决方案并进行讨论。

结课时,每个学生都要求写一个功能相对完备的程序,同时配上相应的开发文档。

分数主要是由学生互评确定,必要时由教师进行审核和调整。

  • 这门课程使用哪种编程语言,有哪些软硬件要求?

面向对象编程语言有多种,本课程主要使用Java/C#,在Web开发技术部分,我们还使用JavaScript。

软件开发环境使用Visual Studio 2015 和Eclipse 4.4,操作系统使用Windows 10,你应该有一个4.0以上版本的Android手机或平板,以便测试和运行手机应用。

  • 我需要做哪些准备

这门课程要求学生具备使用Java/C#/JavaScript三种编程语言写程序的能力。

如果你不会Java,则在学习之前就需要先学学Java了,你可以通过学习Java书籍,观看教学视频等方式掌握Java,另外,你也可以访问授课教师的个人在线教育网站http://www.jinxuliang.com,直接使用北京理工大学计算机学院的Java课件及实例进行学习,这门课程的授课教师与本课程是同一位。

本课程使用C#开发服务端程序,如果你不会C#编程,请访问教学网站上的《我的第一门编程课(C#版)》,包容约一百多个短视频,引导你系统地掌握C#编程语言,具备开发.NET应用的基本技能。

对于JavaScript,本课程第二系列中有专门的一个单元介绍JavaScript,入门足够,你也可以通过阅读技术书籍,其他人录制的视频提前学习,JavaScript的学习资源极多。

授课老师
金旭亮

金旭亮

所属微专业

所属系列课程

分享