学期2023-2024-1学号20231315第十五周学习总结
课程总结
每周总结
第零周
主要进行自我介绍;
第一周
粗略阅读了《计算机科学概论》,并提出一些问题。
第二周
本周我自学了计算机科学概论第1章和《C语言程序设计》第1章的相关内容,并对两本教材进行了总结。计算机科学概论第1章主要介绍了计算机的定义、计算机的组成以及计算机的历史,并重点讲述了冯.洛伊曼模型。计算机是一种数据处理器,它可以处理各种类型的数据并生成输出结果。《C语言程序设计》第1章主要介绍了为什么要学编程,什么是编程,以及怎么学编程。并论述了过去一段时间的学编程热潮。
第三周
本周我自学了计算机科学概论第2,3章和《C语言程序设计》第2章的相关内容,并对两本教材进行了总结。计算机科学概论第2,3章主要介绍了基数的定义,字及字节的基本定义。第3章主要介绍了数据与数字的关系,文件的表示法。《C语言程序设计》第2章主要讲述基本数据类型常量,变量等。
第四周
计算机科学概论第4,5章总结计算机科学概论第4章主要讲了门和电路,主要介绍了逻辑门(与,非,或等);然后介绍了门的构造,然后介绍了几类电路;第5章主要介绍了计算机部件,首先分析了计算机的构成,并重点介绍了并行体系结构。C语言程序设计》第3章总结第3章主要是基本算术运算,首先介绍了+—*/ 和增1减1运算,接下来讲了常量替换,类型转换,最后介绍了部分常用标准函数
第五周
计算机科学概论第6章总结计算机科学概论第6章;主要介绍了pep\9虚拟机,pep\9的结构pep、9指令的格式,pep\9的机器语言,汇编语言,伪代码,以及如何执行。重点介绍了pep\9的机器语言和汇编语言《C语言程序设计》第4章总结第4章主要介绍了屏幕输入和输出。重点讲了printf和scanf的运用,以及输出%c时会遇到的问题。
第六周
计算机科学概论第6章总结计算机科学概论第7章;主要介绍了用计算机解决问题的一般思路,计算机中的算法类别,以及几种数组的排序方法《C语言程序设计》第5章总结第5章主要介绍了逻辑运算符和逻辑表达式。重点讲了if和else if的运用,switch语句以及位运算符。
第七周
计算机科学概论第6章总结计算机科学概论第8章;主要介绍了抽象数据类型与子程序,列表,栈,队列,树,图以及子程序的运行《C语言程序设计》第6章总结第6章主要介绍了循环结构,例如whlie,for,以及continue,break以及程序的调试等。
第八周
计算机科学概论第9章总结计算机科学概论第9章;主要介绍了面向对象设计和高级程序语言。主要包括面向对象,设计方法,程序设计的翻译过程,程序设计的语言规范,高级程序设计语言的功能性,面向对象语言的功能性。《C语言程序设计》第7章总结第7章主要介绍了如何设制函数,变量的作用域和生存域,以及程序的模块化设计等
第九周
计算机科学概论第10,11章总结计算机科学概论第10,11章;主要介绍了操作系统的责任,内存和进程的管理,分时操作与虚拟机,内存管理方法,两种创造虚拟机的方法,CPU的调度方法,进程生存周期的各个阶段各种CPU调度算法的处理,文件,文件系统和目录的用途;文件扩展名,定义文件的基本操作,顺序文件访问和直接文件访问,目录树,磁盘调度算法等。《C语言程序设计》第8章总结第8章主要介绍了数组的定义和初始化,如何向函数传递数组,以及排序和查找。
第十周
计算机科学概论第12,13,14章总结计算机科学概论第12,13,14章主要介绍了如何进行信息管理,人工智能的基本知识,摸你图形学游戏等的基本知识。《C语言程序设计》第9章总结第9章主要介绍了指针,以及与指针有关的知识
第十一周
计算机科学概论第15,16章总结计算机科学概论第15,16章主要介绍了网络,万维网,以及相关的衍生概念。《C语言程序设计》第10章总结第10章主要介绍了字符串的定义,声明,访问,输入,向函数传递等知识点。
第十二周
《C语言程序设计》第11章总结第11章主要介绍了指针和一堆数组的关系,指针和二堆数组的关系,向函数传递一堆和二堆数组,指针数组以及动态数组。
第十三周
《C语言程序设计》第12章总结第12章主要介绍了结构体的定义及初始化,结构体指针,向函数传递结构体等
第十四周
本周我自学了《C语言程序设计》第13章的相关内容,对教材进行了总结。《C语言程序设计》第13章总结第13章主要介绍了文件的打开关闭,顺序读写与随机读写,标准输入输出等
实验报告链接汇总
实验一
学习使用别出心裁的Linux命令学习法https://www.cnblogs.com/rocedu/p/4902411.html
通过cheat和man 学习linux命令https://www.cnblogs.com/rocedu/p/14891816.html中的列表熟悉Linux命令gcc,熟悉Linux命令gdb
实验二
程序首先随机产生两个1~10之间的正整数,在屏幕上打印出问题,例如:6*7=然后让学生输入答案。程序检查学生输入的答案是否正确。若正确,则打印“Right”,然后问下一个问题;否则打印“Wrong! Please try again.”,然后提示学生重做,直到答对为止。1.2在上述功能实现的基础之上,当学生回答错误时,最多给三次重做的机会,三次仍未做对,则提示“Wrong! You have tried three times! Test over!”,程序结束。1.3在任务1的基础之上,连续做10道乘法运算题,不给机会重做,若学生回答正确,则显示“Right!”,否则显示“Wrong!”。10道题全部做完后,按每题10分统计并输出总分,同时为了记录学生能力提高的过程,再输出学生的回答正确率(即正确题数除以总题数的百分比)。1.4在任务3的基础上,通过计算机随机产生10道四则运算题,两个操作数为1~10之间的随机数,运算类型为随机产生的加、减、乘、整除中的任意一种,不给机会重做,如果学生回答正确,则显示“Right!”,否则显示“Wrong!”。10道题全部做完后,按每题10分统计总得分,然后打印出总分和学生的回答正确率。1.5在任务4的基础上,为使学生通过反复练习熟练掌握所学内容,在学生完成10道运算题后,若学生回答正确率低于75%,则重新做10道题,直到回答正确率高于75%时才退出程序。1.6开发一个CAI系统所要解决的另一个问题是学生疲劳的问题。消除学生疲劳的一种办法就是通过改变人机对话界面来吸引学生的注意力。在任务5的基础上,使用随机数产生函数产生一个1~4之间的随机数,配合使用switch语句和printf()函数调用,来为学生输入的每一个正确或者错误的答案输出不同的评价。
实验四
(1).学生成绩管理系统V1.0某班有最多不超过40人(具体人数由键盘输入)参加某门课程的考试,用数组作函数参数编程实现如下学生成绩管理:(a)录入每个学生的学号和考试成绩;(b)计算课程的总分和平均分;(c)按成绩由高到低排出名次表;(d)按学号由小到大排出成绩表;(e)按学号查询学生排名及其考试成绩;(f)按优秀(90-100)、良好(80-89)、中等(70-79)、及格(60-69)、不及格(0-59)5个类别,统计每个类别的人数以及所占的百分比;(g)输出每个学生的学号、考试成绩,课程总分和平均分。(2)学生成绩管理系统V1.1在学生成绩管理系统V1.0的基础上,要求程序运行后先显示如下菜单,并提示用户输入选项:(1)Append record(2)Calculate total and average score of course(3)Sort in descending order by score(4)Sort in ascending order by number(5)Search by number(6)Statistic analysis(7)List record(8)Exit
实验六
1)录入每个学生的学号、姓名和各科考试成绩;(2)计算每个学生的总分和平均分;(3)按每个学生的总分由低到高排出名次表;(4)按姓名的字典顺序排出成绩表;(5)按姓名查询学生排名及其考试成绩;(6)将每个学生的记录信息写入文件,包括每个学生的学号、姓名,各科考试成绩,以及其总分与平均分;(7)从文件中读出每个学生的记录信息并显示。要求程序运行后先显示如下菜单,并提示用户输入选项:1.Append record 2.Caculate total and average score of every student 3.Sort in ascending order by total score of every student 4.Sort in dictionary order by name5.Search by name6.Write to a file 7.Read from a file 0.ExitPlease enter your choice:然后,根据用户输入的选项执行相应的操作。
实验七
在蓝桥注册账号https://www.lanqiao.cn/,完成缓冲区溢出实验 https://www.lanqiao.cn/courses/231
参考学长实验报告和视频https://blog.csdn.net/weixin_43771137/article/details/128063046,提交自己实验报告,内容包含
1. 实验指导书内容
2. 缓冲区溢出的原理
3. 缓冲区溢出的防范
4. 参考以前的实验报告模板,提交Word版实验报告。
实验八
参考https://www.cnblogs.com/rocedu/p/16929895.html和附件视频,基于LAMP部署wordpress,参考以前的报实验报告模板,提交实验报告,包含以下内容:
1. 遇到的问题和解决过程
2. 对实验的建议
整体评价一下第1周作业中自己提出的问题是不是抓住了学习重点
第1周自己提出的问题并没有完全抓住重点,问题停留在最基本的基础知识的问答,或者是一些无关紧要的延伸,并没有切中要害。
回答一下第1周作业中自己提出的问题
第一章:
除了冯诺依曼模型之外,还有其他可靠的计算机模型,例如图灵机模型和并行计算模型等。这些模型提供了不同的理论基础和设计思路,用于解决计算机科学中的各种问题。
数据组织是指将数据按照一定的方式进行分类、组合和存储的过程。它关注的是数据在计算机系统中的存储和访问方法,包括数据结构、文件组织和数据库等方面。
结构化程序是一种编程范式,通过划分程序为一系列的模块,并使用顺序、选择和循环等控制结构来组织程序。它的目的是提高程序的可读性、可维护性和可测试性,使程序更加结构化和模块化。
第二章:
要将π转换为二进制,可以使用数值计算方法如二分法或牛顿法来近似计算π的值,并将结果转换为二进制表示。
要实现不同进制之间的转换,可以使用数学运算和字符串处理技巧。例如,将十进制数转换为二进制数,可以使用除2取余法;将二进制数转换为十进制数,可以使用权重相加法;将十进制数转换为十六进制数,可以使用除16取余法等。
第三章:
符号加绝对值表示法在存储整数中不常用的原因是,它需要额外的位来表示正负号,增加了存储空间的开销。而补码表示法通过对正数和负数采用相同的表示方法,使得计算机可以使用相同的硬件电路进行加减运算,更加方便和高效。
有一些表示法不会溢出,如无符号整数表示法和定点数表示法。每种系统都有其优点和缺点,例如,无符号整数表示法可以表示更大的正数范围,但无法表示负数;而定点数表示法可以表示小数,但精度较低。
ASCII(American Standard Code for Information Interchange)是一种字符编码标准,定义了128个字符的编码方式,包括英文字母、数字、标点符号等。虽然现在已经有了更高级的字符编码标准如Unicode,但ASCII仍然广泛使用。
第四章:
算术运算、逻辑运算和移位运算之间有一些关系。算术运算是对数值进行加减乘除等操作,逻辑运算是对布尔值进行与、或、非等操作,而移位运算是对二进制数进行左移或右移操作。
布尔代数是一种数学分支,它研究逻辑运算的代数性质和规则。在计算机中,布尔代数用于逻辑电路的设计和逻辑运算的实现。为了更快速地进行逻辑运算,可以采用逻辑门电路来实现NOT、AND、OR、XOR等运算。
第五章:
CPU(中央处理器)、主存储器和输入/输出子系统相互配合,以实现一个计算机的功能。CPU负责执行指令和进行计算,主存储器用于存储指令和数据,而输入/输出子系统用于与外部设备进行数据交换。
数据需要在寄存器中临时存储的原因是,寄存器是位于CPU内部的高速存储器,具有较短的访问时间。通过将数据存储在寄存器中,CPU可以更快速地对数据进行操作和计算。
ROM(只读存储器)、RAM(随机存储器)、PROM(可编程只读存储器)和EPROM(可擦写可编程只读存储器)是不同类型的存储器。它们的主要区别在于是否可以擦写和编程的能力。
第六章:
网络的本质是将多台计算机连接在一起,使它们能够相互通信和共享资源。因特网是全球范围内的计算机网络,而互联网是连接不同网络的网络。
端到端模式是一种通信模式,它将通信的处理逻辑放在通信的两端,而传统模式会在中间节点上进行数据处理。TELNET是一种用于远程登录和操作远程计算机的协议,由于安全性和性能等方面的限制,逐渐被更安全和高效的协议如SSH取代。
第七章:
操作系统是管理和控制计算机硬件和软件资源的程序集合,程序是由操作系统来管理和运行的执行单元。
个人系统、并行系统、分布式系统和实时系统是不同类型的计算机系统。个人系统是一台计算机专门为个人用户提供服务的系统;并行系统是一组相互协作的计算机组成的系统;分布式系统是由多台计算机组成的系统,分布在不同地理位置;实时系统要求对任务的响应时间有严格的要求。
分区调度的问题可以通过使用调度算法来解决,常见的算法包括先来先服务(FCFS)、短作业优先(SJF)和时间片轮转等。
虚拟内存在虚拟机中的应用是将虚拟机的内存空间划分为多个逻辑区域,每个区域可以运行独立的操作系统和应用程序,实现资源的隔离和管理。
第八章:
除了UML和伪代码,还有其他表示算法的工具,如流程图、结构图和状态转换图等。这些工具用于描述算法的执行过程、数据流和状态变化等。
并不是所有数学问题都可以用算法来解决,有些问题可能没有有效的算法或者需要非常复杂的算法才能解决。
基于UML和伪代码进行插入排序的方法是,首先使用UML类图描述排序算法的类结构和关系,然后使用伪代码描述算法的逻辑和步骤,最后根据伪代码编写具体的程序代码实现。
第九章:
计算机语言的语法规定了语言的正确使用方法和结构,包括关键字、标识符、运算符、控制结构等方面的规则。
不同计算机之间通过共同的协议、标准和接口进行交流,例如网络协议、文件格式和数据传输格式等。
C++是一种面向对象编程语言,它支持类的定义和使用。通过定义类,可以封装数据和方法,使程序更加模块化和可复用。
第十章:
瀑布模型和增量模型是软件开发过程中的两种不同的开发模型。瀑布模型是一种线性顺序的模型,各个开发阶段严格按照顺序执行;增量模型是一种逐步迭代的模型,通过迭代的方式逐步完善系统。
文档是记录和描述软件设计、功能、需求等信息的文件。它可以包括需求规格说明书、设计文档、用户手册等内容。
第十一章:
多维数组在计算机中有很多应用,例如图像处理、数值计算和数据库管理等领域。多维数组可以方便地表示和操作多维数据结构。
当需要进行插入、删除和查找等操作,并且操作频繁时,最合适的数据结构是平衡树(如红黑树)或哈希表。平衡树可以保持数据有序,并且支持高效的插入、删除和查找操作;哈希表可以通过哈希函数将关键字映射到存储位置,实现快速的插入、删除和查找操作。
第十二章:
复杂抽象数据类型包括树、图、堆、队列等。实现复杂抽象数据类型的方法包括使用指针和动态内存分配来构建数据结构,以及定义相应的操作和算法。
栈在编程中有很多应用,例如函数调用、表达式求值和内存管理等。栈的特点是先进后出,可以通过压栈和出栈操作实现数据的存储和访问。
第十三章:
二级存储设备是指辅助存储器,用于存储大量的数据和程序。常见的二级存储设备包括硬盘、光盘和闪存等。
错误报告文件报错后,可以通过调试和错误处理来解决错误。调试是通过分析错误的原因和调用栈,定位问题所在;错误处理是通过捕获异常和处理错误,使程序能够继续执行或回滚到安全状态。
第十四章:
数据库内逻辑上相互独立的数据不会相互干扰。数据库通过事务机制和锁机制来保证数据的一致性和隔离性。
内外层之间的交互可以通过接口和协议来实现。内侧提供的接口定义了对外部系统可见的方法和功能,而外层通过调用这些接口来与内侧进行交互。
第十五章:
数据压缩的实质是通过减少数据的冗余度和提取数据的统计特征来减小数据的表示大小。常见的数据压缩算法包括哈夫曼编码、LZW压缩和算术编码等。
数据压缩和加密在原理上是不同的。数据压缩是通过改变数据的表示方式来减小数据的大小,而数据加密是通过改变数据的内容和形式来保护数据的安全性。
第十六章:
机密性会影响完整性,因为保护数据的机密性可能需要对数据进行加密或限制访问权限,这可能导致数据的完整性受到影响。
攻击一台计算机
课程收获与不足
自己的收获
自己学习了最基本的《计算机科学概论》的知识,以及《C语言程序设计》的基本知识,掌握了基本的编程能力,具备了一定的学科素养
自己需要改进的地方
学习效率低下,对于知识掌握的还不是十分透彻,对于稍微高深一点的的知识都不是很明白,对于课本的知识点并不是很透彻
给开学初的你和学弟学妹们的学习建议
加强自学能力,在老师上课之前一点要做好预习,对于课本之外的与计算机编程有关的知识要尽可能的涉猎。
如果重新学习这门课,怎么做才可以学的更好
提升自学能力,多投入时间,建立知识体系,加紧自学
问卷调查
你平均每周投入到本课程多长时间?
4~6小时
每周的学习效率有提高吗?
并没没有提高
学习效果自己满意吗?
不满意。
课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书送给你作纪念)
不清楚
你觉得这门课老师应该继续做哪一件事情?
多结合课本进行讲解
你觉得这门课老师应该停止做哪一件事情?
不应该布置超出学生能力太多的延伸
你觉得这门课老师应该开始做什么新的事情?
多科普计算机领域最新的研究成果