选课类别:未知 | 教学类型:未知 |
课程类别:本科计划内课程 | 开课单位:科技传播系 |
课程层次:学科群基础课 | 学分:3.0 |
更新时间:9-1-2015 感谢杨俊朋老师提供
这门课主要是让传播学专业的学生具备一定的信息技术基础,能够深入了解管理信息系统,从而满足将来的工作需要,主要包括数据库技术,面向对象编程、系统开发等三块内容。
课时为40(理论)+20(实验),课堂教学以讲授为主,因为是小班,有问题可以随时提问,也可以利用课间或者课外时间互动。
实验课是上机,会做一些演示和辅导,主要是学生自己上机练习,有问题随时提问,有大作业,就是做一个小的管理信息系统。
习题每次我批改后,会在下一次上课前做一些讲解。期末结束前,会有一次集中答疑。
没有讨论课,没有答辩演讲,没有期中考试,没有助教。
60%(考试)+25%(上机)+15%(平时分,包括点名,作业)
面向对象:科技传播与科技政策系本科生
预修课程:CS01001计算机文化基础、CS01002 C语言程序设计、CS01003 数据结构与数据库
一、教学目标和基本要求
通过本课程的学习,了解和掌握管理信息系统的基本概念、结构和功能;了解和掌握管理信息系统开发与应用的技术基础;了解和掌握管理信息系统的开发方法;了解和掌握管理信息系统的系统分析和设计的理论和方法;了解和掌握管理信息系统实施的具体过程和主要方法; 从而能够通过掌握的相关知识和技术,进行简单的管理信息系统开发和管理。
二、课程简介
《管理信息系统》是一门综合了管理科学、信息科学、系统科学、行为科学、计算机科学和通讯技术等多学科的有鲜明特色的边缘性学科。它运用经济管理理论、信息理论、系统理论、计算机科学等学科的概念和方法,融合提炼组成一套新的体系,它既具有较深和较宽的理论基础,又是一门实践性很强的学科。该课程旨在培养学生应用信息技术进行管理信息处理和管理信息系统开发及组织实施的能力。
三、教学重点、难点
1、数据库技术与数据库系统
2、面向对象编程思想
3、管理信息系统开发方法
四、教材、参考书
´教材:
´数据库系统原理及应用教程(第三版) 苗雪兰 机械工业出版社 2011
´ Python宝典 杨佩璐,宋强 电子工业出版社 2014
´参考书:
´Python编程实践 (美)Jennifer Campbell 等著 唐学韬等译 2012
´ Python3 面向对象编程 (加)Dusty Phillips著,肖鹏等译 电子工业出版社
´ Python编程 Mark Lutz著 邹晓 瞿乔 任发科 等译
五、课程章节、学时分配
´第一章 数据库系统概述(6学时)
´ 1、数据库的特点及相关概念
´ 2、数据库技术及发展
´ 3、数据库系统的结构
´ 4、概念模型及其表示
´ 5、常见的三种数据模型
´ 6、关系数据库
´第二章 关系数据库语言SQL(6学时)
´ 1、SQL的特点
´ 2、SQL的数据查询功能
´ 3、SQL的数据定义功能
´ 4、SQL的数据更新功能
´ 5、嵌入式SQL
´ 6、SQL的数据控制功能
´第三章 SQL Server关系数据库管理系统(3学时)
´ 1、SQL Server 2000系统结构
´ 2、SQL Server 2000管理功能
´ 3、Transact-SQL功能及实例
´ 4、SQL Server 2000数据库操作工具及其使用
´第四章 数据库保护及SQL Server的数据库保护技术 (6学时)
´ 1、数据库的安全性及SQL Server的安全管理
´ 2、数据库的完整性及SQL Server的完整性控制
´ 3、数据库的并发控制及SQL Server的并发控制机制
´ 4、数据库恢复技术与SQL Server的数据恢复机制
´第五章 Python语言快速入门 (3学时)
´ 1、python简介
´ 2、python安装环境配置
´ 3、Python程序设计实例
´ 4、Python语言元素(程序框架、注释、常量、变量、表达式、输入输出、赋值等)
´第六章Python语言语法详解(3学时)
´ 1、类型及应用
´ 2、程序控制结构
´ 3、函数及递归
´ 4、文件及综合
´第七章面向对象编程的Python(3学时)
´1、面向对象编程概述
´2、在Python中定义和使用类
´3、类的属性和方法
´4、类的继承
´5、在类中重载方法和运算符
´6、在模块中定义类
´第八章图形用户界面(GUI)(3学时)
´1、使用tkinter编写GUI
´第九章Python与数据库(3学时)
´1、连接Access数据库
´2、使用ODBC连接Access数据库
´3、使用DAO连接Access数据库
´4、使用ADO连接Access数据库
´5、使用MySQL数据库
´6、使用SQL Server数据库
´第十章 MIS系统开发方法简介 3课时
´1、结构化开发方法
´2、原型法
´3、面向对象的开发方法
´SQL SERVER
´易用性,图形化用户界面,使系统管理和数据库管理更加直观、简单。
´适合分布式组织的可伸缩性
´用于决策支持的数据仓库功能
´与许多其他服务器软件紧密关联的集成性
´良好的性价比
Python
´Python是免费的自由软件
´Python 是跨平台的
´Python功能强大(系统编程,科学计算,快速原型,WEB编程)
´Python是可扩展的(提供了扩展接口,可使用C/C++为python编写扩展)
´Python易学易用(语法简单,数据类型概念模糊,自动分配回收内存,内置对象与方法功能强大)
杨俊朋老师的《管理信息系统》课程主要涵盖了数据库理论和概念模型等内容。部分学生认为教学过于理论化,缺乏实际操作,使得课程显得“枯燥、抽象、多杂乱”。尤其是在初学阶段,理论过多可能降低学习兴趣。Jenny42提到,“一开始就动手写代码,进行实际的操作”可能更有效、更有趣。她建议,课程应结合更多实例和实际操作,类似Codecademy的SQL教程,这样可以减小学习曲线的坡度,增加趣味性。
作业主要以概念题为主,这让部分学生感到类似于“答政治题,翻书抄答案”。Jenny42强调,当前作业和考试内容“掌握一堆概念而代码能力不行的码农是找不到工作的”,希望题目可以更实用而非单纯的考核概念。杨老师回应道,作业和考试中的理论部分是为了帮助学生了解数据库的基础结构和原理,而不仅仅是动手操作。同时,后续课程会安排SQL语句教学和具体的数据库系统演示。
杨俊朋老师指出,虽然增加上机作业在评分中的比例有其价值,但存在公平性问题,比如抄袭和代做。因此,当前课程设置仍然注重理论考试,以避免这种情况。然而,这种考试方式也导致了部分学生觉得课程“可以通过背书”来应付。
对于希望实际动手操作、学到更多实用技能的学生来说,这门课程可能会显得过于理论。尽管杨老师强调理论基础的重要性,一部分学生仍希望在课程中看到更多实际案例和操作,增加趣味性和实用性。如果课程能够在注重理论的同时,增加实践环节和实例教学,可能会更好地激发学生兴趣和提高学习效率。
这门课适合想要深入理解数据库理论的同学,但对于期望更多实际操作的同学,可能需要自我补充一些实践课程和教材。同时,学生应做好心理准备,以理论为主的教学模式可能需要更多耐心和自学能力。
时隔7年,今天翻邮件,偶然看到2015年和杨俊鹏老师的邮件通信,觉得颇有意思,分享上来供大家参考。
为什么现在认为这封邮件值得分享出来呢?因为我目前做的工作实际上就和数据相关(Data Engineer, Data Scientist),在工作上要用到 SQL,做网站也要自己设计、维护数据库。
但我真的是一点都不记得我从这门课学到了什么。反而是去年开发PI Review网站之前,我把 Codecademy上面的那门 Learn SQL 学了一遍。
所以,我很认同自己大二的时候的观点,就是大学里的课程,尤其是这种和编程相关的课程,不应该搞得太理论、太晦涩难懂,磨灭学生学习的兴趣。而应该注重实践,注重趣味性,实用性。我对自己大学期间、研究生期间上的很多课程,我对学校专业的培养计划、课程设置,都不满意。过去不满意,现在依旧不让人满意。
------------------- 我的第一封邮件 Sep 12, 2015 -------------------
杨老师您好!
上次课结束后,挺失望的。因为课堂上您一直在讲一堆理论、概念上的东西,我根本听不懂、也听不下去。感觉很枯燥、抽象、多杂乱。
我觉得数据库部分的学习应该一开始就动手写代码,进行实际的操作,在具体实践过程中遇到问题,再回头查询相关的理论。而不是一开始学一堆理论,虚无缥缈的。特别是今天做作业,又翻了翻课本。做作业的时候,都是概念题,而且目前我们对数据库都没有接触,一上来这么多理论,感觉就像答政治题,翻书抄答案。而具体上是什么东西,我不理解,课本上的内容冗长无聊也不想看(国内教材的通病)。
我希望这是一门动手的课程,能够实实在在学会建立、操作数据库,把数据库应用起来。比如我们做的USTC评课社区,我希望学完这门课以后,我能自己导入课程数据,修改数据库结构(目前的课程结构不是很合理),能够自己负责网站的数据库部分。目前是由另外一名计算机学院研二的同学负责,而他经常很忙没时间弄,我想自己来解决。
但是目前,我感觉看不到希望,上次课、课本教材、课后作业,都像是一门概念课、理论课。强调的不是动手,也不是真正掌握数据库技术,而是学一堆模型、理论,而且还脱离了实例,让人觉得就是一堆无聊的文字。之前听学姐讲过,上学期的《计算机网络》课程也是这样,她说“就是要背书”。我觉得如果一门课仅仅是背书,很容易只掌握了概念上的皮毛,而什么都做不来,最后考完试也就把知识忘记了。十分浪费时间。
希望老师能够回答我疑问,之后的课程能够更加强调动手。比如增加上机作业的比例,提高上机在最后成绩中的比例,降低考试成绩的比例,不要让考试变成背多分。另外,我个人觉得,动手实践是最好的学习方式,传统的先学一堆理论、最后再动手的方式,我不是很习惯,感觉边实践边学理论,能够更高效率的把二者结合起来。
我承认上节课我没有好好听讲,我当时在下载SQL Server,还有W3School的SQL教程。我觉得老师第一次课上的很好,就是在介绍这门课的时候,因为你当时结合了很多实际操作,比如打开说到SQL Server的时候打开软件实际操作,说到Python的时候,又给我们看了一款编辑器。这种多举例,多操作,能够看得到的教学方式个人觉得更有趣。接下来的课,是否可以改变一下教学方式?毕竟你课件上、课堂上讲的东西课本上都有,如果学生觉得你讲课很无聊不会听,回去看书的话,课堂也就变的没有意义。变成大家强迫坐在一起,但实际上很少人再听,当然我不知道老师是不是也只是勉强在讲课,双方其实都不想这么做。直接撇开无聊的课本概念,给同学们炫技,拿出实际中老师做的跟数据库相关的工作,说不定同学们会看的更有兴致,继而自己学习自己尝试。
总之,这只是我最近上课的一点想法和反馈。和老师沟通之后,希望能够对课程、对我的学习,都有帮助。
张静宁 | Jenny Zhang
---------------- 我的第二封邮件 Sep 13, 2015 -----------
老师你回的真快= =
2015-09-13 15:49 GMT+08:00 杨俊朋 <jpyang@ustc.edu.cn>:
张静宁:您好!
谢谢你的反馈。但任何事物都会有一个过程,需要耐心的不断前进。
我很难理解,如果对于数据库的整个体系结构都不理解,如何去使用数据库,建立数据库。就拿上一节课来说,我讲到E-R图,这就是建立数据库的一种技巧,从概念模型到关系模型转换,实体集对应一张表,实体集之间的联系,1:1可以转换成一张表,也可以和任何一端实体集所对应的表合并,M:N的联系,必须转换成一张独立的表。分析现实世界,画出E-R图,然后转换成数据库里的表,建立逻辑模式,这些都是实实在在的东西,并不是没有用的理论。
我并不是说这些理论没有用,而是说在最初什么都不知道的时候就接触纯理论 ,会让人没法结合实例,而造成理论高高在上、不能够形象的理解。反而会觉得很枯燥和乏味,然后造成学习门槛很高,一开始就降低学生学习的积极性。
“我很难理解,如果对于数据库的整个体系结构都不理解,如何去使用数据库,建立数据库。” 你说的对,如果对整个体系结构不理解,的确不能使用数据库、真正掌握数据库。但是,在整个体系结构不了解的时候,我们还是可以做一些小事情的。比如建立一个表格,插入一些数据。这些小动作,也许你认为不重要,因为学到后面很自然会学这些。但是我想说的是学习的门槛,学习的趣味性的问题,如果一门课让人觉得很无聊、很难、不知所云,新手很难学好。但是,如果一开始的时候,我们不是直接就拿整个体系结构来说,而是从某些实际例子入手,拿具体的小的切口进去。然后学生就会发现,自己还能做一些小事情,也挺有趣的,然后在慢慢学。
这是两种学习方法,一种是一开始就学习整个体系结构,我觉得这个很难。因为你如果什么都不知道,你去学那整个体系结构,你仍然是有一种我不知道那个具体是什么,我只是听说这一套理论。而一开始从小事做起,慢慢的再扩大,然后最终再了解整个体系结构。也可以说我再强调学习顺序的问题,当然哪种学习顺序都可以,具体因人而异,我觉得一开始就学体系结构、而且没有结合具体的实例,而是一堆理论,对新手不是很不友好。
至于,如果一开始对整个体系结构不了解,如何才能做一些具体的小事呢?这个才是问题的关键。我觉得这个就需要老师把课程设计好,让学生尽管在一无所知的情况下,还能够仅仅学了一些东西,马上就能做一些事情。这里强调的做一些事情,不是说急于求成,而是能够减小学习曲线的坡度、增加学习的趣味性,让学习更有效率。
比如,codecademy上面 SQL 的这门课:
我刚刚看了一些,一开始它很快的介绍了一下什么是 关系型数据库,然后就开始教 SELECT 语句。我就可以跟着做,马上我自己就筛选一些信息,我觉得很容易也很好玩。然后我就知道原来 MySQL, SQL Server, SQLite 都是 RDBMS,联想到前面做的作业,问数据库模型有哪几种。我希望在课程中能加入更多的实例,采用cases study。一开始知不知道体系结构,一开始知不知道各个概念的具体定义并不重要。重要的是最终你知不知道体系结构,最终对概念的认识清不清楚。比如,我一开始对聊信息”这个词的概念了解的清不清楚,对什么是关系型数据库的定义不是很清楚,这并不影响我后面的学习。所以一开始就不需要了解那么清楚,有一个模糊的印象就可以,然后在使用过程中慢慢的加深对它的理解。相反,一开始花大力气去解释概念,可能是没有意义的增加学习的困难。
上次的作业问到这几个问题:
1、数据库系统的软件由几个部分组成,他们的作用及关系是什么?
2、试述数据库系统的三级模式结构及每级模式的作用
3、试述数据库系统中的二级映像技术及作用
我随手问了身边的几个Linux User Group的同学,他们直接说“不要问我文科题目”。而我问我男朋友,他是科大计算机学院本科,微软亚洲研究院联合培养的研究生。他说不知道。USTC评课社区就是他负责开发的后端和数据库,科大博客、Freeshell、LUG VPN都是他主要开发的项目。他过了一会跟我说,他好像学过,不过考完试就忘了。他们做实际涉及数据库工作的,也回答不来这些问题。但并不妨碍他们的工作。附上他的博客:http://ring0.me/
我希望我们的题目能够更有帮助,而不是为了考核而考核,掌握一堆概念而代码能力不行的码农是找不到工作的。。。我们的课程应该着重培养能力,把知识转化成解决问题的方法,而不是纸上谈兵。当你真正掌握解决问题的能力,你对体系的理解也不会太差,但很可能还是回答不来教科书上的概念题,但回答不来这些概念题又有什么关系吗?
至于计算机网络,我只能说不同的人,会有不同的评价。如果上课不认真听,想混个学分的话,确实背背书也就够了。其实从上机作业的认真程度,可以看出大家的学习态度。
至于你提到的导入导出数据,建立数据库,数据表,等等这些。在后面的课程都有安排,例如讲到数据库SQL语句,以及具体的数据库系统的时候,都会有演示。但是每门课有每门课的进度安排。我个人认为本科生课程,不能完全讲成软件培训,而且即使数据库软件,也有多种,在具体操作上,存在差异。
至于上机在考试中的比例,这个问题具有两面性。一方面卷面考试是和上机密切相关的,而不是隔离的,例如考试中的SQL语句,就是在上机中具体使用的,例如涉及到具体的SQL server系统的部分。另一方面,上机作业难以控制抄袭和代做。从公平性角度来说,存在问题。 因为我发现有部分同学随便从网上下载东西充当作业给我,包括计算机网络。
此致
敬礼!
杨俊朋
中国科技大学人文与社会科学学院
电话:0551-3607879
教师主页: 暂无