《Linux高级系统程序设计》Advanced Linux System Programming教学大纲
制定时间:2025年4月
一、课程基本信息
(一)适用专业:软件工程
(二)课程代码:3ZN1084A
(三)学分/课内学时:3/48
(四)课程类别:专业教育
(五)课程性质:选修/理论课
(六)先修课程:《计算机科学导论》、《C语言程序设计与应用》、《数据结构》《C++语言程序设计与应用》
(七)后续课程:云应用系统开发技术、软件工程、软件测试
二、课程教学目标
《Linux高级系统程序设计》是面向信创,立足Linux实施软件国产化替代策略中的一门核心专业课,在培养学生创造性思维、综合设计能力和Linux应用系统开发与实践能力方面占有重要的地位。
本课程的主要任务是通过课堂教学、实验教学及项目研究等环节培养学生的创新意识与能力和软件工程科学知识的应用能力,使学生掌握Linux应用与开发的基本理论和基本知识,常用Linux应用与开发的开发和设计,具有基本的Linux操作系统下应用系统的设计能力,以及该类应用系统进行分析、设计和开发的能力,支撑毕业要求中的相应指标点。课程目标及能力要求具体如下:
(一)具体目标
使学生既能清楚地理解Linux应用与开发的工作原理,又能掌握现代主流的应用开发技术,构建和培养出学生完整的系统观念和严谨细致的工作作风。具体细化为:
目标1:Linux系统的概念和发展,了解基于经典Linux操作系统再设计再开发出的操作系统(例如统信、银河麒麟以及等Ubuntu)的优缺点,了解国际Linux市场的基本情况,熟悉Linux系统程序开发的领域。
目标2:较详细地论述Linux系统程序设计的开发环境和工具使用。重点掌握Linux基本命令、Linux开发工具vim,gcc,gbd,make的使用、交叉编译和下载工具的使用。
目标3:掌握Linux系统程序开发平台的搭建,能清楚准确地阐释Bootloader的移植、内核的裁剪和移植以及文件系统(含设备文件)的有关问题。
目标4:掌握Linux操作系统重基于API函数的应用程序的编写(特别是符合POSIX标准的C编程接口的基本知识),重点掌握Shell编程,进程控制、文件读写、进程间通信的常见方法、多线程并发编程(系统调用和特定语言内置的并发库)、基于套结字的网络编程等。
目标5:掌握Linux操作系统下的图形用户界面的编程,重点掌握图形接口(以常见的QT为例)、信号与槽函数机制,数据库的使用,图形动画游戏编程等。
(二)课程目标与毕业要求的对应关系
毕业要求 |
毕业要求指标点 |
课程目标 |
教学单元 |
评价方式 |
1. 掌握本专业必需的数学、自然科学、工程基础和专业知识,能够用于解决软件工程(信创和基于Linux系统软件国产化)领域中的复杂工程问题。 |
1.4:掌握数据结构、程序设计,Linux应用与开发等基础知识,能将其用于软件工程中的系统软件分析与设计; |
目标1 |
Linux开发环境安装和使用。 |
课内实验 大作业 |
2. 能够应用数学、自然科学和工程科学的基本原理,识别、表达、并通过文献研究分析软件工程领域中的复杂工程问题,以获得有效结论。 |
2.5:能运用基本原理分析软件工程领域的复杂工程问题的影响因素,证实解决方案的合理性 |
目标2 |
Linux基本命令、Linux开发工具vim,gcc,gbd,make的使用、交叉编译和下载工具的使用。 |
课内实验 大作业 |
3. 能够设计针对较复杂工程问题设计解决方案,设计满足特定需求的应用系统,并能够在设计环节中体现创新意识,考虑社会、健康、安全、法律、文化以及环境等因素。 |
3.2:在安全、环境、法律等现实约束条件下,能够进行应用系统的方案设计和系统集成,能优选方案,体现创新意识; 3.4:能够进行应用系统的程序设计; |
目标3 |
Bootloader的移植、内核的裁剪和移植、根文件系统的原理和特征。 |
课内实验 大作业 |
4.能够基于科学原理,采用适当的工程方法对复杂工程问题进行研究,包括设计实验、分析与解释数据、并通过信息综合得到合理有效的结论。 |
4.1:能够采用正确的实验方法分析应用系统的功能、性能、检测参数和控制参数; |
目标4 |
进程控制、文件读写、进程间通信、多线程编程、网络编程,特别是shell编程等。 |
课内实验 大作业 |
5. 能够针对应用领域的复杂工程问题,分析、选择与使用恰当的技术、资源、现代工程工具和信息技术工具,实现对复杂工程问题的预测与模拟,并能够理解其局限性。 |
5.1:能够针对应用领域的复杂工程问题,分析并选择恰当的传感器、控制器软硬件工具; |
目标5 |
掌握QT图形接口、信号与槽函数机制,数据库使用,图形动画游戏编程等。 |
课内实验 大作业 |
三、教学内容与方法
(一)教学内容及要求
序 号 |
教学单元 |
教学内容 (知识点) |
学习产出要求 |
推荐学时 |
推荐教学方式 |
支撑 教学目标 |
备注 |
1 |
Linux系统概述 |
主流Linnux操作系统的优缺点,Linux系统应用程序的开发设计方法。 |
(1)了解主流Linux操作系统的优缺点; (2)熟悉Linux系统应用程序的开发设计方法。 |
2 |
讲授 |
目标1 |
|
2 |
Linux开发环境和工具使用 |
Linux基本命令、Linux开发工具vim,gcc,gbd,make的使用、交叉编译和下载工具的使用。 |
(1)理解并Linux系统下开发的环境和工具使用; (2)重点掌握Linux基本命令、Linux开发工具vim,gcc,gbd,make的使用、交叉编译和下载工具的使用 。 |
8 |
讲授+讨论+实验 |
目标2 |
实验1 |
3 |
Linux系统的内核源代码阅读与文件系统 |
内核内核源代码阅读和分析,文件系统等 |
(1)了解集成部署Linux系统; (2)掌握内核的裁减,内核移植、交叉编译、内核调试、启动程序Bootloader编写; (3)掌握根文件系统制作; (4)必要的驱动开发基础与Linux源代码分析和阅读。 |
6 |
讲授+讨论+实验 |
目标3 |
实验2 |
4 |
Linux系统程序设计 |
系统编程、文件I/O、多进程和多线程、网络编程等编程。 |
(1)了解文件I/O的基本概念; (2)了解Linux下的数据库编程; (3)掌握系统编程、编写基于文件I/O操作的应用、掌握多进程和多线程应用程序的编写、掌握网络编程应用程序的编写(基于UDP,TCP等协议)。 (4)掌握shell编程。 |
20 |
讲授+讨论+实验 |
目标4 |
实验3 实验4 实验5 |
5 |
图形用户界面的开发 |
Qt开发模式简介;交叉编译的Qt开发环境的建立;Qt编程实践。 |
(1)了解Qt开发模式; (2)掌握Qt开发图形用户界面。 (3)掌握图形动画游戏编程等。 |
12 |
讲授+讨论+实验 |
目标5 |
实验6 实验7 |
(二)教学方法
1.课堂讲授
(1)采用启发式教学,激发学生主动学习的兴趣,培养学生独立思考、分析问题和解决问题的能力,引导学生主动通过实践和自学获得自己想学到的知识。
(2)在教学内容上,系统讲授Linux开发环境和工具使用,平台的搭建,系统的移植与裁剪,应用程序编写,图形用户界面的开发技术等基本理论、基本知识和基本方法,Linux系统中应用软件的方案设计,使学生能够系统掌握Linux应用开发技术基础知识。
(3)在教学过程中采用电子教案,多媒体教学与传统板书、教具教学相结合,提高课堂教学信息量,增强教学的直观性。
(4)理论教学与工程实践相结合,引导学生应用数学、自然科学和工程科学的基本原理,采用现代设计方法和手段,进行机构分析,培养其识别、表达和解决软件工程专业相关工程问题的思维方法和实践能力。
3.实验教学
实验教学是Linux系统程序设计课程中重要的实践环节,目的是培养学生掌握进程间通信技术的编程和使用方法,解决应用系统设计开发中面对复杂工程问题时的应对策略和问题处理能力。课程必做实验8个,包含验证性实验6个,综合性实验2个,各实验按照实验指导书的要求学生独立完成,并提交实验报告。
四、考核及成绩评定
(一)考核内容及成绩构成
课程考核以考核学生能力培养目标的达成为主要目的,以检查学生对各知识点的掌握程度和应用能力为重要内容,包括平时考核和期末考核两个部分。平时考核采用实验方式评定学生成绩;期末考核采用大作业评定学生成绩。各课程目标的考核内容、成绩评定方式、目标分值建议如下:
课程目标 |
考核内容 |
成绩评定方式 |
成绩占总评分比例 |
目标成绩占当次考核比例 |
学生当次考核平均得分 |
目标达成情况计算公式 |
目标1:了解基于Linux设计开发的各种操作系统的特征和发展,了解国际Linux市场的基本情况,熟悉Linux系统程序设计的开发领域。 目标2:较详细地论述Linux开发环境和工具使用。重点掌握Linux基本命令、Linux开发工具vim,gcc,gbd,make的使用、交叉编译和下载工具的使用。 |
Linux应用与开发基本理论、工具 |
大作业 |
10% |
100% |
B1 |

|
目标3:掌握Linux系统中应用开发平台的搭建,能准确阐述Bootloader的移植、内核的裁剪和移植、根文件系统的有关知识,特别是文件权限与文件守护。 |
实验结果、结论分析,实验总结及报告等 |
实验 |
6% |
100% |
A1 |

|
掌握linux内核体系结构、支撑技术相关内容 |
大作业 |
10% |
100% |
B2 |
目标4:掌握Linux环境下基于API函数的应用程序的编写,重点掌握进程控制、文件读写、进程间通信、多线程编程、网络编程和shell编程等。 |
实验结果、结论分析,实验总结及报告等 |
实验 |
18% |
100% |
A2 |

|
掌握的进程控制、文件读写、进程间通信、多线程、网络相关内容、编程应用能力以及shell编程 |
大作业 |
20% |
100% |
B3 |
目标5:掌握Linux系统中图形用户界面的编程,重点掌握QT图形接口、信号与油槽机制,数据库使用,网络编程以及游戏动画编程等。 |
实验结果、结论分析,实验总结及报告等 |
实验 |
16% |
100% |
A3 |

|
解决应用系统设计开发中遇到的较复杂工程问题的实践能力、口头和文字表达能力 |
大作业 |
20% |
100% |
B4 |
总评成绩(100%)= 实验(40%)+大作业(60%) |
100% |
—— |
—— |
|
(二)平时考核成绩评定
实验:必做实验8次,支撑目标3、目标4、目标5,共占总评分40%,目标3占6%、目标4占18%、目标5占16%。对应目标的评分标准如下:
对应目标 |
目标3:能够运用提供的实验套件根据所学知识设计实验,制定方案,搭建系统,顺利完成实验。 |
目标4:能根据设计实验,编写程序完成实验内容,实现实验结果 |
目标5:能够撰写实验报告、设计报告、实验结果分析等 |
考查点 |
实验操作及方案 |
实验结果 |
实验报告 |
成绩比例 |
20% |
60% |
20% |
评分标准 |
100% 至 90% |
能够根据实验要求设计较好的实验方案,能正确熟练完成实验。实验态度认真,操作能力强,操作、记录规范,沟通、协作很好。 |
实验功能完全实现,有扩展功能,并且运行正常,实验方案有自己独到的思路与见解。 |
有很强的总结实验和撰写报告的能力,实验报告内容完整、正确,有很好的分析与见解。文本表述清晰,书写工整,格式规范。 |
89.9% 至 80% |
能够根据实验要求设计良好的实验方案,能正确完成实验。实验态度认真,操作能力强,操作、记录规范,沟通、协作良好。 |
实验功能完全实现,并且运行正常,实验方案有自己的思路与见解。 |
有较强的总结实验和撰写报告的能力,实验报告内容完整、正确,有较好的分析与见解。文本表述较为清晰,书写比较工整,格式规范。 |
79.9 至 70% |
能够根据实验要求设计实验方案,能正确完成实验。实验态度比较认真,操作能力较强,操作、记录规范,沟通、协作正常。 |
实验功能基本实现,并且基本运行正常。 |
有良好的总结实验和撰写报告的能力,实验报告内容较完整、正确,有自己的分析与见解。文本表述较为清晰,书写较为工整,格式较为规范。 |
69.9% 至 60% |
能够根据实验要求设计实验方案,完成实验。实验态度不太认真,操作能力一般,操作、记录基本规范,有沟通、协作。 |
实验功能部分实现,并且运行正常。 |
有一定的总结实验和撰写报告的能力,实验报告内容基本完整、正确,没有分析或见解。文本表述基本清晰,书写基本工整,格式基本规范。 |
59.9%至 0 |
动手操作能力差;操作不规范,实验中不能与合作者进行沟通、协作,不能正确完成实验。 |
实验功能基本没实现,并且运行不正常。 |
总结实验和撰写报告的能力差,实验报告内容不完整、错误多。文本表述不清晰,书写潦草、格式不规范。 |
五、参考学习资料
推荐教材和参考资料:
参考资料1:(美)K.C·王(K.C.Wang)著;肖坤译.Unix/Linux系统编程[M].北京:机械工业出版社,2020,ISBN:978-7-111-65671-5
参考资料2:(美)史蒂文斯,(美)拉戈著.UNIX环境高级编程 第3版[M].北京:人民邮电出版社,2014,ISBN:978-7-115-35211-8
参考资料3:(德)MICHAELKERRISK著;孙剑,许从年,董健等译.Linux/UNIX系统编程手册 上[M].北京:人民邮电出版社,2014 ISBN:7-115-32867-0