# 程序设计概论 **Repository Path**: fwqcuc/intro ## Basic Information - **Project Name**: 程序设计概论 - **Description**: CUC《程序设计概论(计算思维)课程》仓库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 4 - **Created**: 2021-10-20 - **Last Updated**: 2025-04-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 《程序设计概论(计算思维)》教学大纲 ## 一、课程基本信息 授课对象:网络空间安全、计算机科学与技术、数据科学与大数据技术 开课学期:大一秋季学期 学分/学时:4/64 课程简介: 为C语言、C++语言、Java程序设计、Python程序设计、Web前端开发等等编程课程的学习建立共性基础,为程序设计相关课程学习的通用概论和导学。在具体学习各种编程语言之前,掌握通用的方法论和共性技术。课程讲解各种编程语言的关系、各类编程语言的应用场景。讲解系统架构、软件基础原理,程序设计模式和编程思想。同时建立学生的计算思维。 ## 二、课程教学目的和要求 面向计算机类相关专业开设,如计算机科学与技术、网络空间安全、大数据科学与计算等对编程能力要求较高的专业。本课程作为各类编程课程(C语言、C++语言、Java程序设计、Python程序设计、Web前端开发等)的通用概论和导学。帮助学生理清各种编程语言的关系、了解各类编程语言的应用场景。在具体学习各种编程语言之前,掌握通用的方法论和共性技术,学习程序设计的模式和思想。打破语言界限,以更高的视角,指引学习入门。也为四年学习之后的融会贯通打下基础。同时建立学生计算思维,了解计算机底层工作原理,使学生具备将计算机学科解决问题的方式运用于其他学科日常生活中的能力。 ## 三、教学内容与学时分配 **第一章:软件是如何运行的(2课时)** 重点内容:概述软件原型的基本原理、介绍课程章节设置。简要介绍CPU、机器指令和汇编语言。 **第二章:常见编程语言及其运行原理(2课时)** 重点内容:介绍常见的编程语言,如C、C++、Java、Python、Go、JavaScript等的基本运行原理,让学生对各种语言有基本认识。 **第三章:C语言程序设计概论(3课时)** 重点内容:介绍C语言的发展历史、主要特性、基本原理、搭建基本的C语言开发环境、编写源代码、编译链接程序、运行程序,C语言的集成开发环境,在Linux系统中使用C语言开发,在Windows系统中使用C语言开发。C语言学习的主要方法和参考教程。 **第四章:Java程序设计概论(3课时)** 重点内容:介绍Java语言的发展历史、主要特性和基本原理,与C语言的不同和相对C的优缺点。搭建基本的Java语言开发环境、编写源代码、编译链接程序、运行程序,Java语言的集成开发环境,在C语言学习的主要方法和参考教程。 **第五章:Python程序设计概论(3课时)** 重点内容:介绍Python语言的发展历史、主要特性和基本原理,与C和Java语言的不同和相对C和Java的优缺点,介绍包管理机制等。搭建基本的Python语言开发环境、编写源代码、运行程序,Python语言的集成开发环境,在Python语言学习的主要方法和参考教程。 **第六章:Go语言程序设计概论(3课时)** 重点内容:介绍Go语言的发展历史、主要特性和基本原理,与其他几种语言的不同和相对其他几种的优缺点。搭建基本的Go语言开发环境、编写源代码、编译链接程序、运行程序,Go语言的集成开发环境,在Go语言学习的主要方法和参考教程。 **第七章:编译型语言与非编译型语言(1课时)** 重点内容:介绍编译型语言和非编译型语言语言的不同原理,介绍CPU直接执行和虚拟机脚本化执行的异同,讲授性能与兼容性取舍,开发效率与执行效率取舍。介绍C\C++\Go语言的编译链接工具,Python、PHP语言的执行器,介绍Java编译器和虚拟机。 **第八章:共性:流程控制(2课时)** 重点内容:介绍程序流程控制,如分支、循环。介绍布尔型、逻辑运算和条件判断的基本原理。上述典型编程语言流程控制的共性与特性。 **第九章:共性:函数、类与模块化(2课时)** 重点内容:介绍程序的划分与相互调用,函数和类。介绍函数的定义与调用、函数的输入数据(参数)。介绍上述典型编程语言的函数与类(若有)的定义方式。介绍编程的模块化思想和程序划分的基本原理。 **第十章:程序的启动:进程与入口函数、回调函数与事件处理(2课时)** 重点内容:介绍程序的不同启动方式,顺序型执行和事件触发型执行。在不同情况下的程序启动方式。介绍C语言、Python语言入口函数;介绍C语言中的信号处理函数、Windows消息处理函数等回调启动执行方式。 **第十一章:数据、二进制与编码(3课时)** 重点内容:重点介绍计算机中的数据存储和处理,寄存器、内存、硬盘等存储空间的区别。介绍二进制数据和使用二进制数据编码文字(ASCII、Unicode)、颜色(RGB)、图像(位图)、程序(机器指令)。建立计算机中一切数据都是二进制数据的思维。了解数据大小单位和换算方式、掌握不同进制数据换算的工具、熟悉16进制。 **第十二章:程序与数据(3课时)** 重点内容:重点介绍程序与数据的关系。介绍不同类型的数据和程序的关系:内存数据(C语言变量、C语言内存分配与释放、C语言数据结构、C语言内存管理的不可替代性及问题、Java和Python程序对象);文件和网络数据(保存数据到文件、通过网络收发数据、内存数据的序列化和反序列化);数据库(不同类型数据库概述、安装数据库、向数据库中写入和读取数据)。介绍命令行数据输入(入口函数参数)。初步介绍文件系统。 **第十三章:API与库(3课时)** 重点内容:介绍不同作者编写程序的相互调用问题、程序的模块化和接口化,介绍一些通用的常用的基础程序库。了解API的概念,介绍典型编程语言、常见操作系统的内置API和常见云服务的开放API。介绍如何编写API。 **第十四章:动态链接库(1课时)** 重点内容:介绍如何在操作系统层面为其他第三方程序提供公共接口。介绍系统API的原理、动态链接原理及动态链接和静态链接的异同与优缺点。 **第十五章:多线程(2课时)** 重点内容:介绍程序的执行流程——线程。介绍多个程序并发执行。 **第十六章:命令行程序、图形用户界面程序(2课时)** 重点内容:介绍如何编写命令行程序和图形用户界面程序。介绍图形用户界面的基本概念。 **第十七章:单机程序、网络程序、Web应用程序(3课时)** 重点内容:介绍软件从单机应用程序、到网络程序、Web程序等发展流程、软件的发展方向与内在逻辑、介绍单机应用程序、网络程序和Web程序的开发方式,为后续学习进行指导。 **第十八章:Web前端与Web后端(3课时)** 重点内容:介绍Web前端与后端的基本概念。初步了解Web前端编程语言:html、css、JavaScript。初步了解Web后端,Web服务器、静态Web程序、CGI和动态Web程序的基本概念。概要学习使用C、Java、Python、PHP、Go语言编写Web后端程序。初步了解HTTP和URL、了解GET与POST。 **第十九章:原生应用程序与基于Web的应用程序(2课时)** 重点内容:了解原生应用程序与基于Web的应用程序,了解最新的软件开发技术。 **第二十章:设计模式:如何开发优秀的软件(2课时)** 重点内容:主要介绍封装、复用等编程思想、介绍MVC设计模式。 **第二十一章:框架(2课时)** 重点内容:介绍主要的Web开发框架,介绍框架体现的编程思想和基于框架进行软件开发的方法,感受效率提升。 **第二十二章:调试与排错(3课时)** 重点内容:介绍调试与排错在软件开发中的作用、断点调试法、日志调试法。介绍单机程序的调试、多线程和网络程序的调试、Web程序的调试。初步介绍不同编程语言和开发环境的调试方法。 **第二十三章:独立开发能力:阅读文档与获取帮助(2课时)** 重点内容:介绍文档在编程中的重要作用,以及如何获取和阅读文档、获得独立的软件开发能力。 **第二十四章:版本管理和开源代码仓库(3课时)** 重点内容:概要介绍git和github。 **第二十五章:软件的发布与运维(3课时)** 重点内容:概要介绍客户端、单机软件发布、安装包;概要介绍服务器端软件发布、上线、域名的申请与备案,初步了解虚拟机、云计算与云虚拟主机、docker等软件 部署的基础设施。 **第二十六章:持续改进与软件工程(2课时)** 重点内容:软件工程概述,如何组织大型软件开发。初步了解DevOps和CI/CD。 **第二十七章:总结:计算思维与现实世界问题(2课时)** 重点内容:进行课程总结,进行大学四年的编程学习规划。 ## 四、作业、实践环节 * 作业1:Visual studio code 的安装和C、Python、Java、Go开发环境搭建。 * 作业2:C编译器使用。 * 作业3:简单的GUI程序开发。 * 作业4:简单Web程序开发和Web程序运行环境搭建。 * 作业5:git和Github使用。 * 作业6:上线一个简单网站。 * 作业7:蒙特卡洛方法求解圆周率(Python) * 作业8:简单的自动填表程序 ## 五、建议教材 * 兰德尔 E.布莱恩特(Randal E.·Bryant) 著,龚奕利,贺莲 译.**深入理解计算机系统**.北京:机械工业出版社,2016. ## 六、参考资料 * **C Primer Plus** 史蒂芬·普拉达(Stephen Prata) 著,姜佑 译 人民邮电出版社 2019-11-01 ISBN:9787115521637 * **Windows核心编程** 杰夫瑞(Jeffrey Richter) 等著 葛子昂 等译 清华大学出版社 2008-09-01 ISBN:9787302184003 * **Unix环境高级编程** 理查德·史蒂文斯(W.,Richard,Stevens)等著,戚正伟,张亚英,尤晋元 译 人民邮电出版社 2019-10-01 ISBN:9787115516756 * **数据结构** * **算法导论** Thomas H.Cormen 等著,徐云 译 机械工业出版社 2013-01-01 ISBN:9787111407010