课程评价_Rust程序设计语言
关于老师由 PL 组的冯洋老师讲授,上课风格很随和(甚至有些随意);讲课水平一般:自己确实是懂,并且很努力在讲明白,但确实是讲不太明白。
不过这门课是语言入门课,老师对语言基础的讲授并不是重点;冯洋老师会补充一些在使用 Rust 某些特性时的经验技巧、一些 Rust 编译器的实现方式与特性、Rust 部分机制背后的设计哲学,这部分非常受用。
上课氛围比较自由,冯老师更像是一个索引和答疑者,不点名。
前置知识一门强类型高级语言的使用经验(Cpp/java/Go等)
课程内容2025 年是第一年开课,内容不全面、质量一般,主要覆盖:
Rust 基础语法
Cargo 包管理
所有权
错误处理
生命周期
并发编程
该课程主要基于冯洋老师自编的教材,直接对着教材看 Rust Doc 就可以。主要锻炼来自于 Lab。
作业、考试与得分没有作业和考试,评分基于 Lab。Lab 为四选一完成:
Git
数据库
Lox 解释器
植物大战僵尸
需要提交 OJ(植物大战僵尸除外),都会有一些额外加分项,在答辩时呈现。可3人组队完成,1/2人队伍有10%和5%的分数加成。 ...
课程评价_最优化方法导论
关于老师由 AI 学院的张立军老师授课,老师本人方向偏向机器学习理论,跟课程内容还算比较对口。
前置知识线性代数(范数、矩阵求导等)
课程内容凸优化相关的基础内容,包括:
数学基础
凸性判断
对偶问题与拉格朗日乘数法
KTT 条件
梯度下降
线性规划
都是凸优化中最基础的内容,主要难点来自于矩阵运算(求导、取极值等)的规则。对偶问题和 KTT 条件的推导比较省略,需要背公式。
笔者上这门课时,全程都在怀疑自己学习/做题的动机:在每一个阶段都无法理解为什么要学习这些技巧和操作;在后面的章节中才会实际应用到之前看似无用的炫技操作。所以听不太明白是正常的,对着 ppt 能理清逻辑即可。
作业、考试与得分基本为上述每两章对应一次作业。单次作业包含一些基础的题目,耗时约 5 小时。
考试难度远低于作业,会考察一些来自于作业的概念和技巧(和密码学原理感觉很相似)。
About me
ResumeContests
CSP2019(S): First Prize (2019.11)
ICPC2022 Nanjing Regional Contest: Silver Medal (2023.1)
CSP31: Top 0.33% (2023.9)
CSP34: Top 1% (2024.5)
iGEM (as a member of NJU-China Dry Lab): Winner of Best Software & AI Project (2024.10)
CCSP2024: Gold Medal (Rank 12) (2024.10)
Courses (Extracted)
Teaching Assistant of 信息与计算科学导论实验 (2023 Fall).
I’ve designed some unconventional programming problems for beginners, contact me if interested.
GPA (First 2.5 years): 4.64/5.00
离散数学(强基, ...
编译原理_期末复习
第三章 词法分析
词法分析的作用
词法单元的规约(正则表达式)
词法单元的识别(状态转换图/有穷自动机)
词法分析器生成工具及设计
词素/词法单元的区别:词素是输入的东西,词法单元是匹配出来的东西模式:词法单元对应的词素可能具有的形式正则表达式:Regular Expression;优先级:* > 连接符 > |
状态转换图、NFA、DFA:NFA拼接、RE转NFA、NFA转DFA、DFA最简化:见 FLA
第四章 语法分析概念
句型/句子:句子不包含非终结符
语言:所有可接受的(推导出来的)句子的集合
消除二义性
此处不考;优先级上升算法处考
消除左递归
立即左递归的消除:$$A\to A\alpha_1|A\alpha_2|\cdots|A\alpha_n|\beta_1|\beta_2|\cdots|\beta_m$$改写为:$$A\to \beta_1A’|\beta_2A’|\cdots|\beta_mA’$$ $$A’\to \alpha_1A’|\alpha_2A’|\cdots|\alpha_nA’|\varepsi ...
形式语言与自动机_实验报告
项目地址
实验完成度
完成了 PDA 和 TM 的解析器、模拟器
按手册要求完成了 TM 的 verbose 模式
完成了 PDA 的 verbose 模式,对非法输入的处理同 TM,对正常的模拟输出格式如下:123456789101112131415161718192021iad@LAPTOP-H96V848V:~/fla$ ./bin/fla -v ./pda/anbn.pda abInput: ab==================== RUN ====================State: q0Input: [a]bStack: z---------------------------------------------State: q1Input: a[b]Stack: 1 z---------------------------------------------State: q2Input: ab[]Stack: z---------------------------------------------State: acceptInput: ab[]Stack: ...
计算机网络_期末复习
Chapter 4 - 网络层:数据平面IPV4与无类别域间路由选择(CIDR)IPV4:
$32$ 位,$X.X.X.X/Y$ 代表前 $Y$ 位掩码的子网。
路由器的每个端口作为子网的边界
广播地址:255.255.255.255 & 子网掩码,用于全子网广播
标识地址:子网内IP | 子网掩码,用户子网对外标识
因此,$/Y$ 的子网可用 IP 数为 $2^Y - 2$
路由器与路由表
路由器
在输入和输出端口处均会发生拥塞
处理拥塞的调度算法:
先进先出
优先权排队
加权公平排队(带权的 Round Robin 轮盘赌)
MTU:最大传送单元;超过 MTU 大小的数据报需要分片
分片:切分大数据报的载荷,分成多个小数据报
额外设置一个标志位代表是否是最后一片
路由器每个 WAN 口都有一个独立的 IP 和一个独立的 MAC
路由表
跳转算法采用最长前缀匹配算法
路由器通过 OSPF、BGP 等协议填写路由表
路由表的例子:假设我们有一个网络设备(如路由器),它连接到以下网络:
本地网络 A: 192.168.1.0/24 ...
编译原理_实验报告
项目地址
Lab 1编译方法在 Code 文件夹下输入命令 make 即可自动编译生成 parser 文件。
功能简介文件结构如下所示:
123456Code├── Makefile├── lexical.l├── syntax.y├── syntaxtree.c└── syntaxtree.h
其中 lexical.h 存放与词法分析相关的 flex 代码;syntax.y 存放与语法分析相关的 bison 代码和 main 函数;syntaxtree.h 和 syntaxtree.c 用于存放与语法树相关的结构体定义和函数。
词法分析对于ID、INT和FLOAT,我使用了这样的正则表达式:
123INT 0|([1-9][0-9]*)FLOAT {INT}+"."{DIGIT}+ID (_|{LETTER})(_|{LETTER}|{DIGIT})*
在分析时需要注意优先级,例如先匹配 /*、最后匹配ID等。
在匹配到 /* 时,我将不断向后读取内容直到遇到第一个 ...
CS149_Lab1
Prog1我使用 WSL 进行评测,开放给 WSL 使用的有 8 个 i7-13700H,每个CPU有 4 个核心。
宏观性能度量将图像简单切割进行分配,得到度量如下:
nThreads
v1-Speedup
v2-Speedup
1
0.99x
0.99x
2
2.01x
1.70x
3
1.65x
2.19x
4
2.48x
2.56x
5
2.50x
2.89x
6
3.30x
3.31x
7
3.45x
3.81x
8
4.08x
4.11x
9
4.34x
4.52x
10
5.02x
4.74x
图片如下所示。在 nThreads=3 时明显会产生负载不均衡,负责处理中间图像的线程任务过重。
因此考虑将图像按每 $10$ 行拆分轮流交给每个线程负责。度量出的数据如下:
nThreads
v1-Speedup
v2-Speedup
1
1.01x
1.00x
2
1.99x
1.99x
3
3.05x
3.00x
4
3.96x
3.86x
5
4.89x
4.59x
6
5.87x
5.4 ...
6.824_Lab1
实验描述链接:http://nil.csail.mit.edu/6.824/2021/labs/lab-mr.html
任务:使用 Golang 实现 MapReduce 框架。
实验结果与感想实验结果:本地运行 ./mr-test-many.sh 50 测试通过。
框架和算法不难,主要是熟悉 Go 的基础语法。在这里简述一下我对 Go 的优点和缺点的认识:
具有原生的管道(channel)和协程(goroutine),对于多线程程序非常友好;在一定程度上鼓励了多线程和异步编程,甚至可以将一些经典的算法完全改为多线程版本(如遍历二叉树时,在每一个节点处开一个协程)
对 RPC 的支持非常到位,很容易进行协程间的通信和调用
运行时自带 sanitizer(race检测器)
面向对象采用了 interface 的设计,使代码统一性较高(-> 和 .);但是个人不喜欢,会使得我的代码出现混乱(拷贝和引用的 implicit 推导在 python 中我就尤为反感)
异常处理采用了C的风格,使用返回值表达;但是返回值表达不够清晰:err 是隐式强制传递的,在类型的判别上容易造成混乱;_ ...
乱转指南_安徽方向
合肥(双层)蚌埠(经凤阳、明光)来安、南京0739_南京南【G1887】合肥_08300843_合肥【K8418】蚌埠_10431110_蚌埠长途汽车中心站【凤阳城际公交CJ399路】凤阳汽车站_1150 (0552-3011179)1200_科技学院南门【凤阳8路/102路/4路】客运西站_12301240_凤阳西站【大巴】明光汽车站_13501400_明光汽车站【明光D01路】自来桥_15151520_自来桥【来安B01路】蓝天白云宾馆_16201620_蓝天白云宾馆【步行1km】紫金城南_16301640_紫金城南【来安D04B路(施磁)】青龙岔路_17301730_青龙岔路【步行4.3km】金磁家园西_18301830_金磁家园西【446路】竹镇政府_18451855_竹镇政府【632路】龙池地铁站_20002015_龙池地铁站【520路】晓庄地铁站_2050
来安时刻表:https://share.laianbbs.com/v2_1/wap/share-thread?tid=1531427
扬州(经永亭线)合肥北城、肥东、南京8:50 南京 C424 扬州 ...