《高级语言程序设计》是计算机大类/软件工程大类的一门重要的专业基础课程。设置本课程的主要目的是使学生掌握用计算机分析和解决问题的思维方法以及程序设计的基本方法,建立从问题到算法再到程序的认知,在从问题到算法再到程序的问题求解及程序构造和实现的过程中理解高级语言的基本构造要素以及算法和数据结构在程序构造中的作用,具备良好的编程素养,以及综合运用所学程序设计语言和程序设计方法,设计、构造和应用计算系统求解科学或工程问题的程序设计和实现能力,为后继课程的学习和将来从事软件开发、解决复杂工程问题奠定编程能力基础。
课程具体目标如下:
课程目标1:了解软件开发的基本过程,了解在常用集成开发环境下编辑、编译、链接、运行和调试程序的基本方法,具备利用集成开发环境的调试工具测试和调试程序的基本能力;
课程目标2:了解程序设计的方法学基础和问题求解基础,掌握一种高级语言的基本构造要素和程序设计的基本思想,在从问题到算法再到程序的构造和实现过程中,了解顺序、选择和循环三种基本控制结构在构造结构化程序中的作用,以及分治、穷举、递推/迭代、递归等常用策略在问题求解中的作用,具备利用程序设计基本方法和常用问题求解策略解决科学或工程问题的程序设计和实现能力;
课程目标3:了解程序设计的算法和数据结构基础,了解经典的排序和查找算法,以及利用数组、结构体和指针等实现线性表的顺序存储、链式存储和索引存储等简单的数据结构,了解静态数据结构和动态数据结构的不同特点和适用场景,在程序设计和实现的过程中理解和体会算法和数据结构在问题求解中的作用,具备针对具体实际问题选择和应用恰当的算法和数据结构完成程序的设计并在计算机上实现的能力;
课程目标4:了解运用自顶向下的模块化程序设计方法进行系统设计和实现的过程,了解编码风格、防御式编程和程序的健壮性对设计高质量程序的重要性,具备良好的编程素养,具备综合运用所学程序设计语言、程序设计方法和程序调试技巧设计小型数据管理系统的能力。
本课程成绩满分100分。由以下部分构成:
考核环节 | 建议分值 比例 | 考核/评价细则 | 对应的课程目标 |
(1)自主式作业 | 20% | 由系统随机抽题的自主式作业,占总成绩的20%。 学生登录面向学生自主学习的高级语言能力测试平台(SSE),自主选择知识点和难度系数,平台自动从后台的题库系统中随机抽取相应知识点和难度系数的题目给学生,学生在线上限时完成并提交代码,获得作业分。分数评定和奖惩规则如下: 1)根据学生上机测试成绩柔性定制个人作业满分线,使其个人作业满分线与其上机测试总成绩成反比。个人作业满分线=(实验上机随堂测试满分线-实际上机随堂测试总分)*100。 2)若未达到自己的个人作业满分线,则按下面公式计算:个人实际刷题分数 / 个人满分线 * 作业满分20分。 3)随堂测验不及格者,要扣除一定量的作业分(相当于提高其个人作业满分线)。 4)在习题市场中自主设计有创意的题目或找错题,可减免一定量的作业分(相当于降低其个人作业满分线)。 | 课程目标1 至课程目标3 |
(2) 开放式实验大作业 | 20% | 开放式实验大作业,占总成绩的20%。 实验程序和实验报告的综合成绩由学生在SPOC里互评,教师对学生互评结果进行随机抽查,对于不合理的分数可以由教师重评,取代学生的互评分。未在规定的截止时间内在SPOC中提交实验程序和报告,按0分计。未在规定的截止时间内在SPOC中完成互评,扣除一定的互评分。 | 课程目标1 至课程目标4 |
(3) 实验上机随堂测试 | 50% | 实验上机随堂测试,占总成绩的50%。 第2次~第4次实验课,实验上机随堂测试1个学时,试卷点评1个学时,剩余1个实验学时进行个性化辅导答疑。 每次上机随堂测试必做题满分为50分(另有附加分5分),总计考5次,最后取5次测试的平均分作为实验上机测试的总分。实验上机测试内容覆盖选择结构、循环结构、函数、穷举/递推/迭代/递归算法、数组、排序查找算法、字符串/指针、结构体/链表等。因故缺考者不给补考机会,当次考试成绩按0分计。 第1次实验课熟悉系统环境,进行模拟演练,仅安排2个学时。剩余的5个学时,分别用于实验研讨和实验大翻转。 | 课程目标1 至课程目标3 |
(4) 实验小班研讨 | 10% | 实验小班研讨,占总成绩的10%。 利用2个实验学时,采用“生讲生评、互动研学的方式”进行实验小班研讨,建议安排在研讨型教室进行。 教师先发布候选的研讨主题,学生进行预选,根据预选结果选择报名人数最多的2个主题,然后学生以4~6人组成一个讨论小组,30~40人构成1个研讨小班,每个小组抽签选择一个研讨主题,相同主题的小组在同一个小班中进行研讨,每个小班研讨1个学时,每个学生至少参加一个主题的研讨。学生课前查阅资料,课上进行研讨和成果分享。其他小班的同学可以不参加,也可以旁听和提问,但不参加小组互评。 每位参加研讨的学生的分数,由两部分构成:研讨分=组间互评分+组内互评分,各占5分,组间互评分由相同小班的其他组同学在SPOC中互评打分,组内个人互评分由每个组的组长根据个人贡献大小确定,相同分数的同学不能超过2人。同在一个小班的其他小组必须提问,如果不提问则扣掉其小组互评分,课后每个小组网上提交1份研究报告(在报告中给出小组内学生的排名)。 可供选择的研讨主题包括但不限于: (1)圆周率计算程序PK。 (2)定积分计算程序PK。 (3)求方程根程序PK。 (4)冒泡改进算法程序PK。 (5)各类游戏设计程序PK。 (6)小型数据库信息管理系统程序PK。 (7)回溯算法及其在人工智能中的应用。 (8)动态规划算法及其在人工智能中的应用。 (9)最短路径算法及其在人工智能中的应用。 (10)分形艺术、计算机动画或图像处理。 (11)其他。 |
|
(5)附加分 | 0-15分 | (1)实验上机随堂测试获得附加题的附加分,最多5分。 (2)参加期末的“实验课堂大翻转、创意程序大比拼”,可以获得1~10分的附加分。 利用3个实验学时,采用“生讲生评、互动展学的方式”进行“实验课堂大翻转、创意程序大比拼”,建议安排在大教室进行。学生自愿组队(最多3人)、自选主题,通过查阅资料和自学相关内容,以团队合作方式,综合运用所学程序设计语言、程序设计方法和程序调试技巧,选择和应用恰当的算法和数据结构,采用模块化程序设计方法,设计和实现一个项目驱动的综合应用程序。制作ppt,在实验课上现场讲解设计思路和创新点并演示程序6-8分钟。2-4分钟学生提问或点评。全班同学现场投票和计票,按票数从低到高排序依次给每个小组1-10分。只要报名参加翻转,即使票数为0,也至少能得1分。小组成员的分数根据组内排名依次在小组分数的基础上乘以不同的系数。 | 课程目标4 |
课程最终成绩 = (1)+(2)+(3)+(4)+(5) |
开放式实验大作业互评标准:
1) 根据项目选题难度和代码实现难度确定起评分。学生成绩管理系统V1.0、V2.0、V3.0、V4.0、V5.0、V6.0对应的起评分分别为10分、11分、12分、13分、14分、15分。用链表和文件实现学生成绩管理系统V6.0,起评分为16分。
2) 根据实验程序完成质量确定是否加分,根据实验反思报告质量确定是否扣分。
加分原则如下:
1) 对程序有优化,例如随机生成学生数据信息,提高了程序的健壮性,增加了增删改学生记录、密码认证、模糊查询、考勤、学分绩、游戏等特殊功能和趣味性元素,根据优化代码的难度酌情加1-5分。
2) 对于独立设计并完成的课外综合应用程序,根据选题的新颖程度、实现难度、代码规模设置起评分,可参考同等难度的学生成绩管理系统的起评分,在起评分基础上酌情加1-5分。例如,若同样使用了结构体和文件编写程序,则起评分为15分,与V6.0的起评分相同。
扣分原则如下:
1) 实验反思报告中没有反思内容(反思内容包括:程序编写过程中遇到了哪些问题,如何解决的,哪些问题还没解决,哪些部分今后可以考虑改进,收获和体会等),扣5分。
2) 问题反思不到位,收获和体会不真实可信,扣1分。
3) 报告撰写不认真,格式排版不规范,扣1分。
4) 流程图有错误,或者程序有bug,扣1分。
5) 代码风格不好,缺少函数和重要语句的注释,变量名和函数名不符合命名规范(例如用汉语拼音命名),没有对齐与缩进,扣1分。
6) 没写解决问题的过程和方法,或者解决问题的过程和方法不真实可信,扣1分。
7) 程序的优化部分雷同,或者实验报告中出现雷同内容(包括流程图、代码、反思和学习体会等),一律0分。
以上加分和扣分累计到满分线20分封顶,不再额外加分。
大学计算机基础
[1] 苏小红,王宇颖,孙志岗.C语言程序设计(第3版)[M].北京:高等教育出版社.2015
[2] 苏小红,王宇颖,孙志岗.C语言程序设计学习指导(第3版)[M].北京:高等教育出版社.2015
相关链接:
Codeblocks 下载: https://www.codeblocks.org/
SSE随机抽题题库系统: https://sse.hit.edu.cn/train/login.aspx