北京理工大学计算机学院教师 金旭亮
对高校计算机教育脱离实际的批评由来己久,似乎大学毕业生找不着工作,都是现有教学体制与学校的问题。然而作为一名高校教师,为学生准备了跟上技术前进步伐,直接为就业服务的课程,其实情又是怎么样的呢?
这篇文章的后面,详细列出了我为这门课所准备的教学模块,包容我所开发的相关教学示例的截图。这里头介绍的技术与知识不算陈旧落伍吧?也不是严重脱离实际吧?
让我比较困惑的是,这门在我看来很有用很现实的专业选修课,居然到了难以为继的境界,教务处规定选课不足15人的课将停开,而这门课就位于这条危险线上。我教学水准真的差到这个份上?
其实这门课开不开无所谓,于我并没有什么损失,只是很有些奇怪:为什么现在的学生不愿学软件开发技术?仅因为这门课难和累所以不学?还是觉得成为一名程序员会被人称为“码农“,看不起?
当局者迷,可有高人解惑?
===========================================================================
《面向对象方法与技术》
说明:以下为本课程可选择之教学模块列表,远超规定的上课学时,可依据实际情况进行剪裁。
委托构建的技术大厦
• 委托技术内幕
• .NET事件内部机理
• 如何自定义事件
• Lambda表达式
• 扩展方法与LINQ toObject
实例:构建文件监控系统
(1)使用FileSystem组件监控指定文件夹
(2)向指定文件夹上传文本文件,程序自动地将其内容加入到数据库中
插件系统开发
• 程序集内部结构
• 反射技术基础
• 实例分析:如何基于反射直接构建插件系统
• 基于MEF框架开发插件式系统
(1)桌面WPF应用的插件
(2)ASP.NET MVC4的插件系统
开发高性能软件系统
• 多线程开发基础
• 基于委托的异步调用
• 线程同步方法
• 拥有UI界面的多线程应用
• NET 4.0并行计算组件
• IIS与ASP.NET Web应用的线程模型
实例:
大文件多线程查找
Android开发平台概述
Activity编程基础
界面布局与常见界面元素
多线程
文件与数据存取
网络功能
• 引例:
解决困惑:为何在信息系统开发中要使用面向对象方法?
• 明确一些开发术语,具备必要的背景理论知识:
(1)何谓OOA、OOD、OOP?
(2)采用面向对象方法开发软件的整个开发过程是什么样的?
• 什么是好的代码,什么是差的代码?
• 如何使用重构提升代码质量?
(1)重构的基本原则
(2)重构的基本方法
(3)使用Visual Studio提供的重构工具进行重构实践
动手实践
•使用Code Review发现缺陷,进行重构
(1)典型问题代码Code Review
(2)讨论如何重构这些差的代码
• 何谓单元测试?
• 何谓数据驱动的测试
• 测试驱动开发是怎样进行的?
动手实践
• 学会使用VisualStudio编写单元测试
• 学会使用VisualStudio编写数据驱动的测试
• 分布式版本管理系统Git简介,使用GitHub
• 使用MicrosoftTeam Foundation Server管理C#和Java项目
• 什么是设计模式?
• 典型的设计模式介绍
Factory、Singleton、Unit Of Work、Repository……
一个工具软件的演化过程
(1)数据结构与算法的面向对象实现
(2)用户体验友好性的考虑
(3)实施组件化
(4)在Web中重用组件
(5)移植到手机中:
(1)EF支持的几种开发方式
(2)使用EF完成CRUD
(3)处理并发冲突
(4)绕开EF,直接向数据库发送命令
(5)在数据存取层中使用EF
• 数据绑定
(1)算法及数据结构
(2)技术选型
(3)组件化分割
(4)分层的支持演化的架构
(6)使用TFS和GIT进行版本管理
网络编程中的IP地址
检测网络连通性
Socket初步
Socket开发中的TCP消息缓冲区
UDP编程
Socket实例分析
(1)网络文件服务器
(2)基于UDP开发的网络幻灯片
手机端:
PC端:
WCF概述
提供与访问WCF服务
异常处理
并发与实例管理
数据协定
消息交换模式
会话与状态保存
数据传播方式与流
事务处理
实例:
(1)基于WCF流模式构建的文件服务器
WPF桌面客户端
MSMQ基础
基于NServiceBus开发单向、双向、发布/订阅的分布式应用
• 开发ASP.NET MVC应用必须了解的HTTP协议知识:
HTTP数据包格式:Header与Body
HTTP请求与响应格式
HTTP状态码
MIME与数据编码
HTTP认证流程
• Web前端网页设计
新加的HTML5标签,CSS页面设计基本原理
• 学会使用浏览器所提供的开发者工具
• 快速掌握JavaScript编程精华
函数、对象、原型、闭包
• 常用JavaScript库:
jQuery、jQuery Validation、knockoutjs等
• 认识ASP.NET MVC
• ASP.NET MVC技术框架构成
• 了解VisualStudio生成的MVC项目结构
• 信息的传送方式
• 视图编写
• URL与路由
• 异常处理
• 数据验证
• 分部视图、ChildAction和Area
• 权限管理
(1)理解ASP.NET MVC的身份验证与授权机制
(2)如何定制ASP.NET MVC身份验证与授权机制的底层组件
• ASP.NET MVC的Bundle机制
• 使用jQuery实现AJAX
• 使用缓存
使用Web Api构建RESTful服务
使用jQuery Mobile构建支持手机浏览器的HTML5网页
使用手机上传图片,集成Android本地应用与Web页面,与PC用户共享图片资源
• 在独立的类库项目中封装数据存取层
• 设计独立于底层数据库类型的数据存取层
• 如何使用EF高效地实现CRUD
• 在数据存取层开发中进行单元测试
• 如何隔离底层数据库变化对整个应用的影响
• 如何应对多变的业务处理逻辑
• 使用插件动态修改业务逻辑
将新的业务逻辑封装为插件
Web应用监控插件文件夹,当发现有新插件加入时,自动使用MEF装入插件。
服务层设计
• 为什么要加入服务层
• 多种服务层对外接口:
本应用内部使用的接口
与外部系统进行数据交换的接口
供手机等智能移动设备应用访问的接口
“京东商城”电子商务网站的OOAD分析与设计