edit Ch2-10

This commit is contained in:
lan 2019-12-09 11:43:12 +08:00
parent 1774fd1830
commit 59fe62f1b0
3 changed files with 330 additions and 297 deletions

View File

@ -1,297 +1,232 @@
%\centerline{毛新军,魏峻,孙艳春,邓水光}
~\\
学科教育基于学科的独立知识体系,宣传和普及学科知识,培养学科专业人才。学科教育是构成学科的要素之一,并受学科的发展、教育理念和方法的进步等因素的影响。近年来,随着软件学科的边界不断拓展,内涵持续变化,地位不断提升,以及对人类社会的影响面日益扩大,软件学科教育的重要性日益凸显。与此同时,随着我国经济结构的调整和升级以及以信息技术为代表的新经济的快速发展\cite{aihua2017accelerate},软件学科教育需要为国家的经济转型培养高素质的专业人才。如何加强软件学科教育,提高人才培养的质量和水平,让更多的社会大众从中受惠和受益,成为全社会关注的话题。
软件学科的研究主体是人类及其思维活动,客体是软件及其内在规律。在人机物融合时代,“软件无所不在”、“软件定义一切”使得软件成为人类社会的重要基础设施\cite{hong2018everything},软件系统的环境、边界、构成、形态、交互等发生了深刻的变化。这些变化不仅推动了软件学科的发展和进步,而且使得软件学科教育的对象、面临的挑战等也随之发生变化。
首先,随着软件的日益普及,软件对人类社会和现实世界的渗透力越来越强、影响面越来越广,受其辐射和影响的人群也越来越多,并随之产生了一系列新的问题、出现了新的价值取向,如伦理、道德、可信、隐私保护、安全等。越来越多的大众融入到了软件定义的世界(如使用微信来开展社交),甚至通过编程等方式参与软件的构造。总体而言,\textbf{软件学科与人类社会间的关系变得更为紧密,软件学科教育日趋普及化和全民化。}
其次,随着计算平台不断向物理世界和人类社会的快速延伸,软件作为“集成器”在连接物理系统和社会系统中发挥着日趋重要的作用,软件泛在化和人机物融合的趋势日益明显,软件成为诸多行业和领域(如机器人、航空、航天、生物医学等)解决其特定问题的核心手段和必不可少的工具。\textbf{这些行业、领域的专业人士需要掌握软件学科的基础知识和核心能力,学会运用软件工具来解决特定领域的问题;与此同时,软件学科的专业人才也需要向特定领域扩展和渗透,软件学科教育呈现出与其他学科教育日益交融的趋势。}
第三,软件系统变得日益复杂,并体现多元价值,传统的还原论开发方法在应对软件日益增长的复杂性方面面临着诸多挑战\cite{huaimin2014growth},需要从生态系统的角度认识软件系统及其开发和演化。随着软件学科外延的拓展和内涵的发展,软件学科需与更多的学科进行交叉。开源软件\index{开源软件}的成功以及开源文化的流行对人才培养提出了新的要求\cite{hong2017challenges, bandyopadhyay2016ict},使得软件学科教育的知识体系\cite{borque2014swebok}不断的丰富和发展,对软件专业人才的知识、能力、素质和技能等要求也随之发生变化。\textbf{软件学科教育需在知识体系层面与时俱进,需从系统观和系统能力、生态观、多元价值观等方面加强专业人才的培养。}
最后当前教育理念和技术的发展日新月异教育教学改革非常活跃如MOOC\index{MOOC}、SPOC\index{SPOC}、个性化学习\index{个性化学习}、学习路径推荐等,计算机软件在教育改革和人才培养中发挥着日益重要的作用。\textbf{软件学科教育需要借鉴当前先进的教育理念和方法\cite{editors2019computer},结合自身的特点和人才培养的特殊要求,利用软件学科已经积累的资源,交叉大数据分析、机器学习、数据挖掘等技术手段,研制教育软件工具,以推动软件学科教育和人才培养的改革。}
概括起来,软件学科作为基础学科,其教育的影响面大,面临挑战多,需要推动普及教育,加强跨学科教育\index{跨学科教育},深化专业教育\index{专业教育},重视人才培养理念和教育方法的改革,促进软件伦理制度的建设及宣传教育。
\section{重大挑战问题}
为了适应人机物融合时代软件学科的发展以及人才培养的需求,软件学科教育在普及教育(§\ref{subsection:10_1_1})、跨学科教育\index{跨学科教育}\ref{subsection:10_1_2})、专业教育\index{专业教育}\ref{subsection:10_1_3})、教育理念和方法改革(§\ref{subsection:10_1_4})、软件伦理制度建设和宣传教育(§\ref{subsection:10_1_5})等面临一系列的重大挑战问题。
\subsection{普及教育问题}
\label{subsection:10_1_1}
在人机物融合时代,软件不仅是人类社会的基础设施,而且正成为承载人类文明的新载体。如何做好现代软件文明的继承者、传播者和创作者,软件学科教育必须顺应这一时代要求,从单一性的专业教育向大众化的通识教育转变,即惠及普通大众,从儿童、少年、青年、中年到老年\cite{xiaoming2014imagination},人人能用软件,人人能评软件,人人能读软件,人人能写软件。
\begin{itemize}
\item[$\bullet$] \textbf{如何培养以计算思维\index{计算思维}为核心,融合创新思维\index{创新思维}的系统性认知能力\index{认知能力}}
\end{itemize}
软件是人类智力活动的创作结果。软件学科普及教育首先需要解决社会大众(尤其是青少年)针对软件及其开发的系统化认知问题。从系统观的视角上看,软件学科的核心认知能力是计算思维,它是信息社会中现代人的基本素养,也是人类诸多认知能力的核心要素之一\cite{wing2014computational, grover20185th}。从内涵上看,计算思维能力绝不仅仅是编程技能,也不纯粹是掌握某些程序设计语言,它还包括应用软件来创新解决问题以及由此所需的创新思维能力。现阶段软件已渗透到自然科学、工程技术、社会人文等方方面面,计算思维与其他认知能力(如批判思维、创新思维等)相互作用,相互影响,不可分离。软件学科教育要突出软件作为“集成器”在连接物理系统和社会系统中的关键作用,强化通过软件来解决各种实际问题的思维训练。为此,软件学科的普及教育需要充分揭示计算思维能力与其他认知能力之间的关系,深化以计算思维、创新思维为核心的普及教育,提高大众的系统化认知能力。现阶段,软件学科的普及教育还是以编程技能培养为主,我们对计算思维与创新思维二者相互作用的认识还不够深入,无法满足软件学科普及性教育的需要。
\begin{itemize}
\item[$\bullet$] \textbf{不同教育受众认知能力的成长有何规律,如何构建适应不同受众的普及教育知识体系}
\end{itemize}
软件学科普及教育受众对象的涉及面广、差异性大,其中青少年教育是核心和关键。他们是一类认知能力正逐步成长的特殊人群,其基本认知能力,如抽象思维能力、表达交流能力、逻辑分析与推理能力、计算抽象能力等正处于逐步形成的阶段。针对不同的受众对象,他们在计算思维等认知能力的成长方面有何规律性?不同认知能力的形成存在怎样的依赖性?计算思维的训练与哪些认知能力密切相关?等等基础性的问题值得去探究。与此同时,计算思维等认知能力的培养需要依托软件学科和非软件学科的诸多相关知识,这些知识需要与实际问题域相结合,以加强计算思维能力的训练和实践。因此,如何以软件学科知识为核心,建立起科学的、层次性的、可满足不同受众和认知能力培养需求的知识体系,是软件学科普及教育亟需解决的关键问题。
\begin{itemize}
\item[$\bullet$] \textbf{如何构建与认知能力和水平相适应且贯穿终身的软件学科普及教育理念与方法}
\end{itemize}
软件学科普及教育对象来自各行各业,知识背景不一样,认知能力千差万别,且需面对从儿童期、少年期、青年期、中年期甚至到老年期等不同时期的人群,因此普及教育模式不能单一化,教育方法不能统一化。对于儿童和少年,游戏编程、可视化和实物编程有利于推动以计算思维为核心的认知能力逐步形成和深化;对于青少年,创新思维与软件核心认知能力的紧密融合可有效推动其认知能力的提升;对于成年人,通过软件创意创作把个人智慧进行沉淀和累积更能发挥其特长;对于老年人,编程成为他们除了琴棋书画广场舞之外的另一个重要兴趣方向。与此同时,随着信息技术的发展,教育的方式和方法也在不断的改变。为此,软件学科普及教育需要寻求适应不同普及对象、不同行业领域、不同认知水平的教育理念和方法。
\subsection{跨学科教育问题}
\label{subsection:10_1_2}
从形态观的视角,软件对人类社会和现实世界的渗透力越来越强,呈现出泛在化的趋势,与众多的专业和学科联系紧密;从系统观的视角,软件作为“集成器”在连接物理系统和社会系统中发挥关键作用,与诸多的应用领域密切相关。无疑,非软件学科的专业人才越来越多的需要具备软件学科的相关知识和能力,软件学科专业的人才也需要向其他学科渗透,以帮助其他学科解决特定专业和学科领域的相关问题。如何实现软件学科教育与其他学科教育的双向融合成为当前软件学科教育面临的一项重大挑战。
\begin{itemize}
\item[$\bullet$] \textbf{如何实现软件学科知识体系与其它学科专业知识体系的融合}
\end{itemize}
现有的许多学科与软件学科关系紧密,但在教育层面,它们很少融合软件学科的知识体系。随着软件学科的日趋泛在化以及对各个领域、行业和专业的不断渗透,以及社会对复合型人才\index{复合型人才}、创新型人才的迫切需求,如何把软件学科的相关知识体系融入到非软件学科(如航空、航天、机器人、新材料等)的知识体系中,或者让软件学科的人才融入到其他学科领域之中,构建跨专业、多学科交叉的融合性知识体系,将成为软件学科教育和其它非软件学科教育面临的一项重大挑战。
其他学科教育需要借鉴和引入“软件定义+计算思维”的理念,使得相关专业人才具备利用软件学科的思维方法解决专业特定问题的能力,这种新的融合性教学模式能够充分发挥软件学科的优势和专业特长,有利于激励学生探索交叉学科的新领域,促进学生能力和素质的全面发展。实现“非软件学科 + 软件学科”相融合的教育改革,既是当前诸多专业教育面临的机遇,也是它们必须应对的挑战。针对相关学科专业(如农业、气象、生物医学、现代服务业等)的人才培养,在保障以本学科专业为主导的前提下,如何加强软件学科相关知识的学习和能力的培养,如何调整培养方案和知识体系,完成从“专业型”到“融合型”学科培养方式的转型,是当前非软件学科教育亟待解决的问题。
当前各大高校设置了包含软件学科知识的公共基础课程(如大学计算机基础、计算机导论、计算机程序设计等),以帮助相关学科和专业的学生建立起初步的计算思维和编程能力,但是统一的授课内容导致软件学科知识与其他学科专业学科知识脱节,没有考虑不同学科和专业培养目标和应用需求的差异性,未能实现针对不同学科专业人才培养特点和要求的个性化和差异化教学,尤其是缺乏软件学科与其他学科相结合的优秀教学案例。
\begin{itemize}
\item[$\bullet$] \textbf{如何培养具有软件学科知识和能力的复合型、创新型跨界专业人才}
\end{itemize}
随着行业软件化转型需求的不断增长,诸多学科和专业与软件学科的融合日趋紧密,迫切需要具有软件学科知识的复合型、创新型跨界专业人才。然而,现有的许多专业人才培养尚无法满足这一需求,极大制约了相关行业的转型、专业和学科的发展,导致这种状况的原因是多方面的:一些非软件学科的专业人才培养直接将软件学科中的某些先进软件技术套用到相关专业领域之中,并没有系统地考虑这些技术在跨界专业领域中的实用性以及其软件应用需求的特殊性;它们更多地关注于自身专业领域的相关知识和能力,忽视和错失了软件学科的知识和技术给专业领域问题的解决带来的新机遇。因此,如何培养具有软件学科知识和能力的复合型、创新型跨界专业人才\index{跨界专业人才},将是诸多专业和学科教育面临的重大机遇和挑战。在现有的人才培养体系下,我们应该深入思考如何在掌握专业基础知识的同时,将软件学科的知识与相关专业学科的知识相交叉和融合,实现从单一专业人才到跨界复合型、创新型人才的转变,满足人机物融合时代对复合型、创新型人才的巨大需求。
\subsection{专业教育问题}
\label{subsection:10_1_3}
在人机物融合时代,软件的环境、边界、构成、形态、交互、复杂性等发生了深刻的变化,软件学科的内涵和外延也在不断的发展,其知识体系不断的丰富,对软件学科专业人才的能力、素质和技能等要求也随之发生变化,进而对软件学科专业教育提出了新的挑战。
\begin{itemize}
\item[$\bullet$] \textbf{如何认识人机物融合时代对软件学科专业能力提出的新要求?}
\end{itemize}
在人机物融合时代,由于软件系统自身形态、复杂性、价值观等发生了深刻的变化。软件学科教育需要从提升可持续核心竞争力的角度加强专业人才的能力和素质培养\cite{editors2019computer}
复杂庞大的软件系统在人类社会的诸多领域发挥着日益重要的作用和影响,如银行金融、城市服务、国防军事、电力通讯等等。这类系统不仅在基本形态、运维方式、质量要求等方面有其特殊性,而且在支持这类系统建设的软件开发隐喻、软件生态环境、元级方法论等也呈现出新的特点。软件学科教育迫切地需要培养能够掌握和驾驭这类软件系统开发和运维的人才。
从系统观的视角,人机物融合时代的软件系统已不再是纯粹的技术系统,而是需要与物理世界、社会系统等进行高度融合。这类系统的开发需要采用系统论方法(而非还原论方法)来驾驭复杂性,要从“人机物”相互融合的角度和层次来认识软件系统的构成,要将软件视为融合人机物的“万能集成器”;需要从横向(系统的联盟)和纵向(系统的层次)、高层、宏观、全局等视角来分析系统的构成及考虑系统的设计,需要站在系统的高度来综合考虑人、机、物之间的关系,通过人、机、物三者间的协同来给出软件系统的解决方案,即软件学科专业人才需要具备“系统能力”。
人机物融合时代的软件系统呈现出新的特点,软件规模超大(如几亿甚至十几亿行代码)、软件需求不清晰且持续变化,软件系统表现为一类系统之系统而非单一系统、动态演化系统而非静态确定系统、社会技术系统而非纯粹技术系统\cite{sommerville2011large, northrop2006ultra}等等。因此,软件形态和复杂性的变化以及软件学科范畴的拓展对软件学科专业人才的能力和素质提出了更高的要求,他们需要具备解决人机物融合时代背景下的解决复杂工程问题的能力,这种能力需建立多学科知识的基础之上,以应对人机物融合带来的各种问题和挑战。
人机物融合时代软件开发的方式和手段也在发生深刻的变化。例如,建设开源生态、借助开源软件、利用群智开发等成为重要的趋势,开源软件已成为世界信息技术及产业发展的重要方向。然而,当前开源软件人才的培养及供应无论在质或量上均存在较大不足\cite{hong2017challenges}。此外,软件学科教育需要深入地探究如何有效地利用海量、多样、高质量的开源软件和群智资源来培养软件学科人才\cite{xinjun2019soft}
\begin{itemize}
\item[$\bullet$] \textbf{如何构建与人机物融合时代软件学科特点相适应的专业知识体系?}
\end{itemize}
在人机物融合时代,不仅软件系统的构成、形态和复杂性在变,人们对软件系统的价值观认识也在变(如更加关注软件的可信性、隐私性、安全性、平等性、持续性等),支撑软件系统开发和运维的方法和技术也在不断的变化。软件开发和运维不仅是个体和团队行为,而且延伸到社会层次,表现为一种社会化行为。开源软件的成功实践表明,大规模群体化软件创作成为一种重要的软件开发方式,软件生态变得极为重要。此外,软件学科不断地与其他相关的学科进行交叉,如大数据、人工智能、社会学、系统科学等等。这意味着人机物融合时代的软件学科专业教育知识体系发生了深刻的变化,其知识域在不断拓展,知识点在不断增加。为了满足软件学科教育的新要求,需要建立起支撑系统能力、解决复杂工程问题能力以及创新能力等能力培养所需的知识体系。因此,软件学科专业教育需构建与人机物融合时代软件学科发展相适应、满足软件学科专业人才培养需求的知识体系。
\subsection{教育理念和方法改革问题}
\label{subsection:10_1_4}
在人机物高度融合的时代,软件学科教育既要根据软件学科的特点、顺应学科的发展趋势,也要充分利用好学科发展的成果,促进学科人才的培养。软件学科教育在教育理念、方法和模式等方面面临着一系列的挑战。
\begin{itemize}
\item[$\bullet$] \textbf{如何借助软件学科成果来加强软件学科教育?}
\end{itemize}
在几十年的发展过程中,软件学科领域积累了丰富、多样和海量的资源,包括代码、模型、文档、数据、开发知识、工具等等。尤其是近年来,随着开源软件、群智开发、软件开发知识分享等的快速发展,互联网上的开源社区汇聚了大量的软件资源和开发数据。这既给软件学科教育创造了条件、提供了机会和奠定了“物质”基础,同时也给软件学科教育提出了新的问题和挑战\cite{xinjun2019soft}:如何借助这些软件资源来深入探究软件学科人才(如软件工程师)的成长轨迹和培养路径?如何有效利用这些软件资源来支持软件学科的教育、促进软件人才的培养?
\begin{itemize}
\item[$\bullet$] \textbf{如何顺应教育理念和方法的发展来改革软件学科教育的方式和手段?}
\end{itemize}
以互联网为基础的信息技术正改变甚至颠覆传统的教学理念和方法以MOOC、SPOC等为代表的大规模在线教育意味着互联网大众不仅是教育的受益者也是教育的参与者。软件学科教育朝着普及化和全民化的方向发展越来越多的大众涉足软件的使用、评价甚至开发因而成为软件学科教育的对象。这就需要为软件学科的大众化和普及化教育投入足够的教育资源、提供有效的方式和手段。以群智软件开发方法为代表的软件开发隐喻给软件学科教育提供了新的启示借助于互联网大众、利用群智力量来推进软件学科教育将是未来的一个重要趋势它不仅可促进软件学科教育的普及化而且还可通过大众的参与和协同共同分享学习的经验和资源。
\begin{itemize}
\item[$\bullet$] \textbf{如何为软件学科教育提供软件工具?}
\end{itemize}
软件可为特定领域的问题提供基于计算平台的解决方案。软件学科教育也是一个特殊的应用领域,它涉及与教育有关的诸多问题的解决,如教育资源的组织、分享和推荐,学习者的交互和协同,教育成效的考核和评估等等。因此,如何为软件学科教育提供支撑软件成为一个开放性的问题。
\subsection{软件伦理制度建设及教育问题}
\label{subsection:10_1_5}
\begin{figure}[!b]
\centering
\includegraphics[width=.8\linewidth]{fig2-10/mainwork.png}
\caption{软件学科教育的主要研究内容}
\label{fig:fig2_10_1}
\end{figure}
在人机物融合时代,计算机软件对人类社会的方方面面产生了重大和深远的影响,也带来一些深层次、前所未有的风险和问题,如私密数据被窃取、软件留有后门、系统受到攻击等等。我们社会还没有建立起针对这些风险和问题的伦理准则和法律体系;软件研究者、开发者和使用者的行为缺乏相关的约束,也没有有效和高效的监管手段,以确保其遵守和履行法律、道德和伦理规范。软件伦理教育\index{软件伦理教育}没有得到国家、社会和行业等的足够重视,也没有普及。缺乏软件专业背景的其他学科专家和一般大众很难从系统外部及时感知和发现潜在的软件伦理问题。自动化、智能化甚至量子化软件新技术的发展及应用将给人类社会带来更多的未知,评估它们对人类社会未来的长远影响需要对技术本身以及可能的应用场景有深入的理解,以及足够的前瞻预测能力。
\section{主要研究内容}
针对上述重大挑战问题,软件学科教育需要开展以下诸多方面的研究工作,包括:以“知识普及 + 思维培养”为核心的普及教育(§\ref{subsection:10_2_1});以“复合型 + 创新型”为目的的跨学科教育(§\ref{subsection:10_2_2});以“知识体系 + 能力培养”为核心的专业教育(§\ref{subsection:10_2_3});以“探究规律 + 方法创新 ”为主体的教育理念和方法改革(§\ref{subsection:10_2_4});以及以“健全制度 + 加强监督”为核心的软件伦理建设、治理和教育(§\ref{subsection:10_2_5})。
\subsection{以“知识普及 + 思维培养”为核心的普及教育}
\label{subsection:10_2_1}
\begin{itemize}
\item[$\bullet$] \textbf{软件学科核心认知能力的成长模型和规律及其知识体系}
\end{itemize}
软件学科的认知能力以计算思维为核心,包含抽象思维、表达交流、逻辑分析和推理、计算抽象等。这些能力有其各自的特殊性,相互间存在依赖性。为此,需要深入研究以计算思维能力为核心的认知能力成长模型,探究不同受众认知能力的成长规律。与此同时,这些能力培养所需的知识潜藏在数学、语文、物理、化学、自然科学等课程的知识体系之中。软件学科认知能力的培养和上述知识之间存在横切关系,代表这些知识体系的课程很少与实际的软件及其开发相关联。因此,需要从横切和纵切二个方面,探究并建立起支撑软件学科核心认知能力培养的知识体系。
\begin{itemize}
\item[$\bullet$] \textbf{以计算思维为核心,融合\index{创新思维}的系统化\index{认知能力}培养方法}
\end{itemize}
人机物融合时代,软件使能的创新是软件学科辐射影响的主要目标,软件学科教育要在培养计算思维能力的同时,强化基于软件来解决问题的创新思维能力的培养。因此,我们需要研究如何将“计算思维”与“创新思维”二者相结合来深化软件学科的普及教育,探究“计算思维+创新思维”融合培养的学习路径,建立起支撑“计算思维 + 创新思维”培养的方法和手段。
\begin{itemize}
\item[$\bullet$] \textbf{适应不同认知水平且贯穿终生的软件学科普及教育方法}
\end{itemize}
软件学科普及教育受众的专业和知识背景具有多样化的特点,年龄层次和认知水平有较大的差异性。为此,需要借鉴生态化发展的思路,研究与教育对象的生理、心理和认知相适应的教育教学方法;研究同质生态教育方法和异质生态关联的迁移教育方法;研究如何借助于信息系统(尤其是软件系统)来支持和推广软件学科的普及教育。
\subsection{以“复合型 + 创新型”为目标的跨学科教育}
\label{subsection:10_2_2}
\begin{itemize}
\item[$\bullet$] \textbf{基于“专业学科知识 + 软件学科知识”的跨学科教育知识体系}
\end{itemize}
作为基础学科,软件学科教育需要面向其他的学科专业实现外延式的发展。针对不同专业自身的特点,结合软件学科知识在该专业人才培养中所起到的作用,采取“专业学科知识 + 软件学科知识”的方式来拓展专业知识体系,开展适用于自身专业需求的教学改革,使得相关专业人才具备软件学科的知识并能运用它们来解决特定专业问题。为此需要研究如何将软件学科的知识差异化地融入到相关专业的知识体系之中,实现与相关专业知识的有机融合,实现跨学科知识体系的交叉融合和互补,为跨界人才培养奠定基础。
\begin{itemize}
\item[$\bullet$] \textbf{具有软件学科知识和能力的复合型、创新型和跨界专业人才培养方法}
\end{itemize}
随着软件学科在其他专业领域的不断渗透,在这些学科专业人才培养方案的设计中,必须解决软件学科知识储备不足的问题。由于专业背景和专业思维的差异性,不同学科专业教育对软件学科知识结构的需求和相关课程衔接也不尽相同,因此跨界的软件学科人才培养需要多元化的知识和课程体系,为此需要探究如何实施“因材施教”的教学理念,分析不同专业对软件学科的“个性化”需求,构建专业软件化的新型课程体系,设计差异化的跨界软件学科人才培养方案,以实现软件学科和其他相关学科专业交叉融合,让非软件专业的学生也具备软件学科的思维能力来解决本学科专业的问题,以满足社会对复合型、创新型的跨界软件学科人才的需求。
软件学科的跨界人才培养也是双向的。软件学科跨界进入其他学科领域的发展趋势愈发明显。在该种形式的跨界教育中,教育对象已具备良好的计算思维能力,需要研究他们如何需要跳出软件学科知识领域的思维定势,强化跨界学科知识的学习,如何以全新的视角建立起软件学科与其他学科间的关联性,探索跨界学科计算的本质,培养适用于跨界专业的计算思维能力。
\subsection{以“知识体系 能力培养”为核心的专业教育}
\label{subsection:10_2_3}
\begin{itemize}
\item[$\bullet$] \textbf{面向多学科交叉融合的软件学科专业教育的知识体系}
\end{itemize}
针对人机物融合时代的软件学科特点和人才培养要求,深入研究软件学科与哪些相关学科发生了交叉、交叉的边界和范围是什么;人们对软件的价值取向发生了什么样的变化,这些变化对学科的知识体系提出了什么样的要求;软件学科自身发展带来哪些方面的变化,这些变化处于知识体系的哪些层次和方面。另外,还需要从软件学科专业人才能力培养的视点,探讨系统能力、解决复杂工程问题能力的培养对知识体系提出什么要的要求。在此基础上,研究并建立起人机物融合时代面向多学科交叉融合的软件学科专业教育的知识体系,包括知识领域、知识单元、知识点等。
\begin{itemize}
\item[$\bullet$] \textbf{软件学科专业教育核心能力的培养方法}
\end{itemize}
系统能力、解决复杂工程问题能力等是人机物融合时代软件学科专业教育的核心能力。这二类能力的关注点和侧重点有所不同,培养方式和手段也不尽相同。实践无疑是专业教育环节中支撑能力培养的主要手段。为此需要深入研究系统能力和解决复杂工程问题能力的内涵、构成和模型,分析不同能力之间的内在关联性,探究能力持续性培养和形成的特点和规律性,探究如何通过渐进式、综合性的实践教学来促进系统能力和解决复杂工程问题能力的培养,以及针对能力培养的考评方法。
\begin{itemize}
\item[$\bullet$] \textbf{开源文化教育及开源人才培养}
\end{itemize}
探究开源模式对软件开发人员的能力需求,将开源文化(如开源历史、开源共识及开源社区的治理规则等)、开源软件及开源社区和生态等内容有机地融入到软件学科专业的知识体系及教学和实践环节之中,研究促进开源意识、开源技能培养的教育方法和手段,积极开展基于开源和群智的教育和教学改革,建立起支撑软件学科人才培养的开源资源。
\subsection{以“探究规律 + 方法创新”为主体的教育理念和方法改革}
\label{subsection:10_2_4}
\begin{itemize}
\item[$\bullet$] \textbf{软件学科人才培养模型及规律}
\end{itemize}
软件学科教育对象的涉及面广,年龄层次和知识背景差异性大,培养的目的和要求多样化。软件学科教育牵涉多方面的专业和非专业知识,需要强化不同层次的能力和素质培养。这些知识、能力和素质之间存在内在的关联性。为此,软件学科教育需要针对不同的培养对象和培养目标,深入探究人才培养模型,包括知识体系、能力体系、工程素质等,分析它们在培养过程中所发挥的作用以及相互之间的继承性和依赖性。此外,软件学科人才的成长受多方面因素的影响,包括自身的素质和能力,外在的教育者及合作群体,学习的环境和激励机制,甚至学习过程中所依赖的软件平台(如开源社区)等。为此,需要探究软件学科人才的成长规模,以此来指导教育政策和机制的设计以及平台的建设。
\begin{itemize}
\item[$\bullet$] \textbf{软件学科资源在人才培养中的挖掘和应用}
\end{itemize}
经过几十年的积累,尤其是近年来开源软件、群智软件开发等的发展,软件学科积累了大量、多样、极有价值的软件资源,如以开源社区为载体的开源代码、知识问答、软件开发历史数据等。软件学科教育需要深入挖掘和利用软件学科资源在教育中的价值,系统研究如何在课程教学、实践教学和人才培养过程中有效地应用这些资源,如何将抽象的知识与具体的资源相结合来促进知识的理解和掌握、推动实践教学、培养能力和素养。
\begin{itemize}
\item[$\bullet$] \textbf{群体化学习\index{群体化学习}}
\end{itemize}
借助互联网平台,通过吸引、汇聚和管理大规模的学习者,使得他们以竞争和合作等多种自主协同方式来开展学习将是未来的重要学习方式,我们称之为群体化学习。软件学科教育需要充分借助于互联网大众的智慧和理念,施行群体化学习的思想,以促进软件学科人才的大规模、高质量、普及化的培养。为此,基于群智理论和方法的指导,借助于互联网上的大数据分析,需要研究支持群体化学习的组织结构和协同模型,分析和设计群体化学习的激励机制,探究不同组织结构、协同模型和激励机制对群体化学习成效、质量和受益面等产生的影响及涌现结果。
\begin{itemize}
\item[$\bullet$] \textbf{大规模在线开放实践MOOP\index{大规模在线开放实践MOOP}}
\end{itemize}
能力和素质培养是软件学科教育的一项主要任务。针对软件学科的发展特点需要研究软件学科人才的能力和素质模型建立不同能力和素质之间的关系分析普及教育、专业教育、跨学科教育等分别需要达到什么样的水平和层次探究软件学科内涵的拓展如何影响能力和素质。实践是支撑能力和素质培养的主要教学途径。依托大规模人群的在线开放实践称为MOOP将成为能力和素质培养的重要趋势也是对MOOC在该方面存在欠缺的有效弥补。为此需要研究支撑能力和素质培养的实践体系建设探究如何将诸如游戏化机制等引入到MOOP之中以激励大众参与和贡献分析针对MOOP的量化表示与评测方法建立起针对能力和素质培养的\index{评价体系}与评价指标。
\begin{itemize}
\item[$\bullet$] \textbf{支撑软件学科教育的软件工具}
\end{itemize}
针对软件学科教育的特殊需求,借助于软件学科资源大数据,交叉诸如人工智能、大数据分析、移动计算等技术,研究支撑软件学科教育的关键软件技术,包括开源社区中学习资源(如开源软件和软件开发知识)的同步和分享技术,针对学习者个性化特点及需求的教育资源推荐技术,实现教育软件与开源社区间互操作和交互技术,基于教育大数据来构建学习者个性化学习\index{个性化学习}路径的方法,对学习者的学习情况和成长进行跟踪和考评的技术等等,并在此基础上研发软件学科教育软件。
\subsection{以“健全制度 + 加强监督”为核心的软件伦理建设、治理和教育}
\label{subsection:10_2_5}
\begin{itemize}
\item[$\bullet$] \textbf{制定软件领域法律法规,加强软件伦理的制度化建设}
\end{itemize}
国家、软件行业主管部门应与行业主体、学术团体、社会公众等众多利益相关方通力合作,制定、发布和修订软件领域的专项法律法规和伦理准则,让软件的研究、开发和应用有法可依、有规可循。支持行业自律,建立伦理审查制度,成立自律组织,制定行业标准等,积极推动软件伦理的全球治理,参与相关国际标准、规则的制定。
\begin{itemize}
\item[$\bullet$] \textbf{研究软件伦理的合规检测和监督技术,大力开展软件伦理教育和宣传}
\end{itemize}
加快研发软件伦理合规检测和监督技术,尤其是自动化技术,例如面向软件版权保护的代码溯源技术、软件许可证违规使用检测技术,软件及软件使用者恶意、危险行为检测技术等,形成覆盖全面、导向明确、规范有序、协调一致的检测和监督技术体系,辅助软件行业从业者、用户和监管机构快速发现和修正违背伦理的问题,使法律法规、伦理制度得到严格执行。同时,研究和建立完善的软件伦理教育机制,针对不同教育阶段和年龄层次的人群普及软件伦理的教育,搭建创新与伦理之间高效对话机制和沟通平台,制定并落实全民软件素养培养计划。
\section{本章小结}
在人机物融合时代,随着软件辐射面和影响面的扩大,软件学科的发展和进步,软件学科教育的内涵和外延也在发生改变,它涉及普及教育、专业教育、跨专业教育、教育理念与方法改革等多个方面,面临着一系列重大的问题的挑战,包括:如何针对具有不同认知水平的受众对象开展普及教育?如何根据人机物融合时代特点来深化专业教育?如何加强软件学科与其他学科的融合来实现跨专业的教育?以及如何改革软件学科的教育理念和方法来满足日益增长的人才培养需求、如何应对软件伦理问题等等。
为了迎接上述挑战软件学科教育需开展一系列研究内容包括1以“计算思维 + 创新思维”为核心的普及教育2以“知识体系能力培养”为核心的专业教育3以“复合型 + 创新型”为目标的跨学科教育4以“探究规律 + 方法创新”为主体的教育理念和方法改革5以“健全制度 + 加强监督”为核心的软件伦理建设、治理和教育。
%\bibliogaphystyle{acm}
%\bibliography{references_2_10}
%\bibliography{IEEEabrv,ref}
%\section{参考文献}
%
%[1] 吴爱华, 侯永峰, 杨秋波等. 加快发展和建设新工科 主动适应和引领新经济[J]. 高等工程教育研究, 2017, (1): 1-9.
%
%[2] 梅宏. 万物皆可互联,一切均可编程[J]. 方圆, 2018, 501(12):58-59.
%
%[3] 王怀民, 吴文峻, 毛新军, 丁博, 郭长国, 李未, 复杂软件系统的成长性构造与适应性演化, 中国科学:信息科学, 2014, 45(6): 743-761.
%
%[4] 梅宏, 周明辉. 开源对软件人才培养带来的挑战[J]. 计算机教育, 2017, (1): 2-5.
%
%[5] Bandyopadhyay S, Thakur S S. ICT in education: Open source software and its impact on teachers and students[J]. International Journal of Computer Applications, 2016, 151(6): 19-24.
%
%[6] Pierre Bourque, Richard E. Fairley, SWEBOK V3.0 - Guide to the Software Engineering Body of Knowledge, IEEE Computer Society, 2014.
%
%[7] 计算机教育与可持续竞争力, “计算机教育20人论坛”编写组高等教育出版社2019.
%
%[8] 李晓明, “老年编程”的畅想, 计算机学会通讯, 2019, 15(5): 51.
%
%[9] Wing, Jeannette,. Computational Thinking Benefits Society, 40th Anniversary Blog of Social Issues in Computing, 2014.
%
%[10] Grover, S. . The 5th Cof 21st century skills. Try computational thinking (not coding). Retrieved from EdSurge News: https://www. Edsurge.com/news/2018-02-25-the-5th-c-of-21st-century-skills-try-computational-thinking-not-coding. 2018.
%
%[11] Ian Sommerville, Dave Cliff, Radu, etc., Large-Scale Complex IT System, Communication of ACM, 2012, 55(7): 71-77.
%
%[12] Linda Northrop, et.al., Ultra-Large-Scale Systems: The Software Challenge of the Future, Software Engineering Institute, Carnegie Mellon University, 2006.
%
%[13] 毛新军, 王涛, 余跃. 软工程实践教程: 基于开源和群智的方法, 高等教育出版社, 2019.
%\begin{thebibliography}{00}
%\bibitem{ref1} 吴爱华, 侯永峰, 杨秋波等. 加快发展和建设新工科 主动适应和引领新经济[J]. 高等工程教育研究, 2017, (1): 1-9.
%\bibitem{ref2} 梅宏. 万物皆可互联,一切均可编程[J]. 方圆, 2018, 501(12):58-59.
%\bibitem{ref3} 王怀民, 吴文峻, 毛新军, 丁博, 郭长国, 李未, 复杂软件系统的成长性构造与适应性演化, 中国科学:信息科学, 2014, 45(6): 743-761.
%\bibitem{ref4} 梅宏, 周明辉. 开源对软件人才培养带来的挑战[J]. 计算机教育, 2017, (1): 2-5.
%\bibitem{ref5} Bandyopadhyay S, Thakur S S. ICT in education: Open source software and its impact on teachers and students[J]. International Journal of Computer Applications, 2016, 151(6): 19-24.
%\bibitem{ref6} Pierre Bourque, Richard E. Fairley, SWEBOK V3.0 - Guide to the Software Engineering Body of Knowledge, IEEE Computer Society, 2014.
%\bibitem{ref7} 计算机教育与可持续竞争力, “计算机教育20人论坛”编写组高等教育出版社2019.
%\bibitem{ref8} 李晓明, “老年编程”的畅想, 计算机学会通讯, 2019, 15(5): 51.
%\bibitem{ref9} Wing, Jeannette,. Computational Thinking Benefits Society, 40th Anniversary Blog of Social Issues in Computing, 2014.
%\bibitem{ref10} Grover, S. . The 5th Cof 21st century skills. Try computational thinking (not coding). Retrieved from EdSurge News: https://www. Edsurge.com/news/2018-02-25-the-5th-c-of-21st-century-skills-try-computational-thinking-not-coding. 2018.
%\bibitem{ref11} Ian Sommerville, Dave Cliff, Radu, etc., Large-Scale Complex IT System, Communication of ACM, 2012, 55(7): 71-77.
%\bibitem{ref12} Linda Northrop, et.al., Ultra-Large-Scale Systems: The Software Challenge of the Future, Software Engineering Institute, Carnegie Mellon University, 2006.
%\bibitem{ref13} 毛新军, 王涛, 余跃. 软工程实践教程: 基于开源和群智的方法, 高等教育出版社, 2019.
%\end{thebibliography}
\centerline{毛新军,魏峻,孙艳春,邓水光}
~\\
学 科教育基于学科的独立知识体系,宣传和普及学科知识,培养学科专业人才。学科教育是构成学科的要素之一,并受学科的发展、教育理念和方法的进步等因素的影响。近年来,随着软件学科的边界不断拓展,内涵持续变化,地位不断提升,以及对人类社会的影响面日益扩大,软件学科教育的重要性日益凸显。与此同时,随着我国经济结构的调整和升级以及以信息技术为代表的新经济的快速发展\cite{aihua2017fast},软件学科教育需要为国家的经济转型培养高素质的专业人才。如何加强软件学科教育,提高人才培养的质量和水平,让更多的社会大众从中受惠和受益,成为全社会关注的话题。
软件学科的研究主体是人类及其思维活动,客体是软件及其内在规律。在人机物融合时代,“软件无所不在”、“软件定义一切”使得软件成为人类社会的重要基础设施\cite{hong2018everything},软件系统的环境、边界、构成、形态、交互等发生了深刻的变化。这些变化不仅推动了软件学科的发展和进步,而且使得软件学科教育的对象、面临的挑战等也随之发生变化。
首先,随着软件的日益普及,软件对人类社会和现实世界的渗透力越来越强、影响面越来越广,受其辐射和影响的人群也越来越多,并随之产生了一系列新的问题、出现了新的价值取向,如伦理、道德、可信、隐私保护、安全等。越来越多的大众融入到了软件定义的世界(如使用微信来开展社交),甚至通过编程等方式参与软件的构造。总体而言,\textbf{软件学科与人类社会间的关系变得更为紧密,软件学科教育日趋普及化和全民化。}
其次,随着计算平台不断向物理世界和人类社会的快速延伸,软件作为“集成器”在连接物理系统和社会系统中发挥着日趋重要的作用,软件泛在化和人机物融合的趋势日益明显,软件成为诸多行业和领域(如机器人、航空、航天、生物医学等)解决其特定问题的核心手段和必不可少的工具。\textbf{这些行业、领域的专业人士需要掌握软件学科的基础知识和核心能力,学会运用软件工具来解决特定领域的问题;与此同时,软件学科的专业人才也需要向特定领域扩展和渗透,软件学科教育呈现出与其他学科教育日益交融的趋势。}
第三,软件系统变得日益复杂,并体现多元价值,传统的还原论开发方法在应对软件日益增长的复杂性方面面临着诸多挑战\cite{huaiming2014complex},需要从生态系统的角度认识软件系统及其开发和演化。随着软件学科外延的拓展和内涵的发展,软件学科需与更多的学科进行交叉。开源软件的成功以及开源文化的流行对人才培养提出了新的要求\cite{hong2017opensource, bandyopadhyay2016ict},使得软件学科教育的知识体系\cite{borque2014swebok}不断的丰富和发展,对软件专业人才的知识、能力、素质和技能等要求也随之发生变化。\textbf{软件学科教育需在知识体系层面与时俱进,需从系统观和系统能力、生态观、多元价值观、伦理等方面加强专业人才的培养。}
最后当前教育理念和技术的发展日新月异教育教学改革非常活跃如MOOC、SPOC、个性化学习、学习路径推荐等计算机软件在教育改革和人才培养中发挥着日益重要的作用。\textbf{软件学科教育需要借鉴当前先进的教育理念和方法\cite{computerEducation},结合自身的特点和人才培养的特殊要求,利用软件学科已经积累的资源,交叉大数据分析、机器学习、数据挖掘等技术手段,研制教育软件工具,以推动软件学科教育和人才培养的改革}
概括起来,软件学科作为基础学科,其教育的影响面大,面临挑战多,需要推动普及教育,加强跨学科教育,深化专业教育,重视人才培养理念和教育方法的改革,促进软件伦理建设。
\section{重大挑战问题}
为了适应人机物融合时代软件学科的发展以及人才培养的需求,软件学科教育在普及教育(§\ref{subsection:10_1_1})、跨学科教育(§\ref{subsection:10_1_2})、专业教育(§\ref{subsection:10_1_3})、教育理念和方法改革(§\ref{subsection:10_1_4})、软件伦理建设(§\ref{subsection:10_1_5})等面临一系列的重大挑战问题。
\subsection{普及教育问题}
\label{subsection:10_1_1}
在人机物融合时代,软件不仅是人类社会的基础设施,而且正成为承载人类文明的新载体。如何做好现代软件文明的继承者、传播者和创作者,软件学科教育必须顺应这一时代要求,从单一性的专业教育向大众化的通识教育转变,即惠及普通大众,从儿童、少年、青年、中年到老年\cite{xiaoming2019older},人人能用软件,人人能评软件,人人能读软件,人人能写软件。
\begin{itemize}
\item[$\bullet$] \textbf{如何培养以计算思维为核心,融合创新思维的系统性认知能力}
\end{itemize}
软件是人类智力活动的创作结果。软件学科普及教育首先需要解决社会大众(尤其是青少年)针对软件及其开发的系统化认知问题。从系统观的视角上看,软件学科的核心认知能力是计算思维,它是信息社会中现代人的基本素养,也是人类诸多认知能力的核心要素之一\cite{wing2014computational, grover20185th}。从内涵上看,计算思维能力绝不仅仅是编程技能,也不纯粹是掌握某些程序设计语言,而且还包括应用软件来创新解决问题以及由此所需的创新思维能力。现阶段软件已渗透到自然科学、工程技术、社会人文等方方面面,计算思维与其他认知能力(如批判思维、创新思维等)相互作用,相互影响,不可分离。软件学科教育要突出软件作为“集成器”在连接物理系统和社会系统中的关键作用,强化通过软件来解决各种实际问题的思维训练。为此,软件学科的普及教育需要充分揭示计算思维能力与其他认知能力之间的关系,深化以计算思维、创新思维为核心的普及教育,提高大众的系统化认知能力。现阶段,软件学科的普及教育还是以编程技能培养为主,我们对计算思维与创新思维二者相互作用的认识还不够深入,无法满足软件学科普及性教育的需要。
\begin{itemize}
\item[$\bullet$] \textbf{不同教育受众认知能力的成长有何规律,如何构建适应不同受众的普及教育知识体系}
\end{itemize}
软件学科普及教育受众对象的涉及面广、差异性大,其中青少年教育是核心和关键。他们是一类认知能力正逐步成长的特殊人群,其基本认知能力,如抽象思维能力、表达交流能力、逻辑分析与推理能力、计算抽象能力等正处于逐步形成的阶段。针对不同的受众对象,他们在计算思维等认知能力的成长方面有何规律性?不同认知能力的形成存在怎样的依赖性?计算思维的训练与哪些认知能力密切相关?等等基础性的问题值得去探究。与此同时,计算思维等认知能力的培养需要依托软件学科和非软件学科的诸多相关知识,这些知识需要与实际问题域相结合,以加强计算思维能力的训练和实践。因此,如何以软件学科知识为核心,建立起科学的、层次性的、可满足不同受众和认知能力培养需求的知识体系,是软件学科普及教育亟需解决的关键问题。
\begin{itemize}
\item[$\bullet$] \textbf{如何构建与认知能力和水平相适应且贯穿终身的软件学科普及教育理念与方法}
\end{itemize}
软件学科普及教育对象来自各行各业,知识背景不一样,认知能力千差万别,且需面对从儿童期、少年期、青年期、中年期甚至到老年期等不同时期的人群,因此普及教育模式不能单一化,教育方法不能统一化。对于儿童和少年,游戏编程、可视化和实物编程有利于推动以计算思维为核心的认知能力逐步形成和深化;对于青少年,创新思维与软件核心认知能力的紧密融合可有效推动其认知能力的提升;对于成年人,通过软件创意创作把个人智慧进行沉淀和累积更能发挥其特长;对于老年人,编程成为他们除了琴棋书画广场舞之外的另一个重要兴趣方向。与此同时,随着信息技术的发展,教育的方式和方法也在不断的改变。为此,软件学科普及教育需要寻求适应不同普及对象、不同行业领域、不同认知水平的教育理念和方法。
\subsection{跨学科教育问题}
\label{subsection:10_1_2}
从形态观的视角,软件对人类社会和现实世界的渗透力越来越强,呈现出泛在化的趋势,与众多的专业和学科联系紧密;从系统观的视角,软件作为“集成器”在连接物理系统和社会系统中发挥关键作用,与诸多的应用领域密切相关。无疑,非软件学科的专业人才越来越多的需要具备软件学科的相关知识和能力,软件学科专业的人才也需要向其他学科渗透,以帮助其他学科解决特定专业和学科领域的相关问题。如何实现软件学科教育与其他学科教育的双向融合成为当前软件学科教育面临的一项重大挑战。
\begin{itemize}
\item[$\bullet$] \textbf{如何实现软件学科知识体系与其它学科专业知识体系的融合}
\end{itemize}
现有的许多学科与软件学科关系紧密,但在教育层面,它们很少融合软件学科的知识体系。随着软件学科的日趋泛在化以及对各个领域、行业和专业的不断渗透,以及社会对复合型、创新型人才的迫切需求,如何把软件学科的相关知识体系融入到非软件学科(如航空、航天、机器人、新材料等)的知识体系中,或者让软件学科的人才融入到其他学科领域之中,构建跨专业、多学科交叉的融合性知识体系,将成为软件学科教育和其它非软件学科教育面临的一项重大挑战。
其他学科教育需要借鉴和引入“软件定义+计算思维”的理念,使得相关专业人才具备利用软件学科的思维方法解决专业特定问题的能力,这种新的融合性教学模式能够充分发挥软件学科的优势和专业特长,有利于激励学生探索交叉学科的新领域,促进学生能力和素质的全面发展。实现“非软件学科 + 软件学科”相融合的教育改革,既是当前诸多专业教育面临的机遇,也是它们必须应对的挑战。针对相关学科专业(如农业、气象、生物医学、现代服务业等)的人才培养,在保障以本学科专业为主导的前提下,如何加强软件学科相关知识的学习和能力的培养,如何调整培养方案和知识体系,完成从“专业型”到“融合型”学科培养方式的转型,是当前非软件学科教育亟待解决的问题。
当前各大高校设置了介绍软件学科知识的公共基础课程(如大学计算机基础、计算机导论、计算机程序设计等),以帮助相关学科和专业的学生建立起初步的计算思维和编程能力,但是统一的授课内容导致软件学科知识与其他学科知识脱节,没有考虑不同学科和专业培养目标和应用需求的差异性,未能实现个性化和差异化教学,尤其是缺乏软件学科与其他学科相结合的优秀教学案例。
\begin{itemize}
\item[$\bullet$] \textbf{如何培养具有软件学科知识和能力的复合型、创新型跨界专业人才}
\end{itemize}
随着行业软件化转型需求的不断增长,诸多学科和专业与软件学科的融合日趋紧密,迫切需要具有软件学科知识的复合型、创新型跨界专业人才。然而,现有的许多专业人才培养尚无法满足这一需求,极大制约了相关行业的转型、专业和学科的发展,导致这种状况的原因是多方面的:一些非软件学科的专业人才培养直接将软件学科中的某些先进软件技术套用到相关专业领域之中,并没有系统地考虑这些技术在跨界专业领域中的实用性以及软件应用需求的特殊性;它们更多地关注于自身专业领域的相关知识和能力,忽视和错失了软件学科的知识和技术给专业领域问题的解决带来的新机遇。因此,如何培养具有软件学科知识和能力的复合型、创新型跨界专业人才,将是诸多专业和学科教育面临的重大机遇和挑战。在现有的人才培养体系下,我们应该深入思考如何在掌握专业基础知识的同时,将软件学科的知识与相关专业学科的知识相交叉和融合,实现从单一专业人才到跨界复合型、创新型人才的转变,满足人机物融合时代对复合型、创新型人才的巨大需求。
\subsection{专业教育问题}
\label{subsection:10_1_3}
在人机物融合时代,软件的环境、边界、构成、形态、交互、复杂性等发生了深刻的变化,软件学科的内涵和外延也在不断的发展,其知识体系不断的丰富,对软件学科专业人才的能力、素质和技能等要求也随之发生变化,进而对软件学科专业教育提出了新的挑战。
\begin{itemize}
\item[$\bullet$] \textbf{如何认识人机物融合时代对软件学科专业能力提出的新要求?}
\end{itemize}
在人机物融合时代,由于软件系统自身形态、复杂性、价值观等发生了深刻的变化。软件学科教育需要从提升可持续核心竞争力的角度,加强专业人才的能力和素质培养\cite{computerEducation}
复杂庞大的软件系统在人类社会的诸多领域发挥着日益重要的作用和影响,如银行金融、城市服务、国防军事、电力通讯等等。这类系统不仅在基本形态、运维方式、质量要求等方面有其特殊性,而且在支持这类系统建设的软件开发隐喻、软件生态环境、元级方法论等也呈现出新的特点。软件学科教育迫切地需要培养能够掌握和驾驭这类软件系统开发和运维的人才。
从系统观的视角,人机物融合时代的软件系统已不再是纯粹的技术系统,而是需要与物理世界、社会系统等进行高度融合。这类系统的开发需要采用系统论方法(而非还原论方法)来驾驭复杂性,要从“人机物”相互融合的角度和层次来认识软件系统的构成,要将软件视为融合人机物的“万能集成器”;需要从横向(系统的联盟)和纵向(系统的层次)、高层、宏观、全局等视角来分析系统的构成及考虑系统的设计,需要站在系统的高度综合考虑人、机、物之间的关系,通过人、机、物三者间的协同给出软件系统的解决方案,也即软件学科专业人才需要具备“系统能力”。
人机物融合时代的软件系统也呈现出新的特点,软件规模超大(如几亿甚至十几亿行代码)、软件需求不清晰且持续变化,软件系统表现为一类系统之系统而非单一系统、动态演化系统而非静态确定系统、社会技术系统而非纯粹技术系统\cite{sommerville2012large,northrop2006ultra}等等。因此,软件形态和复杂性的变化以及软件学科范畴的拓展对软件学科专业人才的能力和素质提出了更高的要求,他们需要具备解决人机物融合时代背景下的解决复杂工程问题的能力,这种能力需建立多学科知识的基础之上,以应对人机物融合带来的各种问题和挑战。
在人机物融合时代,软件开发方式和手段也在发生深刻的变化。例如,建设开源生态、借助开源软件、利用群智开发等成为重要的趋势,开源软件已成为信息技术及产业发展的重要方向。然而,当前开源软件人才的培养无论在质或量上均存在较大不足\cite{hong2017opensource}。此外,软件学科教育需要深入地探究如何有效地利用海量、多样、高质量的开源软件和群智资源来培养软件学科人才\cite{xinjun2019software}
\begin{itemize}
\item[$\bullet$] \textbf{如何构建与人机物融合时代软件学科特点相适应的专业知识体系?}
\end{itemize}
在人机物融合时代,不仅软件系统的构成、形态和复杂性在变,人们对软件系统的价值观认识也在变(如更加关注软件的可信性、隐私性、安全性、平等性、持续性等),支撑软件系统开发和运维的方法和技术也在不断的变化。软件开发和运维不仅是个体和团队行为,而且延伸到社会层次,表现为一种社会化行为。开源软件的成功实践表明,大规模群体化软件创作成为一种重要的软件开发方式,软件生态变得极为重要。此外,软件学科不断地与其他相关的学科进行交叉,如大数据、人工智能、社会学、系统科学等等。这意味着人机物融合时代的软件学科专业教育知识体系发生了深刻的变化,其知识域在不断拓展,知识点在不断增加。为了满足软件学科教育的新要求,需要建立起支撑系统能力、解决复杂工程问题能力以及创新能力等能力培养所需的知识体系。因此,软件学科专业教育需构建与人机物融合时代软件学科发展相适应、满足软件学科专业人才培养需求的知识体系。
\subsection{教育理念和方法改革问题}
\label{subsection:10_1_4}
在人机物高度融合的时代,软件学科教育既要根据软件学科的特点、顺应学科的发展趋势,也要充分利用好学科发展的成果,促进学科人才的培养。软件学科教育在教育理念、方法和模式等方面面临着一系列的挑战。
\begin{itemize}
\item[$\bullet$] \textbf{如何借助软件学科成果来加强软件学科教育?}
\end{itemize}
在几十年的发展过程中,软件学科领域积累了丰富、多样和海量的资源,包括代码、模型、文档、数据、开发知识、工具等等。尤其是近年来,随着开源软件、群智开发、软件开发知识分享等的快速发展,互联网上的开源社区汇聚了大量的软件资源和开发数据。这既给软件学科教育创造了条件、提供了机会和奠定了“物质”基础,同时也给软件学科教育提出了新的问题和挑战\cite{xinjun2019software}:如何借助这些软件资源来深入探究软件学科人才(如软件工程师)的成长轨迹和培养路径?如何有效利用这些软件资源来支持软件学科的教育、促进软件人才的培养?
\begin{itemize}
\item[$\bullet$] \textbf{如何顺应教育理念和方法的发展来改革软件学科教育的方式和手段?}
\end{itemize}
以互联网为基础的信息技术正改变甚至颠覆传统的教学理念和方法以MOOC、SPOC等为代表的大规模在线教育意味着互联网大众不仅是教育的受益者也是教育的参与者。软件学科教育朝着普及化和全民化的方向发展越来越多的大众涉足软件的使用、评价甚至开发因而成为软件学科教育的对象。这就需要为软件学科的大众化和普及化教育投入足够的教育资源、提供有效的方式和手段。以群智软件开发方法为代表的软件开发隐喻给软件学科教育提供了新的启示借助于互联网大众、利用群智力量来推进软件学科教育将是未来的一个重要趋势它不仅可促进软件学科教育的普及化而且还可通过大众的参与和协同共同分享学习的经验和资源。
\begin{itemize}
\item[$\bullet$] \textbf{如何为软件学科教育提供软件工具?}
\end{itemize}
软件可为特定领域的问题提供基于计算平台的解决方案。软件学科教育也是一个特殊的应用领域,它涉及与教育有关的诸多问题的解决,如教育资源的组织、分享和推荐,学习者的交互和协同,教育成效的考核和评估等等。因此,如何为软件学科教育提供支撑软件成为一个开放性的问题。
\subsection{软件伦理建设问题}
\label{subsection:10_1_5}
\begin{figure}[!b]
\centering
\includegraphics[width=.8\linewidth]{fig2-10/mainwork.png}
\caption{软件学科教育的主要研究内容}
\label{fig:fig2_10_1}
\end{figure}
在人机物融合时代,计算机软件对人类社会的方方面面产生了重大和深远的影响,也带来一些深层次、前所未有的风险和问题,如私密数据被窃取、软件留有后门、系统受到攻击等等。我们社会还没有建立起针对这些风险和问题的伦理准则和法律体系;软件研究者、开发者和使用者的行为缺乏约束,也没有有效和高效的监管手段,以确保其遵守和履行法律、道德和伦理规范。软件伦理教育没有得到国家、社会和行业、公众等的足够重视。缺乏软件专业背景的人员和大众很难从系统外部及时感知和发现潜在的软件伦理问题。自动化、智能化甚至量子化软件新技术的发展及应用将给人类社会带来更多的未知,评估它们对人类社会产生的长远影响需要对技术本身以及潜在的应用场景有深入的理解,以及足够的前瞻预测能力。
\section{主要研究内容}
针对上述重大挑战问题,软件学科教育需要开展以下诸多方面的研究工作,包括:以“知识普及 + 思维培养”为核心的普及教育(§\ref{subsection:10_2_1});以“复合型 + 创新型”为目的的跨学科教育(§\ref{subsection:10_2_2});以“知识体系+能力培养”为核心的专业教育(§\ref{subsection:10_2_3});以“探究规律 + 方法创新 ”为主体的教育理念和方法改革(§\ref{subsection:10_2_4});以“规范内涵 + 自动检测”为核心的软件伦理建设(§\ref{subsection:10_2_5})。
\subsection{以“知识普及 + 思维培养”为核心的普及教育}
\label{subsection:10_2_1}
\begin{itemize}
\item[$\bullet$] \textbf{软件学科核心认知能力的成长模型和规律及其知识体系}
\end{itemize}
软件学科的认知能力以计算思维为核心,包含抽象思维、表达交流、逻辑分析和推理、计算抽象等,这些能力有其各自的特殊性,相互间存在依赖性。为此,需要深入研究以计算思维能力为核心的认知能力成长模型,探究不同受众认知能力的成长规律。与此同时,这些能力培养所需的知识潜藏在数学、语文、物理、化学、自然科学等课程的知识体系之中。软件学科认知能力的培养和上述知识之间存在横切关系,代表这些知识体系的课程很少与实际的软件及其开发相关联。因此,需要从横切和纵切二个方面,探究并建立起支撑软件学科核心认知能力培养的知识体系。
\begin{itemize}
\item[$\bullet$] \textbf{以计算思维为核心,融合创新思维的系统化认知能力培养方法}
\end{itemize}
人机物融合时代,软件使能的创新是软件学科辐射影响的主要目标,软件学科教育要在培养计算思维能力的同时,强化基于软件来解决问题的创新思维能力的培养。因此,我们需要研究如何将“计算思维”与“创新思维”二者相结合来深化软件学科的普及教育,探究“计算思维+创新思维”融合培养的学习路径,建立起支撑“计算思维 + 创新思维”培养的方法和手段。
\begin{itemize}
\item[$\bullet$] \textbf{适应不同认知水平且贯穿终生的软件学科普及教育方法}
\end{itemize}
普及教育受众的专业和知识背景具有多样化的特点,年龄层次和认知水平有较大的差异性。为此,需要借鉴生态化发展的思路,研究与教育对象的生理、心理和认知相适应的教育教学方法;研究同质生态教育方法和异质生态关联的迁移教育方法;研究如何借助于信息系统(尤其是软件系统)来支持和推广软件学科的普及教育。
\subsection{以“复合型 + 创新型”为目标的跨学科教育}
\label{subsection:10_2_2}
\begin{itemize}
\item[$\bullet$] \textbf{基于“专业学科知识 + 软件学科知识”的跨学科教育知识体系}
\end{itemize}
作为基础学科,软件学科教育需要面向其他的学科专业实现外延式的发展。针对不同专业自身的特点,结合软件学科知识在该专业人才培养中所起到的作用,采取“专业学科知识 + 软件学科知识”的方式来拓展专业知识体系,开展适用于自身专业需求的教学改革,使得相关专业人才具备软件学科的知识并能运用它们来解决特定专业问题。为此需要研究如何将软件学科的知识差异化地融入到相关专业的知识体系之中,实现与相关专业知识的有机融合,实现跨学科知识体系的交叉融合和互补,为跨界人才培养奠定基础。
\begin{itemize}
\item[$\bullet$] \textbf{具有软件学科知识和能力的复合型、创新型和跨界专业人才培养方法}
\end{itemize}
随着软件学科在其他专业领域的不断渗透,在这些学科专业人才培养方案的设计中,必须解决软件学科知识储备不足的问题。由于专业背景和专业思维的差异性,不同学科专业教育对软件学科知识结构的需求和相关课程衔接也不尽相同,因此跨界的软件学科人才培养需要多元化的知识和课程体系,为此需要探究如何实施“因材施教”的教学理念,分析不同专业对软件学科的“个性化”需求,构建专业软件化的新型课程体系,设计差异化的跨界软件学科人才培养方案,以实现软件学科和其他相关学科专业交叉融合,让非软件专业的学生也具备软件学科的思维能力,以满足社会对复合型、创新型的跨界软件学科人才的需求。
软件学科的跨界人才培养也是双向的。软件学科跨界进入其他学科领域的发展趋势愈发明显。在该形式的跨界教育中,教育对象已具备良好的计算思维能力,需要研究他们如何跳出软件学科知识领域的思维定势,强化跨界学科知识的学习,如何以全新的视角建立起软件学科与其他学科间的关联性,探索跨界学科计算的本质,培养适用于跨界专业的计算思维能力。
\subsection{以“知识体系 能力培养”为核心的专业教育}
\label{subsection:10_2_3}
\begin{itemize}
\item[$\bullet$] \textbf{面向多学科交叉融合的软件学科专业教育知识体系}
\end{itemize}
针对人机物融合时代的软件学科特点和人才培养要求,深入研究软件学科与哪些相关学科发生了交叉、交叉的边界和范围是什么;人们对软件的价值取向发生了什么样的变化,这些变化对学科的知识体系提出了什么样的要求;软件学科自身发展带来哪些方面的变化,这些变化处于知识体系的哪些层次和方面;需要研究如何根据产业界的成功实践以及学术界的研究成果来丰富和完善软件学科的知识体系。另外,还需要从软件学科专业人才能力培养的视点,探讨系统能力、解决复杂工程问题能力的培养对知识体系提出什么要的要求。在上述研究的基础上,建立起人机物融合时代面向多学科交叉融合的软件学科专业教育的知识体系,包括知识领域、知识单元、知识点等。
\begin{itemize}
\item[$\bullet$] \textbf{软件学科专业教育的核心能力及其培养方法}
\end{itemize}
创新实践能力、系统能力、解决复杂工程问题能力等是人机物融合时代软件学科专业教育的核心能力。这三类能力的关注点和侧重点有所不同,培养方式和手段也不尽相同。实践无疑是专业教育环节中支撑能力培养的主要手段。为此需要在软件学科的范畴中深入研究创新实践能力、系统能力和解决复杂工程问题能力的内涵、构成和模型,分析不同能力之间的内在关联性,探究能力持续性培养和形成的特点和规律性,探究如何通过渐进式、综合性的实践来促进这三类能力的培养,以及针对能力培养的考评方式和方法。
\subsection{以“探寻规律 + 方法创新”为主体的教育理念和方法改革}
\label{subsection:10_2_4}
\begin{itemize}
\item[$\bullet$] \textbf{软件学科人才培养模型及规律}
\end{itemize}
软件学科教育对象的涉及面广,年龄层次和知识背景差异性大,培养的目的和要求多样化。软件学科教育牵涉多方面的专业和非专业知识,需要强化不同层次的能力和素质培养。这些知识、能力和素质之间存在内在的关联性。为此,软件学科教育需要针对不同的培养对象和目标,深入探究人才培养模型,包括知识体系、能力体系、工程素质等,分析它们在培养过程中所发挥的作用以及相互之间的继承性和依赖性。此外,软件学科人才的成长受多方面因素的影响,包括自身的素质和能力,外在的教育者及合作群体,学习的环境和激励机制,甚至学习过程中所依赖的软件平台(如开源社区)等。为此,需要研究软件学科人才的成长模型,依此来指导教育政策和机制的设计以及平台的建设。
\begin{itemize}
\item[$\bullet$] \textbf{软件学科资源在人才培养中的挖掘和应用 }
\end{itemize}
经过几十年的积累,尤其是近年来开源软件、群智软件开发等的发展,软件学科积累了大量、多样、极有价值的软件资源,如以开源社区为载体的开源代码、知识问答、软件开发历史数据等。软件学科教育需要深入挖掘软件学科资源,系统研究如何在课程教学、实践教学和人才培养过程中有效地应用这些资源,如何将抽象的知识与具体的资源相结合来促进知识的讲授、推动实践教学、培养能力和素养,如何建立起支撑软件学科人才培养的开源教育资源。
\begin{itemize}
\item[$\bullet$] \textbf{群体化学习}
\end{itemize}
借助互联网平台,通过吸引、汇聚和管理大规模的学习者,使得他们以竞争和合作等多种自主协同方式来开展学习将是未来重要学习方式,我们称之为群体化学习。软件学科教育需要充分借助于互联网大众的智慧和理念,施行群体化学习的思想,以促进软件学科人才的大规模、高质量、普及化的培养。为此,基于群智理论和方法,借助于互联网上的大数据分析,研究支持群体化学习的组织结构和协同模型,分析和设计群体化学习的激励机制,探究不同组织结构、协同模型和激励机制对群体化学习成效、质量和受益面等产生的影响及涌现结果,开展基于群体化学习的教育和教学方法的改革。
\begin{itemize}
\item[$\bullet$] \textbf{大规模在线开放实践MOOP}
\end{itemize}
能力和素质培养是软件学科教育的一项主要任务。针对软件学科的发展特点需要研究软件学科人才的能力和素质模型建立不同能力和素质之间的关系分析普及教育、专业教育、跨学科教育等分别需要达到什么样的水平和层次探究软件学科内涵的拓展如何影响能力和素质。实践是支撑能力和素质培养的主要教学途径。依托大规模人群的在线开放实践称为MOOP将成为能力和素质培养的重要趋势也是对MOOC在该方面存在欠缺的有效弥补。为此需要研究支撑能力和素质培养的实践体系建设探究如何将诸如游戏化机制等引入到MOOP之中以激励大众参与和贡献分析针对MOOP的量化表示与评测方法建立起针对能力和素质培养的评价体系与指标。
\begin{itemize}
\item[$\bullet$] \textbf{支撑软件学科教育的软件系统}
\end{itemize}
针对软件学科教育的特殊需求,借助于软件学科资源大数据,交叉诸如人工智能、大数据分析、移动计算等技术,研究支撑软件学科教育的关键软件技术,包括开源社区中学习资源(如开源软件和软件开发知识)的同步和分享技术,针对学习者个性化特点及需求的教育资源推荐技术,实现教育软件与开源社区间互操作和交互技术,基于教育大数据来构建学习者个性化学习路径的方法,对学习者的学习情况和成长进行跟踪和考评的技术等等,并在此基础上研发软件学科教育软件。
\subsection{以“规范内涵 + 自动检测”为核心的软件伦理建设}
\label{subsection:10_2_5}
\begin{itemize}
\item[$\bullet$] \textbf{规范化和可检验的软件伦理内涵}
\end{itemize}
国家、软件行业主管部门应与行业主体、学术团体、社会公众等众多利益相关方通力合作,通过多学科交叉的方式,研究软件伦理的规范化内涵;综合人员、过程、行为、制品、法规等多个方面,研究并制定软件伦理的可解释、可检验的条文和准则,制定相关的法律法规和行业标准。
\begin{itemize}
\item[$\bullet$] \textbf{软件伦理的自动化检测技术和监督方法}
\end{itemize}
研究针对软件开发者行为和制品的软件伦理合规检测技术,尤其是自动化检测技术。例如,面向软件版权保护的代码溯源技术、软件许可证违规使用检测技术,软件及软件使用者恶意和危险行为检测技术等;研究并制定软件伦理的合规监督方法,如过程、规范、标准等,形成覆盖全面、导向明确、规范有序、协调一致的检测和监督技术体系,以快速、高效和准确地发现和修正违背伦理的问题。
\section{本章小结}
在人机物融合时代,随着软件辐射面和影响面的扩大,软件学科的发展和进步,软件学科教育的内涵和外延也在发生改变,它涉及普及教育、专业教育、跨专业教育、教育理念与方法改革等多个方面,面临着一系列重大的问题的挑战,包括:如何针对具有不同认知水平的受众对象开展普及教育?如何根据人机物融合时代特点来深化专业教育?如何加强软件学科与其他学科的融合来实现跨专业的教育?以及如何改革软件学科的教育理念和方法来满足不断增长的人才培养需求、如何应对软件伦理问题等等。为了迎接上述挑战,软件学科教育需开展一系列研究,包括:以“知识普及 + 思维培养”为核心的普及教育、以“复合型 + 创新型”为目标的跨学科教育、以“知识体系+能力培养”为核心的专业教育、以“探究规律 + 方法创新”为主体的教育理念和方法改革、以“规范内涵 + 自动检测”为核心的软件伦理建设。
\bibliographystyle{unsrt}
\bibliography{reflib}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 62 KiB

98
reflib.bib Normal file
View File

@ -0,0 +1,98 @@
@article{aihua2017fast,
title={加快发展和建设新工科 主动适应和引领新经济},
author={吴爱华,侯永峰,杨秋波和郝杰},
journal={高等工程教育研究},
number={1},
pages={1--9},
year={2017}
}
@article{hong2018everything,
title={万物皆可互联, 一切均可编程},
author={梅宏},
journal={方圆},
number={12},
pages={24},
year={2018}
}
@article{huaiming2014complex,
title={复杂软件系统的成长性构造与适应性演化},
author={王怀民,吴文峻,毛新军,丁博,郭长国和李未},
journal={中国科学: 信息科学},
volume={44},
number={6},
pages={743--761},
year={2014}
}
@article{hong2017opensource,
title={开源对软件人才培养带来的挑战},
author={梅宏和周明辉},
journal={计算机教育},
number={1},
pages={2--5},
year={2017}
}
@article{bandyopadhyay2016ict,
title={ICT in Education: Open Source Software and its Impact on Teachers and Students},
author={Bandyopadhyay, Soma and Thakur, SS},
journal={International Journal of Computer Applications},
volume={151},
number={6},
year={2016},
publisher={Foundation of Computer Science}
}
@article{borque2014swebok,
title={SWEBOK v3. 0: Guide to the software engineering body of knowledge},
author={Borque, P and Fairley, RE},
journal={USA: IEEE},
year={2014}
}
@article{computerEducation,
title={计算机教育与可持续竞争力},
author={“计算机教育20人论坛”编写组},
journal={高等教育出版社},
year={2019}
}
@article{xiaoming2019older,
title={“老年编程”的畅想},
author={李晓明},
journal={计算机学会通讯},
volume={15},
number={5},
pages={51},
year={2019}
}
@article{wing2014computational,
title={Computational thinking benefits society},
author={Wing, Jeannette M},
journal={40th Anniversary Blog of Social Issues in Computing},
volume={2014},
year={2014}
}
@article{grover20185th,
title={The 5th Cof 21st century skills},
author={Grover, S},
journal={Try computational thinking (not coding).(March 13). Retrieved from EdSurge News: https://www. edsurge. com/news/2018-02-25-the-5th-c-of-21st-century-skills-try-computational-thinking-not-coding},
year={2018}
}
@article{sommerville2012large,
title={Large-Scale Complex IT Systems},
author={SOMMERVILLE, Ian and CLIFF, Dave and CALINESCU, Radu and KEEN, Justin and KELLY, Tim and KWIATKOWSKA, Marta and MCDERMID, John and PAIGE, Richard},
journal={Communications of the ACM},
volume={55},
number={7},
pages={71--77},
year={2012},
publisher={Association for Computing Machinery}
}
@techreport{northrop2006ultra,
title={Ultra-large-scale systems: The software challenge of the future},
author={Northrop, Linda and Feiler, Peter and Gabriel, Richard P and Goodenough, John and Linger, Rick and Longstaff, Tom and Kazman, Rick and Klein, Mark and Schmidt, Douglas and Sullivan, Kevin and others},
year={2006},
institution={CARNEGIE-MELLON UNIV PITTSBURGH PA SOFTWARE ENGINEERING INST}
}
@article{xinjun2019software,
title={软工程实践教程: 基于开源和群智的方法},
author={毛新军,王涛和余跃},
journal={高等教育出版社},
year={2019}
}