程序设计基础

第〇章 课程概述

课程介绍(1)

程序设计基础,即C语言程序设计

面向计算机科学与技术一年级学生

最重要的一门专业基础必修课

为什么要学C语言?

有了人工智能,还要C干嘛?

人工智能都是用Python的,为什么还要学“C”?

先不谈代码...

来看图

你是否感受过...

投票见超星课堂

  • AI响应很慢,需要“思考”很久?
  • 手机运行AI程序,机身明显发烫?
  • 自动驾驶系统,零点几秒的延迟意味着什么?

这背后,是大量的计算冰冷的性能极限

C语言在其中扮演的角色是什么?

编程语言到底是什么?

编程语言是是一种我们(人类)与计算机沟通的“协议”“语言”

人类 vs. 计算机

人类语言

  • 模糊的
  • 有歧义的
  • 依赖上下文
  • 例如:“把大象放进冰箱”

计算机语言 (二进制)

  • 精确的
  • 无歧义的
  • 逻辑严密的
  • 例如:01001000 01101001

我们需要一个翻译官,而编程语言就是这个翻译官能听懂的语言。

计算机系统

如果把计算机系统比作一栋大厦,C语言在哪一层?

C语言:核心承重结构

  • 向上支撑: 为Python、Java等高级语言提供高性能的解释器和虚拟机 (例如:Python解释器就是C语言写的)。
  • 向下沟通: 直接与操作系统内核、驱动程序、硬件对话,是编写系统级软件的首选语言。
  • 学会C,你将从“应用开发者”获得成为“系统架构师”的潜力。

AI时代的“C语言”

C语言在AI领域,具体扮演哪些无可替代的角色?

1. 高性能计算核心

AI的核心是海量数学运算(矩阵、向量)

Python负责“发号施令”(构建网络),C++/CUDA负责“冲锋陷阵”(执行计算)

2. 系统与硬件的桥梁

将GPU的性能发挥到极致

CUDA是NVIDIA提供的类C语言的扩展,用于编写GPU程序,指挥多个GPU核心并行工作

3. 边缘AI与嵌入式

在资源有限的硬件系统中运行

在无人机、智能摄像头、自动驾驶芯片上,代码的体积和效率是决定因素。C语言编译出的程序,小、快、省,是唯一的选择。

课程介绍(2)

学分 3+1.5,周课时3+3,总课时48(理论)+48(实验)

上课时间 -- 认真看课表

课程目标

  • 了解高级程序设计语言的结构
  • 理解计算思维的思想和方法
  • 掌握基本程序设计的过程和技巧
  • 具备基本的分析问题和利用计算机求解问题的能力

计算机求解问题(1)

计算机求解问题的一般步骤:

  1. 分析问题
  2. 建立数学模型
  3. 选择、设计算法
  4. 编程实现
  5. 结果分析

计算机求解问题(2)

课程学习

学什么?

  • 会看代码?
  • 会写代码?
  • 会创作代码?

练习的四个层次

练习的一般要求

  • 范例任务 -- 重复上课内容
  • 补全任务 -- 关键代码填空
  • 逆向任务 -- 给出完成后的样子,分析实现
  • 独立任务 -- 独立完成代码

对应的编程特点

  • 能看懂和调试别人的代码
  • 能在别人的代码基础上进行适当改写
  • 能把多段已有的代码组合起来实现需要的功能
  • 自己动手编写代码实现特定功能需求

学习要求

  • 掌握程序设计语言的基本知识
  • 掌握常用算法
  • 具备初步程序设计能力

编程能力培养

  • 阅读、探究式学习
  • 分析、综合、表达
  • 教材/课件/程序
  • 上机编程,第一天开始,持之以恒,贯穿始终
  • $$1.01^{99} vs 0.99^{99}$$

学习方法

  • 预习,教材、MOOC、练习
  • 课堂,讲授、讨论、练习、演讲
  • 复习,教材、参考资料、MOOC、讨论、练习

如何尽快学会用C语言进行程序设计

  • 快速入门,了解程序设计语言,认识C语言
  • 循序渐进,模仿、改写、编写的缟程实践
  • 逐步深入,领会和掌握程序设计的基本思想与方法

学习内容组织

以程序设计贯穿各主题,快速入门、循序渐进、逐步深入

课程考核(1)

《程序设计基础》
总评成绩=期末卷面成绩*50%+阶段上机测试*40%+平时成绩*10%

平时成绩,包括课堂签到、问答、交流等

《程序设计基础实验与课程设计》
总评成绩=上机考成绩*50%+刷题练习情况*35%+大程序作业*10%+C语言在线课程学习*5%

关于教材

关于参考教材

关于网络资源

关于课程网站

所有的课件、课程资料和相关源代码会分别放在网站https://liyi1003zcmu.github.io和课程网站程序设计基础

Any Questions?