20231306《计算机基础与程序设计》课程总结

发布时间 2024-01-07 13:31:39作者: 20231306周玟妍

每周作业链接汇总

第一周作业

简要内容:
参考《基于VirtualBox虚拟机安装Ubuntu图文教程》安装Linux系统,快速浏览一遍教材计算机科学概论,课本每章提出至少一个自己不懂的或最想解决的问题。

第二周作业

简要内容:
自学《计算机科学概论》第1章和《C语言程序设计》第1章并完成云班课测试。
了解什么是编程。

第三周作业

简要内容:
在云班课中参考本周学习资源、自学教材《计算机科学概论》第2、3章和《C语言程序设计》第2章并完成云班课测试。
学习二进制、十进制、八进制、十六进制之间的转换方法;学习了二进制的反码和补码;学习了ASCII字符集;常量与变量。

第四周作业

简要内容:
在云班课中参考本周学习资源、自学教材《计算机科学概论》第4、5章和《C语言程序设计》第3章并完成云班课测试。
非门、与门、或门、异或门、与非门、或非门;冯·诺伊曼体系;处理指令的四个步骤。

第五周作业

简要内容:
在云班课中参考本周学习资源、自学教材《计算机科学概论》第6章和《C语言程序设计》第4章并完成云班课测试。
Pep/9虚拟机;键盘输入和屏幕输出。

第六周作业

简要内容:
在云班课中参考本周学习资源、自学教材《计算机科学概论》第7章和《C语言程序设计》第5章并完成云班课测试。
了解Polya提出的解决问题方法(理解问题、设计方案、执行方案、回顾);学会使用循环语句(for、while、do while);了解二分检索;运算符优先级;if、switch语句的使用。

第七周作业

简要内容:
在云班课中参考本周学习资源、自学教材《计算机科学概论》第8章和《C语言程序设计》第6章并完成云班课测试。
数组的实现和链式实现;图与树;循环语句和循环数据结构;for循环语句;嵌套循环;break和continue。

第八周作业

简要内容:
在云班课中参考本周学习资源、自学教材《计算机科学概论》第9章和《C语言程序设计》第7章并完成云班课测试。
编译器与解释器;命令式范式;声明式范式;C、Java、C++、Python在数据类型、输入(输出)结构、控制结构方面的不同之处;嵌套逻辑;异步处理;封装、类、继承、多态;模块化程序设计;函数。

第九周作业

简要内容:
在云班课中参考本周学习资源、自学教材《计算机科学概论》第10、11章和《C语言程序设计》第8章并完成云班课测试。
分时系统;分区内存管理;CPU调度;文本文件和二进制文件;顺序文件访问和直接文件访问;数组;二维数组。

第十周作业

简要内容:
在云班课中参考本周学习资源、自学教材《计算机科学概论》第12、13、14章和《C语言程序设计》第9章并完成云班课测试。
电子数据表;数据库管理系统;图灵测试;AI问题;模拟;游戏编程语言;指针。

第十一周作业

简要内容:
在云班课中参考本周学习资源、自学教材《计算机科学概论》第15、16章和《C语言程序设计》第10章并完成云班课测试。
广域网与局域网;Internet骨干网;TCP/IP;域名系统;超文本和超链接;cookie;HTML;字符串。向函数传递结构体

第十二周作业

简要内容:
在云班课中参考本周学习资源、自学教材《C语言程序设计》第11章并完成云班课测试。
指针和一、二维数组间的关系;指针数组及其应用;动态数组

第十三周作业

简要内容:
在云班课中参考本周学习资源、自学教材《C语言程序设计》第12章并完成云班课测试。
结构体与共用体;用typedef定义数据类型;嵌套结构体;结构体变量的引用;结构体指针;向函数传递结构体。

第十四周作业

简要内容:
在云班课中参考本周学习资源、自学教材《C语言程序设计》第13章并完成云班课测试。
二进制文件和文本文件;文件的打开和关闭。

整体评价第1周作业问题


有的问题太过概括或具体,偏离学习重点;有的问题经过简单的网上搜索就可以解决;有的问题问的太深,我现在也无法解答;也有些问题抓住本学期的学习重点。

问题回答

第一章:

作为计算机用户,我该如何利用自己设计好的系统软件来操控硬件呢?

答:首先要了解硬件规格和接口,然后选择编程语言,编写设备驱动程序和应用程序,然后进行调试和测试,成功运行后要随时维护。

第二章:

在计算机处理中,以2为基数的二进制运算比以2的其他幂次为基数更加简洁的原因是什么?
(该问题我在书中39页找到相关答案:“如果存储和管理数据的设备只需要表示两种数值之一,那么费用要小得多,而且也可靠得多。”于是我又提出一个问题:

为什么以2为基数的二进制运算更加可靠?

答:二进制系统更容易进行错误检测和纠正。因为在二进制系统中,每一位的变化都代表一个较大的权值,使得错误更容易被察觉。

第三章:

为什么市面上会淘汰矢量图形格式“Adobe Flash”?

答:首先,Adobe Flash存在多个安全漏洞,经常成为恶意软件攻击的目标。第二,Flash在移动设备上的性能表现相对较差,导致电池寿命短,性能下降。随着HTML5标准的发展,它提供了更先进的多媒体功能,包括音频、视频和动画等,减少了对Flash的依赖。HTML5支持的矢量图形和动画能够更好地适应不同设备和浏览器,提供更统一的用户体验。

第四章:

计算机在执行加法运算时,为什么设置了加法器和半加器而不是一个既能进行加法运算又能进位的电路?

答:将加法器分解为半加器和全加器使得电路设计更加模块化。半加器负责处理不涉及进位的位,而全加器则处理涉及进位的位。这样的设计使得可以更容易地扩展、组合和重复使用这些模块。一个完全能够同时进行加法运算和进位的电路可能会更为复杂,难以实现,并且容易引入错误。通过将功能分解为更小的部分,可以更容易地理解、测试和维护电路。

第五章:

计算机一般会配备几个处理器?缓存的内容是否能转移到存储器中?

答:
一台计算机通常至少有一个处理器。
取决于缓存的类型。L1缓存通常是处理器核心内部的小型高速缓存,但容量相对较小。L2和L3缓存通常是共享的,可能位于处理器芯片上或者共享在多个核心之间。这些缓存的内容也不会直接转移到主存,而是根据缓存管理策略(如LRU,最近最少使用)进行替换。当处理器无法在缓存中找到所需的数据或指令时,它必须从主存中获取。主存的容量较大,但相对于缓存而言速度较慢。

第六章:

可以在虚拟机中安装虚拟机么?虚拟机和双系统在使用方面有什么区别?

答:
可以。这被称为嵌套虚拟化。VMware和VirtualBox都能实现。
虚拟机中的操作系统与主机系统相互隔离,不直接影响主机系统。但性能开销相对较高,因为虚拟机需要模拟硬件并在宿主系统上运行虚拟化层。 相对于虚拟机,双系统通常具有更好的性能,因为它们在物理硬件上直接运行,无需虚拟化层的干扰。但双系统需要在磁盘上分配独立的分区或磁盘空间。

第七章:

快速在程序中找到错误代码的方法有哪些?
如何进行算法的测试?

答:
使用gdb调试。
单元测试: 编写针对算法中单个函数或模块的测试用例。确保每个函数都按照预期执行,并返回正确的结果。单元测试通常是自动化的,可以通过测试框架(如JUnit、pytest等)来执行。
集成测试: 测试算法的组件如何在一起协同工作。这通常包括测试不同模块之间的接口和交互。
边界条件测试: 确保算法在输入处于边界条件时仍能正确运行。这包括测试输入的最小值、最大值、边缘情况等。
性能测试: 测试算法在大规模数据集或特定条件下的性能表现。这有助于评估算法的效率和资源使用情况。
随机测试: 使用随机生成的测试数据来评估算法的鲁棒性。这有助于发现在特定输入情况下可能出现的问题。

第八章:

Remove 算法有哪些?

答:
数组中的元素移除:
按值移除: 从数组中移除特定值的元素。可以使用循环遍历数组,将匹配的元素删除。
按索引移除: 根据索引位置移除数组中的元素。要小心在循环中进行删除操作,以避免跳过元素。
链表中的节点移除:
按值移除: 遍历链表,找到匹配值的节点,然后调整指针以将节点从链表中移除。
按位置移除: 根据节点的位置或索引从链表中移除节点。
集合中的元素移除:
按值移除: 从集合中移除特定值的元素。
差集操作: 通过差集操作移除两个集合之间的相同元素。
字符串中的字符移除:
按值移除: 从字符串中移除特定字符。
按位置移除: 根据字符的索引位置移除字符串中的字符。
栈和队列中的元素移除:
栈: 移除栈顶的元素。
队列: 移除队列头部的元素。
图中的节点移除:
移除节点及其边: 从图中移除特定节点以及与其相关联的边。

第九章:

如何编写个性化的编译器的程序?

答:首先,明确定义目标语言的语法和语义规则。这包括语言的关键字、运算符、数据类型,以及语言的语法结构。然后,设计词法和语法分析器;随后进行语义分析,生成中间代码
然后进行一些编译优化,如常量折叠、循环展开等。将中间代码转换为目标平台的汇编或机器码。进行链接和装载,将多个目标文件合并成一个可执行文件。最后进行测试和调试:,编写一系列测试用例来验证编译器的正确性。

第十章:

校园中的计算机教室中老师的主机可控制学生的电脑是否采用可分时概念?

答:是。在计算机教室的上中,可分时概念可能表现为老师的主机通过某种方式对学生的电脑进行控制,以便有效地进行教学、演示或监控学生的活动。

第十一章:

环形SCAN算法是如何减少平均等待时间的?

答:
1.方向性扫描: 环形SCAN算法沿着磁道的方向进行扫描,当到达磁盘的一个端点时,不立即改变方向,而是返回到另一端重新开始扫描。这个过程使得磁盘臂在一个方向上移动更长的距离,从而减少了平均等待时间。
2.减少臂的移动次数: 与SCAN算法相比,环形SCAN算法减少了磁盘臂的移动次数。在SCAN算法中,磁头在到达一个磁道后需要立即改变方向,而在环形SCAN中,磁头可以沿着一个方向移动一段时间,然后再改变方向。这减少了磁头的反向移动,从而减小了平均寻道时间。
3.提高吞吐量: 环形SCAN算法的运行方式有助于提高磁盘的吞吐量。因为它在一个方向上持续扫描,而不是在两个方向上来回扫描,这可以减少磁盘头的停顿时间,提高数据的传输速率。

第十二章:

DBMS除了自动生成键字段之外还有什么其他功能?

答:
1.数据定义语言(DDL)支持: DBMS允许用户定义数据库的结构,包括创建、修改和删除表、视图、索引等。DDL包括诸如CREATE、ALTER和DROP等语句。
2.数据操作语言(DML)支持: 提供对数据库中数据的操作,包括插入、更新、删除和查询。DML包括诸如SELECT、INSERT、UPDATE和DELETE等语句。
数据查询和检索: 提供强大的查询语言,例如SQL(Structured Query Language),以便用户能够检索符合特定条件的数据。
3.事务管理: 支持事务,确保数据库在并发访问中的一致性和完整性。DBMS通常提供ACID属性(原子性、一致性、隔离性和持久性)来保证事务的正确执行。

第十三章:

布尔变量的具体用法和应用场景?

答:布尔变量是一种只能取两个值的变量,通常用于条件判断和循环控制。也用于表示开关状态、逻辑运算和状态表示。

第十四章:

基于连续模拟的概念,偏微分方程是如何模拟出天气模型的?

答:Navier-Stokes方程和热力学方程常用于模拟天气,并使用有限差分法、有限元法或谱方法等数值方法进行求解。

第十五章:

如何实现常规电话线传输数字信号?

答:使用调制解调器。在生成数字信号之后,对其进行调频和调幅等调制方法,然后将模拟信号通过电话线传输,最后解码为初始数字信号。

第十六章:

当代互联网中的视频、歌曲、购物推送是否运用了cookie 技术?

答:是。但还有其他技术。比如LocalStorage 和 SessionStorage以及Web Beacons和像素标签。

第十七章:

在信息安全规划时如何进行风险分析?

答:
第一步,识别可能影响信息资产安全的威胁,包括恶意软件、网络攻击、自然灾害、人为错误等。考虑内部和外部的威胁因素。第二步,确定系统和流程中的潜在脆弱性。可能涉及软件漏洞、配置错误、人为错误等。第三步,确定风险。将威胁和脆弱性结合起来,确定可能导致安全事件的潜在风险。根据风险级别,确定哪些风险需要优先处理。这有助于组织集中精力和资源解决最紧迫的问题。第四步,制定风险应对策略。并及时实施控制措施。

启发式算法是如何识别潜在的恶意代码的?

答:启发式算法会从样本中提取各种特征,包括文件元数据、代码结构、API 调用、指令序列、字符串模式等。在进行模式识别后,结合机器学习技术,使用已标记的恶意和良性样本进行训练。通过训练模型,算法可以学习恶意代码的特征,然后用于检测未知样本。然后对程序执行过程中的行为进行监控和分析。与此同时,使用黑名单白名单技术和沙盒分析。

第十八章:

为什么图灵机对于一个问题的解决方案不存在,就能说明这个问题一定不可解决?

答:图灵机对于一个问题的解决方案不存在,并不一定能够说明这个问题一定不可解决。图灵机的停机问题是一个经典的例子,它表明不存在一般的算法能够判断任意图灵机在任意输入上是否会停机。这意味着某些问题是不可解的,但不能直接推广到所有问题。

加分项目

我的第八周学习总结

课程收获与不足

本学期收获颇丰。从自学教材《计算机科学概论》和《C语言程序设计》,到云班课资源、作业与测试的实践,再到期末考试,我从一个理论上的小白,变成了一个更加小白的小白(笑)。学得越多,越觉得自己掌握的知识不足。在实践云班课作业时,我遇到了许多难解的问题,尤其是在使用Macos的情况下,好多问题都要去自己研究。但是解决的问题越多,我学到的知识就越多,一次次别样的思维风暴,学计算机是“痛并快乐着”的典型实例。

给开学初的你和学弟学妹们的学习建议

不要买?电脑!!!windows系统它不香吗?!

面对问题,一定要多向chatgpt、学长学姐、老师、室友同学提问!!!

问卷调查

1.你平均每周投入到本课程多长时间?
大概10小时。
2.每周的学习效率有提高吗?
有!
3.学习效果自己满意吗?
其实挺满意的……如果大家不那么卷的话……
4.课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书送给你作纪念)
好像不能,谢谢老师啦!
5.你觉得这门课老师应该继续做哪一件事情?
期末划重点~
6.你觉得这门课老师应该停止做哪一件事情?
无。
7.你觉得这门课老师应该开始做什么新的事情?
没想好。

总结的链接和二维码

20231306《计算机基础与程序设计》课程总结