2023-2024-1 20231318 《计算机基础与程序设计》课程总结
作业信息
这个作业属于哪个课程 | 2023-2024-1-计算机基础与程序设计 |
---|---|
这个作业要求在哪里 | 2023-2024-1计算机基础与程序设计第十五周作业 |
这个作业的目标 | 课程总结 |
作业正文 | 2023-2024-1 学号20231318《计算机基础与程序设计》课程总结 |
每周作业链接汇总
第一周作业
参考《基于VirtualBox虚拟机安装Ubuntu图文教程》安装Linux系统,快速浏览一遍教材计算机科学概论,课本每章提出至少一个自己不懂的或最想解决的问题。
第二周作业
学习了计算机概念和编程基础
第三周作业
学习二进制、十进制、八进制、十六进制之间的转换方法;学习了二进制的反码和补码;学习了ASCII字符集;常量与变量。
第四周作业
学习了非门、与门、或门、异或门、与非门、或非门等;冯·诺伊曼体系;处理指令的四个步骤
第五周作业
学习了Pep/9虚拟机,键盘输入和屏幕输出
机器语言与汇编语言,算法与伪代码,测试:黑盒,白盒
第六周作业
了解Polya提出的解决问题方法(理解问题、设计方案、执行方案、回顾);学会使用循环语句(for、while、do while);了解二分检索;运算符优先级;if、switch语句的使用。
第七周作业
学习了数据结构,栈(先进后出),队列(先进先出),列表(线性,无线),树,二叉树(每个节点只有一个父母节点,两个子节点),二叉检索树,图(可有向可无向),深度优先搜索和广度优先搜索,单源最短路搜索,各类参数。循环语句和循环数据结构;for循环语句;嵌套循环;break和continue。
第八周作业
学习了面向对象方法,函数的定义与调用(函数的定义、调用、原型、返回值);函数封装和防御性程序设计;函数的递归调用和递归函数等
第九周作业
学习了操作系统责任,内存与进程管理,分时系统,CPU调度,文件、文件系统,文件保护等。
第十周作业
学习了信息系统,数据库与SQL,人工智能与专家系统,人工神经网络,模拟与离散事件,排队系统,天气与地震模型,图形图像等。
第十一周作业
学习了广域网与局域网;Internet骨干网;TCP/IP;域名系统;超文本和超链接;cookie;HTML;字符串。向函数传递结构体等。
第十二周作业
学习了运用一维和二维数组以及基本的指针用法,指针数组的应用以及动态数组等。
第十三周作业
学习了结构体与共用体;用typedef定义数据类型;嵌套结构体;结构体变量的引用;结构体指针;向函数传递结构体等。
第十四周作业
复习了文件相关知识——二进制文件和文本文件,文件的打开、关闭与读写等。
实验报告链接汇总
实验一:通过熟悉操作系统基本命令,学会操作系统的使用
实验二:基本控制结构编程练习
实验四:函数与数组编程练习
实验六:文件与结构体编程练习
实验七:缓冲区溢出
实验八:Web部署
因为都是文档格式,没有发博客,所以就不附链接了
关于第1周作业中自己提出的问题
是否抓住重点:抓住了一些,但不多。
有的问题太简单(比如与非门和或非门是什么?),网上搜索和翻书就可以解决;后几章有的问题太过概括,偏离学习重点,有的问题问的太深,我现在也解答不了;还有几个问题简直异想天开,以后也可能解答不了。
问题:
回答:这里挑一些比较能抓住重点的来回答
为什么计算机早期部分计算机采用十进制,但如今所有计算机都采用二进制?对于计算机而言,二进制为何不同于其他进制?
早期的计算机,特别是机械计算机,通常是基于齿轮、滑轨等机械构件的。这些机械计算机更容易实现十进制计算,因为十进制直观地反映了我们人类日常生活中的计数方式。而在电子管时代由于技术限制,使用十进制的电子计算机也相对容易实现。
二进制的电子元件(如晶体管)的工作更稳定、更可靠,容易设计和实现。 二进制由于其在电子计算机中的实现和处理的优势,成为了计算机系统的主要表示和计算方式。
更大的内存意味着能存储更多信息,但为什么书中提出了更大的内存并不一定是更好的?更大的内存有何弊端?
- 成本问题: 更大的内存往往意味着更高的成本。
- 需求匹配: 内存需求应该与实际应用的需求相匹配。如果应用程序并不需要大量内存来处理和存储数据,那么拥有超出需求的大内存可能是多余的。在这种情况下,更大的内存并不会提供显著的性能改进或者优势。
- 资源分配: 拥有更大的内存可能导致资源分配问题。比如过度依赖内存而忽略了对算法和资源管理的优化。
- 管理与维护: 大内存系统需要更复杂的管理和维护。
- 不良影响性能: 在某些情况下,过大的内存容量可能实际上会对性能产生负面影响。
C,C++,Java,Python各自都有哪些优势?
C 语言的优势:
- 性能: C 语言以其高效的执行速度和低级别的内存控制而著称,适用于对性能要求较高的系统编程和嵌入式系统开发。
- 硬件级编程: C 语言允许直接访问计算机硬件,因此适用于系统级编程和嵌入式系统开发。
- 广泛支持: C 语言是一种广泛使用的编程语言,有丰富的标准库和大量的工具支持。
C++ 语言的优势:
- 面向对象编程: C++ 扩展了 C 语言,引入了面向对象编程的概念,提供了类和对象等抽象机制,使得程序设计更模块化和可维护。
- 通用性: C++ 同时支持面向过程和面向对象的编程范式,适用于广泛的应用场景,包括系统编程、图形界面开发等。
- 模板和泛型编程: C++ 引入了模板和泛型编程的概念,提高了代码的灵活性和复用性。
Java 语言的优势:
- 跨平台性: Java 使用虚拟机(JVM),使得 Java 程序可以在不同的平台上运行,实现了跨平台的特性。
- 面向对象编程: Java 是一种面向对象的编程语言,提供了良好的封装、继承和多态机制。
- 安全性: Java 在设计时注重安全性,提供了内置的安全性特性,如内存管理和异常处理。
- 丰富的库支持: Java 拥有庞大且强大的标准库,支持各种应用开发,尤其在企业级应用和网络编程方面表现出色。
Python 语言的优势:
- 简洁易读: Python 的语法设计简洁,使得代码易读易写,适合快速开发原型和大型项目。
- 动态类型: Python 是一种动态类型语言,不需要声明变量类型,提供了更灵活的开发方式。
- 丰富的库和框架: Python 拥有丰富的第三方库和框架,支持多种应用领域,包括数据科学、机器学习、网络编程等。
- 社区支持: Python 拥有庞大的开发者社区,提供了丰富的文档和支持,有助于问题解决和学习。
- 跨平台性: Python 同时支持多个平台,使得开发人员可以在不同操作系统上运行其代码。
机械语言不同的计算机间如何通过翻译互相交流?
- 汇编语言: 汇编语言是一种较为低级的语言,与特定计算机体系结构密切相关。不同体系结构的计算机使用不同的汇编语言。如果要在不同计算机之间进行通信,可以编写适配器程序,将源计算机的汇编语言代码翻译成目标计算机的汇编语言。
- 中间表示语言: 使用中间表示语言是一种常见的跨平台交流方法。例如,Java 使用字节码作为中间表示,这样可以在不同的计算机上运行。其他一些语言也采用类似的中间表示,通过在不同平台上实现解释器或虚拟机,实现跨平台交流。
- 编译器和解释器: 可以使用编译器将源代码翻译成目标机器的机械语言,或者使用解释器逐行执行源代码。这需要在每台计算机上都有适当的编译器或解释器,或者实现跨平台的解释器。
- 标准化协议和格式: 采用标准化的通信协议和数据格式,使得不同计算机之间可以通过共同的标准进行交流。例如,通过网络传输数据时,可以使用标准的协议如HTTP、TCP/IP等。
- 二进制文件格式: 如果在不同计算机之间传递二进制文件,需要确保文件格式的兼容性。有时可以使用标准的二进制文件格式,以便在不同平台上进行读取和执行。
课程收获与不足
本学期收获颇丰。我通过自学教材、云班课资源、作业与实验等学到了很多。学计算机无疑是“痛并快乐着”的,作为一个没什么基础的小白,每一个概念的理解都很费脑子,学得越多,越觉得自己掌握的知识不足,尤其是C语言程序设计上,总是能很轻松地看懂代码,但自己又写不出来。
给开学初的你和学弟学妹们的学习建议
尽量不要搞双系统,太麻烦了。
面对问题,一定要多提问,chatgpt可以回答大部分问题,但最好是GPT4.0,不要用3.5,它真的容易出错,也不要用GPT帮你完成编程作业而你自己啥也不做,自己不练的话是不会有提高的。
问卷调查
1.你平均每周投入到本课程多长时间?
大概10-15小时——算上正课和作业的话
2.每周的学习效率有提高吗?
有。
3.学习效果自己满意吗?
不是很满意的——GPT成功让我能看懂所有学过的代码,但是很难实操写出来了。
4.课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书送给你作纪念)
不出意外的话应该是不能,老师抱歉啦!
5.你觉得这门课老师应该继续做哪一件事情?
期末划重点,给思维导图。
6.你觉得这门课老师应该停止做哪一件事情?
无。
7.你觉得这门课老师应该开始做什么新的事情?
计算机基础方面讲完课把PPT发群里。
总结的链接和二维码
20231318《计算机基础与程序设计》课程总结