Skip to content

课程信息

简介

高级语言程序设计(高程) 是一门通识性质的专业基础课。 通过本课程的学习,你将掌握 C/C++ 的基本语法,具备基本的问题求解、系统设计与结构化编程能力,形成初步的计算思维与抽象思维。

“高级”?

课程名字中的“高级语言”是一个专有名词,指的是具有较高抽象层次、更接近于人类而非机器的编程语言。本课程所讲授的 C/C++,以及几乎所有日常能见到的编程语言(Python/Java/JavaScript/C#/Golang/Rust……)均属于高级语言。因此,尽管课程名中带有“高级”,但本课程并非“高级程序设计”,而是纯粹的入门课。

本课程不包含的内容

本课程作为一门基础性与导论性的高级语言程序设计课程,其核心目标是构建坚实的编程基础与底层计算思维。受限于课程容量与核心教学目标,以下内容不属于本课程的教学范围:

  • 算法竞赛式题目训练:本课程的重点在于教授如何正确、规范地使用语言特性解决典型的工程问题,并理解其背后的计算机系统原理。我们不会涉及以追求极端性能或奇巧语法为核心的算法竞赛题。课程的练习与项目设计旨在巩固基础知识并培养工程实践能力,而非应试或竞赛技巧。

  • 现代 C++(C++11 及以后的新标准)特性:受限于课程容量,本课程的教学将主要聚焦于 C++ 中与 C 语言高度兼容的经典部分(常被称为“C with Classes”)。诸如智能指针、Lambda 表达式、移动语义、元编程等现代/高级 C++ 特性将不会涉及。

  • 现代软件工程协作工具与流程:虽然课程会渗透模块化、可维护性等重要的软件工程思想,但本课程主要关注通用知识与思维的构建,不会系统性地讲授具体的现代开发工具链(如 Git 版本控制系统、CI/CD 持续集成与部署)或敏捷开发等团队协作流程。

建议学有余力且对上述内容感兴趣的同学,在牢固掌握本课程内容的基础上,通过选修其他高级课程或利用丰富的在线资源进行自主拓展学习。

课程政策

学术诚信

学术诚信是大学教育的基石,也是每位学生应恪守的基本学术道德。本课程秉持最高的学术标准,对任何形式的学术不端行为,尤其是抄袭行为,采取零容忍政策

本课程中,抄袭行为包括但不限于:

  • 直接抄袭:逐字或几乎逐字地使用他人(包括同学、往届学生、网络来源、出版物等)的代码、文字。

  • 改述抄袭:对他人成果的句式、结构或措辞进行修改,但其核心逻辑、架构或创意仍完全源自他人。

  • 允许他人抄袭:主动将自己的作业(无论是当前版本或历史版本)提供给他人抄袭,同样构成严重的学术不端行为。

本课程将使用多种手段主动检测抄袭行为,包括但不限于专业的检测工具、文本比对软件以及人工审查。一旦确认存在抄袭行为,将根据情节严重程度,依据大学学术诚信相关政策及本课程规定,进行严肃处理,视情节轻重,可能后果包括但不限于:相关作业全部记为零分并额外扣除总分、本课程成绩直接判定为不及格上报本科生院等。此外,课程可能会对事件及处理结果发布通告,以起到警示和教育作用。

我们制定此严格政策,并非意在恐吓,而是为了:

  • 捍卫公平:确保每一位学生的成绩都能真实、公正地反映其个人努力与学术水平。

  • 保护教育价值:学习的真正价值在于克服困难、独立思考的过程。抄袭行为直接剥夺了你通过实践获得成长的关键机会。

  • 维护学位声誉:你所获得的学位的价值,与整个学术共同体坚持诚信标准的承诺息息相关。

我们强烈建议,若你在课业中遇到困难,请通过正确渠道寻求帮助:主动与讲师、助教沟通,参加答疑时间,或与同学进行仅限于思想交流(而非代码/答案交换)的讨论。

请各位同学珍惜自己的学术声誉,尊重他人的智力劳动,与我们共同守护一个公平、诚实、充满挑战但也回报丰硕的学习环境。

DANGER

请务必严肃对待学术诚信问题,勿谓言之不预也

使用生成式人工智能

生成式人工智能指能产生文字、图像或其他媒体以回应用户输入的人工智能系统。ChatGPT、DeepSeek 等 大语言模型 的出现,为我们的学习提供了强大的辅助工具,但不恰当的使用也会造成负面效果。

合理使用大模型

大模型是很好的辅助理解知识的工具,我们鼓励你使用大模型来理解知识。你可以让它用不同的比喻来解释一个概念,或者总结一个知识点的核心要点。这种有针对性的使用能极大地提升你的学习效率。

然而,我们不建议你使用大模型来完成编程作业。高程课程的一大目标是培养大家独立编写和理解代码的能力。这种能力需要你亲自动手,自己完成作业来逐步构建。只有掌握了这项能力,你才能在未来更高效地使用大模型,并具备分辨其错误的能力。(使你有能力检查出大模型犯下的错误,而不是只会跟着大模型走)

特别地,强烈建议不要使用大模型来检查程序中的错误(debug)。大模型并非完美无缺,相反,它经常犯错。如果你在不完全具备检查错误的能力时使用大模型来检查错误,他很有可能给你一个“看似正确”的解决方案,但实际上引入新的、更难发现的逻辑错误。过于依赖大模型很有可能让你在某一天陷入这样的循环:

plain
拷贝大模型的代码 --> 运行 --> 报错
     ^                        |
     |                        |
     |                        |
      -- 拷贝错误信息给大模型 --

检查、调试程序的能力是课程希望培养的核心能力。调试程序的过程也能有效加深对知识的掌握。不要将这个宝贵的过程假手大模型!

对提交的代码负责

高程课程不禁止使用大模型辅助完成作业。然而,应当注意:

  • 你是代码的唯一责任人。课程不接受以“使用大模型导致了错误”为理由的申诉。如果你与其他同学使用了相同/类似的提示词,导致大模型输出了雷同的结果,你需要自行承担风险。
  • 严格遵循作业要求。高程课程的编程作业中不允许使用未教学的内容,如果在编程作业中使用了未教学的内容,将被扣除当次作业的全部分数,因此,在使用大模型辅助编程时,请一定确保你能看得懂它给出的代码并且代码中没有未教学的内容。(否则,它很有可能使用不允许使用的知识,即便你在提示词中多次强调也一样)
额外的建议

此外,我们还有一些关于使用大模型的通用建议。

  • 准确描述问题

大模型不是神。它需要清晰、详细的信息才能给出高质量的回答。作为使用者,你的提示词(prompt)越精确,大模型给出的回答就越有效。避免使用含糊不清的措辞,让大模型去猜你的意图。

反例: “帮我写一段代码来计算所有偶数的和。”

正例: “请用 C++ 语言编写一个函数。该函数接收一个整数列表作为输入,并返回其中所有偶数的和。请在代码中添加注释。”

  • 不要盲信大模型给出的内容

正如前文多次提到的,大模型不是完美无缺的,恰恰相反,它经常产生幻觉。在使用大模型之前,请一定一定确保你有验证它的正确性的能力。如果可能,请多多验证其内容的真实性。高程课程中也会着重培养动手验证的能力,这是一项必不可少的技能。

反例: 某次编程作业要求统计一段文字中“高程”一词出现的次数。大模型生成了一段代码,但这段代码在特定情况下会漏掉统计。当你发现结果不对,向大模型反馈时,它会“坚持”自己的代码是正确的,并提供一些无效的修改或解释。如果你没有独立调试和验证的能力,将被大模型误导,并提交一份有缺陷的作业。

正例: 某次编程作业要求统计一段文字中“高程”一词出现的次数。大模型生成了代码,但你发现代码统计的结果不对。你没有直接听信大模型“我的代码没问题”的解释,而是自己逐行检查代码逻辑,并用不同的测试用例进行验证。最终,你发现了大模型在处理某些边界条件时存在的漏洞,并自己修复了代码,得到了正确的结果。

教材与课程资源

  • 本课程官方指定教材为 C++ Primer Plus中文版(第6版)(ISBN: 978-7-115-52164-4): 课本信息页
  • 课程安排中不会直接使用课本,因此并不强制购买,可以使用 电子版 代替。
  • 不建议购买习题与解答类教辅。

每章的 课件 会在上课前发布,供同学们预习/复习使用。 同时,网站还会不定期将学习/作业中的疑难问题 汇总解答,并提供 扩展阅读,以补充超出课程要求范围、但对建立完整知识体系有帮助的重要内容。