
西浦ICS学习
文章平均质量分 96
西浦ICS学习指导,本人目前就读西交利物浦大学ICS专业,分享自己学习时的一些感悟和学习资料,希望能帮助到大家。
sensen_kiss
这个作者很懒,什么都没留下…
展开
-
XJTLU 西浦ICS学习资料与心得体会分享(持续更新中)
由于本人目前是大三,所以目前课程只能更新到大三,能力有限哈哈~本人水平也不是很高,只是个底层半奖罢了,学习ics纯属于喜欢计算机,喜欢编程,喜欢玩游戏罢了我觉得无论是选专业还是如果你选好了专业也要再选择一个方向,这些选择都是以兴趣为主,兴趣是最好的老师,有兴趣你才有学习下去的动力,如果我遇到我感兴趣的问题或者平时遇到一些程序上的bug我一般都会熬夜把问题解决,这是我个人的习惯,这个时候的我是不会感到疲惫的,当然这不是说如果你遇到问题一定要立马解决,如果这个问题很大的话我也会分几次再解决。原创 2024-09-30 15:06:29 · 2398 阅读 · 0 评论 -
CPT208 Human-Centric Computing 人机交互 Pt.7 交互和交互界面
界面隐喻通过模拟现实世界的物体或活动(如桌面、购物车等)帮助用户理解数字系统功能,降低学习门槛但可能限制设计创新。交互类型包括指令式(如输入命令)、对话式(如语音助手)、操作式(如拖放文件)等,各具特点:指令式高效直接,对话式自然但易误解,操作式直观但需精准设计。设计需权衡隐喻的认知优势与局限,同时选择最适合任务场景的交互方式。原创 2025-05-28 04:27:25 · 1353 阅读 · 0 评论 -
CPT208 Human-Centric Computing 人机交互 Pt.5 原型保真度和维度
文章摘要:本文探讨了原型设计的保真度评估及其五个关键维度:视觉、交互、广度、深度和内容。文章指出原型保真度没有绝对标准,设计师需根据项目需求权衡各维度投入。低保真原型适合快速迭代,高保真原型则接近最终产品体验。文中强调使用精确语言描述保真度的重要性,以避免误解和资源浪费。此外,文章还介绍了物理设计要素,包括菜单、图标、屏幕和信息显示的设计考量。建议采用模块化方法进行原型设计,避免同时处理所有维度带来的效率问题。(149字)原创 2025-05-27 08:04:09 · 722 阅读 · 0 评论 -
CPT208 Human-Centric Computing 人机交互 Pt.4 启发式评估, 问卷调查和访谈
本文系统介绍了问卷和访谈两种研究方法。问卷部分阐述了封闭式与开放式问题的特点及适用场景,分析了问卷设计的要点(问题顺序、目标群体适应、简洁性等),并详细说明了回答格式(复选框、评分量表等)。同时提出了提高回答质量的策略(匿名性、激励措施等),总结了问卷高效获取概览但数据深度有限的优缺点,以及在线问卷的实施步骤。访谈部分区分了结构化、半结构化和非结构化访谈的差异,对比了各自优缺点,并简要说明了焦点小组的特点。全文为研究者选择合适的数据收集方法提供了实用指导。原创 2025-05-27 06:13:56 · 1026 阅读 · 0 评论 -
CPT208 Human-Centric Computing 人机交互 Pt.3 Design Principles and Design Alternatives(设计原则和设计预案)
本文探讨了无障碍设计和包容性原则在交互产品中的应用。首先介绍了无障碍设计的起源与标准要求,区分了无障碍性(针对特殊需求人群)和包容性(面向广泛使用者)的概念。随后详细分析了三类残疾(感官、身体、认知)及其持续时间分类(永久性、暂时性、情境性)。文章通过假肢和轮椅的案例展示了无障碍设计的演变趋势——从功能导向到审美与功能并重。第二部分阐述了四大设计原则:可见性(界面元素清晰可辨)、反馈(操作结果及时响应)、约束(限制不当操作)和一致性(统一操作模式),并配以电梯、快捷键等实际案例说明其重要性与应用方法。原创 2025-05-26 07:34:05 · 1022 阅读 · 0 评论 -
CPT208 Human-Centric Computing 人机交互 Pt.6 Usability Testing & Experimental Design(可用性测试和实验设计)
评估是产品设计过程中的关键环节,旨在确保产品满足用户需求并提升用户体验。评估内容涵盖概念模型、不同阶段的原型以及与竞品的对比。评估环境包括自然、真实和实验室三种场景。评估方法分为受控环境测试、自然观察和专家评审三类,各有优缺点。HCI评估指标包括微观层面的任务表现(时间、准确性、错误率)和宏观层面的用户体验(动机、协作、同理心)。实际评估需遵循伦理规范,确保数据可靠性、效度和减少偏差。可用性测试通过定量指标(任务完成时间、错误率等)和用户反馈(问卷、访谈)评估产品表现,通常需要5-10名用户在受控环境中完成原创 2025-05-26 02:55:21 · 844 阅读 · 0 评论 -
CPT208 Human-Centric Computing 人机交互 Pt.8 Field Study and Analytics(实地研究和分析)
文章摘要:本文回顾了调查问卷和采访的特点,介绍了定性分析和定量分析的区别,并讨论了不同环境下的评估方法。观察作为数据收集的重要手段,分为直接和间接观察,现场观察尤为关键,需考虑参与者的接受度、敏感话题处理等。民族志学作为深入文化的研究方法,强调参与和持续数据分析。现场研究在自然环境中进行,旨在理解用户行为和技术影响。在没有用户直接参与的情况下,可通过启发式评估、A/B测试和预测模型等方法进行评估。分析用户行为数据对于理解用户与系统的交互至关重要。原创 2025-05-18 01:41:45 · 811 阅读 · 0 评论 -
INT202 Complexity of Algroithms 算法的复杂度 Pt.7 NP-Completeness NP完全性
P与NP问题是计算复杂性理论中的核心问题,探讨是否存在高效的算法解决某些看似困难的计算问题。P类问题是指那些可以在多项式时间内通过确定性算法解决的问题,而NP类问题则是指那些可以在多项式时间内验证解决方案的问题。文章通过${0,1}$背包问题为例,展示了如何将优化问题转化为决策问题,并介绍了动态规划的解决方案及其时间复杂度。此外,文章还讨论了计算问题的正式定义、复杂性类P和NP的概念,以及非确定性算法在NP问题中的应用。最后,文章强调了有效证明的概念,即通过验证解决方案来确认决策问题的答案。原创 2025-05-13 23:13:40 · 1084 阅读 · 4 评论 -
CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.11 AVL树
前一章说到关于二叉树操作的时间复杂度时,我们提到AVL树可以改善二叉搜索树(BST)的性能。在二叉搜索树中,搜索、插入和删除操作的时间复杂度取决于树的高度。在最坏的情况下,如果树退化成链表(即树的高度为O(n)),这些操作的时间复杂度也将是O(n)O(n)O(n)。理论上,我们可以维护一个完美平衡的树(即完全二叉树),这样树的高度将是O(logn)O(log n)O(logn),从而确保搜索、插入和删除操作的时间复杂度为O(logn)O(log n)O(logn)。完全二叉树的每一层都完全填满,除了原创 2025-05-06 04:09:33 · 1035 阅读 · 0 评论 -
CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.10 二叉搜索树
如果 current 节点也没有右孩子(即 current 是一个叶子节点),那么可以直接从树中移除该节点,将其父节点的相应指针(左或右)设置为 null。如果 current 节点有一个右孩子,那么可以用其右孩子替换 current 节点,然后更新 parent 节点的指针。从根节点开始,逐层访问所有节点,先访问根节点,然后从左到右访问根节点的所有子节点,接着是子节点的所有子节点,依此类推。找到 current 节点的中序后继(即 current 节点右子树中值最小的节点,也就是右子树的最左节点)。原创 2025-05-05 18:03:49 · 1134 阅读 · 0 评论 -
CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.9 图
我们在算法和数学中都学习过图。图是一种强大的工具,可以将复杂的现实世界问题抽象化,通过节点(vertices)和边(edges)来表示对象及其关系,从而更容易理解和解决问题。其经常的应用是分析城市间的最短路径,更清晰地表达是寻找两个城市之间最少航班的问题,可以转化为在图中找到两个顶点之间的最短路径。也可以用于社交媒体分析(建模社交网络)、计算机芯片设计、搜索引擎算法。图G=(V,E)G=(V,E)G=(V,E)图GGG是由两个集合组成的数学结构:VVV表示顶点集合(Vertices 或 Nodes)原创 2025-05-05 03:34:40 · 747 阅读 · 0 评论 -
INT202 Complexity of Algroithms 算法的复杂度 Pt.6 Number Theory and Cryptography 数论与密码学
我们上一次学习有关密码学的知识是在CAN201计算机网络中,这也是密码学常见的用途——保证通信安全。为此我们密码学需要实现以下这些目标:整数集,用符号ZZZ表示,包含所有整数(没有小数部分),从负无穷大到正无穷大。在密码学中,我们对整数集上的三种二元运算感兴趣(+、-、×)。二元运算是指需要两个输入并产生一个输出的操作。我们现在思考逆运算。加法的逆运算是减法:如果a+b=c,那么c−b=aa+b=c,那么 c−b=aa+b=c,那么c−b=a。减法的逆运算是加法:如果a−b=c,那么c+b=aa−原创 2025-05-04 06:14:28 · 898 阅读 · 0 评论 -
CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.8 排序算法
完全二叉树是一种特殊的二叉树,其中除了最后一层外,每一层都是满的,并且最后一层的节点尽可能地集中在左侧。冒泡排序是一种简单的排序算法,它重复地遍历待排序的列表,比较每一对相邻的元素,如果它们的顺序错误就交换它们。这个临时数组的大小与原数组相同,因此归并排序的空间复杂度是 O(n),其中 n 是数组的长度。如果列表几乎已经排序好了,或者已经完全排序好了,传统的冒泡排序算法仍然会进行不必要的遍历和比较,这会浪费计算资源。终身学习:指的是持续的、自愿的、自我激励的知识追求,目的是为了个人或职业发展。原创 2025-04-24 22:38:22 · 1206 阅读 · 0 评论 -
CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.7 算法
我们在很多课上都学习了算法。算法是一组有限的、定义明确的、可由计算机实现的指令,通常用于解决一类问题或者执行某种计算。算法分析是研究算法的计算复杂性的过程。算法设计是开发用于解决问题的算法的过程。如果我们使用执行时间来衡量算法性能,其具有局限性。因为执行时间依赖于具体输入和系统环境。所以我们使用大OOO符号衡量算法效率。大OOO符号不关心算法在特定输入数据或特定计算机硬件上的具体执行时间,而是关注算法在输入规模变化时的增长趋势。这种方法通过分析算法的时间复杂度来衡量其效率,时间复杂度描述了算法的原创 2025-04-24 04:41:09 · 1211 阅读 · 0 评论 -
INT202 Complexity of Algroithms 算法的复杂度 Pt.5 Graphs 图
我们现在进入算法的第二部分,图,这部分也有很多知识我们已经学过。图是一种可以用来存储、表达和利用连通性信息的数据结构。通过图,可以清晰地表示和处理各种连通性信息,例如在交通网络中表示城市之间的道路连接,在互联网中表示计算机之间的网络连接,在二叉树中表示节点之间的父子关系等。一个图由两部分组成:顶点集(Vertices或Nodes):图中的对象集合,用符号VVV表示。边集(Edges):顶点之间的成对连接,表示两个顶点之间的关系,用符号EEE表示。所以一个图GGG可以表示为G=(V,E)G=(V,E原创 2025-04-22 06:19:58 · 940 阅读 · 0 评论 -
CPT208 Human-Centric Computing 人机交互 Pt.2 Prototype(原型)
Prototype(原型):原型是一种初步的、可操作的模型或样品,用于展示设计概念、测试功能或进行用户反馈收集。它通常比最终产品更简单、更粗糙,但能够提供足够的信息来验证设计的可行性和方向。在不同的设计领域,原型的形式和用途可能会有所不同。例如在设计领域的一些小比例模型,比如汽车领域的微型汽车模型、建筑领域的微型建筑模型。它的形式有很多种,它们都是一种模型,虽然Prototype来源于希腊语“prōtotupos”,意思是“第一个例子”。原创 2025-04-08 03:28:50 · 910 阅读 · 0 评论 -
CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.6 集合,映射
HashSet、LinkedHashSet 和 TreeSet 都是Java中 Set 接口的实现,这意味着它们都不允许存储重复元素。HashSet:排序:它不保证迭代的顺序。内部结构:由哈希表支持。排序:维护一个贯穿所有条目的双向链表,这定义了迭代的顺序,通常是元素被插入到集合中的顺序(插入顺序)。内部结构:由哈希表支持,并通过一个链表贯穿。TreeSet:排序:保证元素将按照元素的自然顺序或在集合创建时提供的比较器进行升序排序。内部结构:由树(通常是红黑树)支持。原创 2025-03-31 20:39:38 · 1164 阅读 · 0 评论 -
CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.5 列表,栈,队列和优先队列
下面的代码展示了如何使用 Collections.sort() 对列表进行排序,这个排序是升序排序(自然排序),如果想要获得降序排序(逆自然顺序),可以使用 Collections.sort() 方法和 Collections.reverseOrder() 方法对列表进行降序排序。Deque 接口定义了 addFirst(e)、removeFirst()、addLast(e)、removeLast()、getFirst() 和 getLast() 方法,即允许在队列的头部和尾部进行操作。原创 2025-03-31 05:13:31 · 518 阅读 · 0 评论 -
CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.4 泛型
泛型允许程序员定义类和方法时使用类型参数。这些类型参数可以在编译时被具体的类型替换,从而提供类型安全和代码重用。假设我们定义了一个泛型栈类 Stack<T>,其中 T 是一个类型参数。使用这个泛型类,我们可以创建不同类型元素的栈对象。1.创建一个用于存储字符串的栈。示例如下。2.创建一个用于存储数字的栈。示例如下。在这两个例子中,String 和 Integer 是具体的类型,它们替换了泛型类 Stack<\T> 中的类型参数 T。原创 2025-03-29 04:56:24 · 1326 阅读 · 0 评论 -
CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.3 抽象类和接口
我们回到我们上一章中举的GeometricObject类的例子中,在那个例子中我们声明了一个抽象类GeometricObject,当时我们在其的子类Cricle和Rectangle中分别有不同的getArea()和getPerimeter()方法,其实我们可以将这两个方法声明为抽象方法,这样我们就可以让Circle和Rectangle作为子类的时候必须实现这两个方法。如下图所示。我们为什么要这么做呢?原创 2025-03-28 03:18:10 · 1043 阅读 · 0 评论 -
INT202 Complexity of Algroithms 算法的复杂度 Pt.4 Fundamental Techniques &Optimization Problems 基础技术和优化问题
逆序对的数量越多,表示排列与标准排列的差异越大,相似度越低。所以我们在每一步可以选择尽可能多的当前价值指数(单位重量的收益)最大的物品,该物品拿完后如果背包有剩余容量就继续选择价值指数次大的物品,依此类推,直到达到重量限制。优化问题是指存在多种可能解决方案的问题,每种解决方案都有一个特定的值(比如成本、收益等),我们的目标是找到一个具有最优(最大或最小)值的解决方案。为了给你提供推荐,网站希望将你的评分与其他人的评分进行比较,以查看它们有多相似,比较的方式是通过计算逆序对的数量来实现的。原创 2025-03-24 16:28:01 · 697 阅读 · 0 评论 -
INT202 Complexity of Algroithms 算法的复杂度 Pt.3 Sorting Algorithm & Divide and Conquer 排序算法和分治法
例如优先队列使用insertItem在优先队列的最后插入一个新的元素,但是这样就破坏了优先队列或者说是堆的排序,因此我们现在通过上浮(up-heap bubbling)来恢复堆的排序。在堆中,元素及其键(key)存储在一个几乎完全的二叉树(binary tree)中,除了可能的最后一层外,二叉树的每一层都尽可能地填满子节点。这些键决定了在从优先队列中选择元素进行移除时的优先级。将左右两个序列的第一个元素进行对比,小的就先放进合并的序列中,当一个序列清空就将另一个序列的全部元素添加进合并的序列中。原创 2025-03-23 04:21:15 · 1254 阅读 · 0 评论 -
INT202 Complexity of Algroithms 算法的复杂度 Pt.2 Search Algorithm 搜索算法
我们前面学习了二分查找,它通过元素在数组中的排名(rank)来访问数组 S 中的元素,又学习了有序的数据结构,因此我们可以将它们结合起来,就是下面我们要介绍的二叉搜索树。如果要删除的元素不在具有叶子子节点的节点中,我们可以用它的中序后继(或等效地,用它的中序前驱)替换要删除的元素,然后删除这个后继(或前驱)元素。(原本是4-节点)现在有5个子节点,那么这个节点就变成了一个5-节点,这违反了 (2,4) 树的节点大小属性(每个内部节点最多有4个子节点)。在每次递归调用中,执行的是固定数量的操作。原创 2025-03-21 21:11:39 · 1174 阅读 · 0 评论 -
CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.2 String类和类的设计
类抽象是指将类的实现细节与类的使用分离。这通常通过提供类的公共接口(API)来实现,而隐藏类的内部实现细节。通过抽象,类的创建者可以定义类的行为和功能,即提供类的描述和公共方法,这些方法定义了类可以执行的操作,而不必让使用者了解类的具体实现方式。这使得使用者可以专注于如何使用类,通过这些方法与类交互,而不需要知道类内部的具体实现。而不让用户知道类内部是如何实现的,这也就是封装(encapsulated),将数据字段设置为private,只开放一些公共接口(API)。原创 2025-03-12 03:01:53 · 485 阅读 · 0 评论 -
CPT208 Human-Centric Computing 人机交互 Pt.1
本课叫Human-Centric Computing(以人为中心的计算),而非传统的人机交互(HCI,Human-Computer Interaction),HCI 是一门研究人与计算机之间交互方式的学科,主要关注如何设计、评估和改进用户与计算机系统的交互体验。而本课的要求较低一些,是一种更广泛的跨学科领域,强调将人类的需求、能力和体验作为技术设计的核心。原创 2025-03-11 03:04:49 · 979 阅读 · 0 评论 -
INT202 Complexity of Algroithms 算法的复杂度 Pt.1 前言
这门课程是之前INT102的进阶,它介绍算法分析的基础概念并且介绍算法的复杂度分析。因为算法和数据结构相辅相成,所以好的算法也需要依赖高效的数据结构。在当前讨论组,我们说的“好”是运行速度快的,这将在课程中进一步阐述。原创 2025-03-01 15:03:53 · 1398 阅读 · 0 评论 -
CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.1 Arrays and Classes 数组和类
这门功课如果你前面在刚接触Java的时候,或者学习其他语言的时候理解了面向对象编程的意思,那么学习这门功课你就会觉得很简单。当然如果你至今没有理解面向对象编程,这又是一次理解面向对象编程的好机会。无论你对面向对象编程的理解如何,这门功课都是一次对面向对象编程的练习和实践。希望在学习完这门功课后,你能在今后自己的代码中能够做到面向对象编程,面向对象编程并不是什么繁文缛节,而是能够帮助你更好地理解这个世界,更好地重构这个世界,写出更加简洁使人容易理解的代码出来。原创 2025-02-23 19:13:49 · 1525 阅读 · 0 评论 -
CPT205 计算机图形学 OpenGL 3D实践(CW2)
前面已经分享过了关于CPT205的CW1的2D作业,这次CW2要求的是3D作业,但是主题不限,不像上次规定了必须得是生日贺卡。这里将以这个大作业为例,讲解OpenGL的3D实践。首先虽然我们来到了3D作业,但我们能靠OpenGL做一个类似于我们现在所处的世界一样的作业吗?答案当然是不能。虽然现在的游戏或者说计算机图形学已经可以让我们能做出接近现实世界的虚拟世界,但是那需要非常细致的建模和设计。很明显不是作业要求的。我们使用的工具较为简单,我们需要考虑的主要是以下几个问题:1. 建模建成什么样的?原创 2025-02-14 03:24:02 · 1325 阅读 · 0 评论 -
CPT205 计算机图形学 OpenGL 2D实践(CW1)
本文章将以CPT205 计算机图形学的第一次大作业为例,进行OpenGL的2D实践。这次作业是要求学生制作一个2D的生日贺卡,从而检验学生对OpenGl的2D掌握程度。这里涉及的知识点主要是3-5章的内容(相关知识点参考链接CPT205计算机图形学Pt.1)。考察不仅需要学生能够展现出你对知识的掌握程度,即你要尽量尝试所学的所有东西,另一方面你要尝试做出好看的作品,毕竟这门功课是计算机图形学,图形学的发展正是为了给人们展现出他们想要表达的提供媒介。原创 2025-02-12 15:25:09 · 1051 阅读 · 0 评论 -
CAN201 Introduction to Networking(计算机网络)Pt.5 网络安全
网络安全涉及以下几个重要概念:1.Confidentiality(保密性):在通信过程中,只有发送方和预期的接收方能够理解消息的内容。为了实现保密性,发送方会对消息进行加密,而接收方则会对消息进行解密,从而确保只有授权的人能够理解消息内容。2.Authentication(身份验证):发送方和接收方希望确认彼此的身份,以确保通信的安全性。3.Message integrity(信息完整性):发送方和接收方希望确保消息在未经检测的情况下在传输过程中或之后没有被篡改。4.Access and avail原创 2025-01-06 22:46:37 · 1266 阅读 · 0 评论 -
CAN201 Introduction to Networking(计算机网络)Pt.4 链路层
数据链路层(数据链路层也就是链路层)负责将datagram(数据报)通过link(链路)从一个节点传输到另一个节点。数据链路层处理的是直接相连的两个节点之间的数据传输。链路是连接相邻节点的通信通道。它可以是有线的(如以太网电缆)或无线的(如Wi-Fi)。链路层的数据单元称为frame(帧),它包含了控制信息,如帧同步、地址字段、差错控制等。链路层在传输数据报之前,会将其封装在帧中,这一步叫Framing。原创 2025-01-04 22:20:30 · 1202 阅读 · 0 评论 -
CPT203 Software Engineering 软件工程 Pt.3 系统建模(中英双语)
建模对于简化复杂系统的重要性,它通过将复杂系统抽象成适当级别的细节来简化系统。软件开发失败主要是由以下因素导致的:1.需求理解不清晰。2.开发过程中经常晚期发现问题。3.复杂性导致性能问题。系统建模是开发系统的抽象模型的过程,每个模型呈现系统的不同视图或角度。系统建模现在通常指的是使用某种图形符号来表示系统,而这些符号几乎总是基于统一建模语言(UML)中的符号。系统建模有助于分析人员理解系统的功能,并且这些模型被用于与客户沟通。原创 2025-01-01 01:14:42 · 1313 阅读 · 1 评论 -
CPT203 Software Engineering 软件工程 Pt.6 软件管理(中英双语)
1.由于专业软件工程总是受到组织预算和时间表限制的影响,因此需要对项目进行管理。2.项目管理的目标是确保软件项目能够满足并克服这些限制,并交付高质量的软件。良好的管理并不能保证项目的成功,但糟糕的管理可能会导致项目交付延迟、成本增加,以及无法满足客户的期望。原创 2024-12-31 14:25:12 · 907 阅读 · 2 评论 -
CPT203 Software Engineering 软件工程 Pt.5 软件测试(中英双语)
测试是软件验证和确认(V & V)过程的一部分,其目的是检查正在开发的软件是否符合其规范,并提供了由支付软件费用的人所期望的功能。这些检查过程从需求提供时就开始,并贯穿开发过程的所有阶段。测试技术包括静态和动态两种:静态测试:主要是对静态系统表示的分析,以发现问题(例如,检查文档和代码分析)。动态测试:主要是对产品行为进行测试,通过执行测试数据来观察系统的运行行为。原创 2024-12-30 20:53:29 · 1217 阅读 · 3 评论 -
CPT203 Software Engineering 软件工程 Pt.4 软件设计(中英双语)
软件设计涵盖了一系列原则、概念和实践,旨在促使高质量系统或产品的开发。设计的目标是产生一个模型或表示,具备以下特征:坚固性(无错误)。实用性(有用或有价值)。愉悦性(愉快的体验)。软件设计是建模活动中的最后一个软件工程行为,为构建阶段(代码生成和测试)奠定了基础。它是一个将用户需求转化为适当形式的过程,以帮助程序员进行软件编码和实施。实际上,需求和设计是相互关联的。特别是,在设计过程中通常会澄清需求。原创 2024-12-29 22:50:06 · 1413 阅读 · 0 评论 -
CPT203 Software Engineering 软件工程 Pt.2 敏捷方法和需求工程(中英双语)
由于企业现在在全球快速变化的环境中运营,它们必须对新的机遇和市场、经济状况的变化以及竞争性产品和服务的出现做出反应。这对软件开发有重大影响,意味着软件开发需要更加灵活和快速响应变化。软件开发需要能够适应不断变化的需求和市场,以及迅速推出新功能和服务来满足市场的需求。因此,软件开发需要更加注重敏捷性、灵活性和创新性,以便与快速变化的商业环境保持同步。原创 2024-12-29 14:41:39 · 1316 阅读 · 0 评论 -
CPT203 Software Engineering 软件工程 Pt.1 概论和软件过程(中英双语)
软件工程对于政府、社会、国内和国际企业、机构的正常运转都是至关重要的。现在的世界离开软件就无法运转了。国家基础设施和公共服务都是基于计算机的系统控制的,大多数电子产品都包括计算机和控制软件,工业制造和分销已经完全计算机化了,金融系统也是这样。娱乐业,包括音乐产业、计算机游戏产业、电影和电视产业,也是一个软件密集型的产业。软件是抽象的、不可触摸的,它不受物质材料的限制,也不受物理定律或加工的制约:优点:一方面使软件工程得以简化,因为软件的潜能不受物理因素的限制;原创 2024-12-28 00:01:39 · 1363 阅读 · 0 评论 -
CAN201 Introduction to Networking(计算机网络)Pt.3 网络层
这章将主要理解网络层服务背后的原则,特别是关注data plane(数据平面)方面的内容。具体包括以下几个方面:网络层服务模型:即网络层提供的服务类型和模式,例如数据包转发、路由选择等。转发与路由:区分数据包转发和路由选择的概念,理解它们在网络层中的作用和区别。路由器的工作原理:理解路由器在网络中的功能和工作方式,包括数据包的处理、转发和路由决策等。广义转发:指的是网络层中数据包的转发和处理方式,这涉及到不同的转发策略和技术。并且这章会介绍网络层的实例化和实现。原创 2024-12-27 17:03:42 · 1395 阅读 · 0 评论 -
CAN201 Introduction to Networking(计算机网络)Pt.2 传输层
传输层的主要作用是在不同主机上运行的应用程序进程之间提供逻辑通信。传输层协议在端系统中的运行过程:在发送端,传输层协议将应用层的消息(也称为报文)分割成较小的数据段(也称为分组或报文段),然后将这些数据段传递到网络层。这个过程叫breaks app msg into segments, passes to network layer。在接收端,传输层协议将接收到的数据段重新组装成完整的消息,然后将这些消息传递到应用层。这个过程叫reassembles segments into messages, pa原创 2024-12-25 18:33:08 · 1478 阅读 · 0 评论 -
CAN201 Introduction to Networking(计算机网络)Pt.1 导论和应用层
因特网是一个世界范围内的计算机网络,它是一个互联了遍及全世界数十亿计算设备的网络。它为参与者提供了沟通和连接的手段。参与者可能是设备也可以是服务。这些设备包括传统的PC、服务器等,也包括如今的智能手机、平板、手表、汽车、温度调节装置等)。服务包括Web服务、电子邮件服务、域名解析服务等。应用层协议可以基于CS(客户端-服务器)架构或者P2P(对等)架构。它定义了交换信息的种类,包含request(请求)和response(响应)等。原创 2024-12-23 21:26:10 · 1049 阅读 · 1 评论