应要求来分享一下大三的相关课程。
先来看这学期课程:
专业课:
- DI31001 - Networks and Data Communications 网络与数据通信
- DI31002 - Information Security 信息安全
- DI31003 - Database Systems 数据库系统
(除了网络与数据通信这门课外我都像计算机系统 2B 一样理了课件笔记,我特地在我们期末考试后在笔记中标记了考到的知识点,信息安全我还理了我们每次课堂小测中的一些重点题目,到时候有需要的可以找我)
公共课:
请注意,以下所有的内容均仅代表 24-25 学年的情况。此后的课程实际情况可能有所不同。
Be advised, that all of the following represent Year 24/25 only. Realities thereafter may vary.
1 专业课
DI31001 - Networks and Data Communications
这学期的王炸。
就是学习关于计算机网络的全部(即 七层/五层模型以及每层的所有常见协议),没错,孩子们,就是全部
Assignment 情况
Assignment 1 - 网络编程
5 人小组作业。可能是大一下学期以来最早的一个 Assignment,在学期的大前期。有两次提交:9 月中下旬的 mid-term 和 10 月上旬的 final。有一个很复杂的评分规则表,列了一堆需要实现的功能,mid-term 的评分规则从这个表中筛选了一部分,final 再完整评分。Mid-term 需要答辩。
作业内容是需要使用一种编程语言(C/C++/Python 等)在多虚拟机上实现一个 IRC (Internet Relay Chat) 系统。需要实现一个服务器端以及一个客户端 Bot。
前期需要用到 GitHub 上两个开源项目 miniircd (IRC 服务器) 和 HexChat (IRC 客户端) 来熟悉系统模式和命令语法规则。后期也可以使用这两个项目来分别交叉测试自己的 Bot 和服务器。
需要的技能如下:
Assignment 2 - 网络模拟
个人作业。在学期的中后期。
需要在 Cisco Packet Tracer (需要特别注意版本,请向老师确认后下载对应版本) 中根据 Assignment 的要求来模拟复现一家公司的网络架构。这个软件有点类似什么模拟经营,你要在这个软件里面自己根据作业描述来“放置”这家公司的各种终端设备、交换机、路由器、接入点、服务器等,自己搭线,自己配置各个终端设备的 IP、DNS 服务器、路由器的路由表和动态路由协议等,还需要自己各种测试各种 Ping 什么的。最终你会根据描述完整复现出这家公司的网络架构。
除此以外,还需要写一个简短的报告,解释一种网络现象以及背后的原因。这个现象是什么我就先不说了,你们在测试这个网络的时候会遇到的。
需要的技能如下:
- 掌握很多网络的概念,如 IP、子网掩码、路由表等。
- 耐心,因为可能会频繁遇到 Ping 不通的情况。
考试情况
期末考试:笔考,120 分钟,若干道客观题 (单选/多选混杂) + 若干道简答/计算
复习重点覆盖:《计算机网络:自顶而下方法》全书
考试题目覆盖:《计算机网络:自顶而下方法》全书
真的会考很多只在书上但不出现在课件里的东西。甚至不是书上每章最后的习题,而可能是全书任何一个看似不起眼的角落。
(再次强调仅为 24-25 学年的情况,我真的希望以后的届能改)
经验分享
强烈建议提前去学习一些计算机网络的概念,比如去了解七层/五层模型中每一层在干什么这些。如果时间充足可以去读《计算机网络:自顶而下方法》这本书(不用买,到处都是电子版),时间不足也可以和 GPT 老师吵架,吵着吵着也能了解个大概。这样到时候学起来可能会比较轻松,做 Assignment 也会比较容易上手。这个课程的课件 PPT 是真的极其抽象,只是各种名词和概念的堆砌,如果零基础入门,请不要指望能读懂。
DI31002 - Information Security
这个课的内容还是比较丰富的,会涉及到很多信息安全的相关概念,比如一些加密方案,哈希函数,黑客攻击方法等,还会了解到很多与日常上网息息相关的概念,比如公钥证书、数字签名、HTTPS 等。
Assignment 情况
这个课的 Assignment 其实挺有趣的。
共有两次 Assignment:
Assignment 1 - 应用密码学
5 人小组作业,在学期中期。
这个作业需要使用 C++ 编写一个安全的登录程序和一个留有后门(即能够通过某种方式在不知道某个用户的密码的情况下成功破解登录)的登录程序。作业会给定一个 C++ 头文件(定义了登录成功和登录失败需要调用的函数)以及一个 txt 文件(存储了所有的用户信息,含用户名及其使用 SHA256 加密的密码字符串)。
安全的版本特别好写,只需要简单地实现一个读取用户输入用户名/密码,并对密码进行加密并在 txt 中查找匹配的代码逻辑即可。
对于后门版本,你们小组留的这个漏洞是不可与其它小组分享的,因为 Assignment 2 就是需要所有小组互相破解,而且你们小组的程序的被破解情况将影响小组在 Assignment 2 的分数。至于需要什么样的漏洞,是完全由该小组自由决定,可以大胆发挥想象力,但不可从 SHA256 加密算法本身下文章(比如利用哈希碰撞等)。
注意,后门版本代码的长度也会决定分数,代码越短,那一部分的得分就会越高,因此精髓就在于编写既隐蔽又精简的漏洞。代码长度计算方法是所有逗号和分号的数量,如果使用宏,一视同仁。那一部分的每个得分档次都规定了一个最大数量,算出数量后,所有进入 A 档的小组会根据数量排名来最终赋分。
同时 Assignment 1 还要求提交一个报告,详细讲解你们小组的漏洞定位,并详细说明如何利用该漏洞来破解。(当然,这个报告也需要严格保密)
需要的技能如下:
Assignment 2 - 道德黑客
5 人小组作业,分组与 Assignment 1 一致,在学期末。
这个作业需要提交一份报告,分为两部分。
所有小组的后门版本代码都会被下发,每个小组需要选取 5 个漏洞作为破解对象(不允许选取自己的),并在报告的第一部分中详细分析定位每个对象的具体漏洞,并阐述破解方法。
同时,还会有一些既掺杂安全版本又掺杂后门版本的代码被下发,在报告的第二部分中需要建立一个表格来对这些代码程序进行分类(即你认为每个程序是安全的还是有后门的),不需要对筛选出来的后门版本进行分析。由于我们是 DIICSU 第一届,这些代码疑似都是从邓迪那边摘取过来的,不排除以后几届的这一部分会采用一些我们写的代码版本。
小组在这个作业的得分会取决于小组的后门程序被破解的情况,被破解的越多,就会被扣越多的分。被破解的定义是有其他小组在报告的第一部分中选取了你们小组的程序,且分析正确。
同时 Assignment 2 还有一次答辩,讲解小组破解的五个后门版本,以及自己的后门版本。
需要的技能如下:
考试情况
这门课程有若干课堂小测,几乎每周都有(我们这届因为教育局评估的事情有几周没有考试,但是都会与后面的考试合并)。每次小测都含有 10 道左右的单选/多选题,会涉及到最近所学的概念,大部分 PPT 都会覆盖,只出现了极个别 PPT 未覆盖的情况(也应该是上课讲了)。你当然可以挂一个 GPT 窗口当科技战神,但是不要依赖,一是 at your own risk,二是它在这个领域莫名不太靠谱,还是建议自己好好复习下。
除此以外还有期末考试:机考,120 分钟,10 道客观题 (单选/多选混杂,部分多选题错选会倒扣分),10 道主观题 (偏场景向,几乎每题都有 2-3 小问)
我们这届期末考试,客观题大部分来源于平时的小测题目,只是选项会打乱并改一下啥的。主观题基本选材自 PPT。
经验分享
首先是后门版本编写什么样的漏洞。我之前提到了代码越精简得分越高,但强烈建议不要过分追求精简,只需确保能进入最精简的 A 档就好了,不用再力争第一啥的。因为代码多写一点而失的分远远小于 Assignment 2 中因为这个漏洞太明显而被大量小组破解所失的分。当然,大神请忽略。
我们这一届就有小组代码写的很精简,然后导致漏洞逻辑十分清晰,在 Assignment 2 中被几乎所有小组选中,损失惨烈(甚至 Assignment 2 发布的当天就被很多小组当堂破解)。我的建议是,可以适当添加一些干扰性逻辑,当然也可以整活(我们届很多这么干的),比如变量名乱取,乱用各种宏,乱用各种标签和 goto...只有想不到没有做不到。
而且强烈建议,代码完成后,喂给 GPT 老师让它尝试破解,根据 GPT 的反馈来针对性加强。最终版代码最好能抵抗 GPT 的至少三轮分析(在给定提示的情况下)。
其次这个课的 PPT 质量其实很高,还有利用了很多卡通人物 (Alice, Bob, Carl) 来形象阐述信息传输的过程,当然学到后期还是会有一些图(比如复杂的消息/密钥传递流程)比较抽象难以理解,非常正常,其实这个时候你要去慢慢分析,还是能悟的,而且期末考试其实不会达到这种难度。
DI31003 - Database Systems
孩子们是时候学数据库了!CRUD 启动,苍穹外卖启动
但还不够,除了 RDB 和 SQL,这个课还会讲到商业智能(OLAP,ETL,数据挖掘)以及一些其它数据库的概念。中期会讲到 PHP,但是不考。
Assignment 情况
Assignment 1 - 数据库设计
6 人小组作业,在学期前期。
Assignment 1 和 2 实际上是连贯的,1 是设计阶段,2 就是完整开发出一个标准的前后端分离项目。Assignment 1 中,小组需要自己“成立”一家公司,设计公司的名字,Slogan 等,然后自己制定这家公司的业务细节,然后针对这家公司的实际情况来设计数据库的基本结构。
需要提交一份报告,分析公司的一些基本情况,数据库方面,需要讲解分析出的实体和关系,画出 E-R 图,并给出所有实体的 CREATE 语句。同时,还需要提供一些最终项目中前端 UI 的概念效果图,比如后台管理界面,顾客界面,员工界面等等,具体情况具体分析。
需要的技能如下:
- 需要画 E-R 图,因此涉及到一部分 OOAD 的相关知识
- SQL 基础
- UI 设计能力,比如使用 Figma,当然也可以找一个网站当作参考然后 F12 魔改,最次也可以直接画手稿,但毕竟这样得分可能低
Assignment 2 - 数据库实现
6 人小组作业,分组与 Assignment 1 一致,在学期末。
基于 Assignment 1 中的数据库设计(允许微调),实现完整的前后端分离项目。需要确保最终项目有不同的用户视图,并需要使用到 SQL 中的 View 以及一些复杂 SQL 操作。
部署方面,学院提供了 Amazon AWS 服务器,但极其难用,我们届很多组都是最终自己爆米去其他地方部署,比如阿里云等。
技术栈方面,除了数据库方面必须用 MySQL 其他不做限制。其实这个课程会教 PHP,但是期末考试不考,我们这届许多组也没用这个写,比如还是走前端三剑客+后端 Java/Spring 路线。
最后需要提交一份报告,讲解项目的技术细节,同时需要附上访问数据库的地址、数据库用户名+密码,所有用户身份的用户名+密码、网址(如有)等。
需要的技能如下:
考试情况
期末考试:笔考,120 分钟,10 道主观题 (大部分纯解释概念 + 小部分场景向),20 道客观题 (19 个单选 + 1 个填空)
这个课最后会给一个复习 PPT,确保把里面涉及到的所有知识点搞懂。
经验分享
后期的商业智能部分 PPT 基本上变成了纯文科,有地方可能很晦涩。重点在于你要搞懂它这个东西大致在干什么,解决了什么问题,以及有什么优点和缺点,其他地方其实可以忽略。
Assignment 2 的时间留了两个月,时间其实够用,但是前提是尽量早启动。我们最后半个月才启动就非常赶,尤其是测 bug 以及部署,会很费时间精力,何况还有其他课程的各种事情。
2 公共课
公共课方面我也来随便说两句吧
创新创业导论 (aka 双创)
有一个小组作业,需要完成一个商业调研并进行汇报。
期末考试是开卷,我们考了一道论述题一道案例分析题,而且就算平时不听也完全有话可说,没必要有压力。老师曾说过这个课后湖那边卖的资料价值不大,其实我感觉也确实如此。
毛概
也有一个小组作业,就是搞一个参观并完成一个报告。
期末考试前,老师很良心地把每道单选/多选/简答/案例分析/论述题会考哪里都划出来了(直接对着目录划的)。应该是这门课历年的传统。复习的时候就是客观题去刷对应的章节部分,主观题使劲背就完了。考试当天感觉就是在默写。
Others
体测
需要测的项目有:
- BMI
- 肺活量
- 坐位体前屈
- 立定跳远
- 50m
- 引体向上 (男) / 仰卧起坐 (女)
- 1000m (男) / 800m (女)
注意大部分项目的标准都比大一/大二更严了,有小程序能够计算成绩 (没给赞助,故不说是哪个),心里没底的可以去上面估一下。
特别注意: 一般体测在 11 月中旬,恰好卡在长沙气温断崖期,前几天要保持关注天气预报,一定注意保暖。 (我们体测那天刚好是降温第一天,一大早出门给我冷的,还得回来加衣服)
如果不幸挂掉,则参加下学期初的补考。补考仅测 800m/1000m。有保研打算的尽量注意,我不清楚体测挂了会不会影响。
形策
就一破水课,没啥好说的,就两件事:
- 别忘了打卡 (上课前去刷卡机上刷)!其他公共课考勤分可能不看打卡机情况,但形策这个打卡数据真的 matters,忘了的话处理起来很麻烦
- 也别忘了要在某红色流氓软件上做两次小测,因为 deadline 在期末,别忙别的事情最后给忘了
----- 分割线 ----- Split Line ----- 分割线 ----- Split Line ----- 分割线 ----- Split Line -----
以上
Made by WaterCoFire
v: Gem_Iridescent
有问题欢迎留言捏