非官方网站,与上海交通大学及其任何部门无隶属、授权或合作关系。
软件基础实践 · 修读回执档案
共 5 份可公开修读回执
? 最相关怎么排
“最相关”根据评论内容完整度、有用票及课程教学信息丰富程度排序,不按好评或差评倾向排序。
按有可靠绑定的教师调档
2025年秋季学期 · 杜冬冬、董明凯历史匿名回执 ·
### 先把结案陈词甩出来:学的东西散得跟五谷杂粮混盒,workload还偏沉,打分气质也并不能百分百照应你的码力等级。但也怪不得——你看起来没得选 :)
讲课唠的那些东西几乎派不上用场,差不多等于零,还远远比不上自己入project里边挖坑边捡到经验有用。
**上机考试要在两课时内拧出一个小型Qt项目(开卷,GUI和算法两坨全要)。** 我个人真心看不懂硬要从光秃秃开始手搓GUI是在追求什么美学,毕竟真干活的时候让AI接管GUI明显效率杀人。可考试里**GUI和算法的分数占比差不多半斤八两齐头并进。**
唯一的甜头是等你搓完QLink和QBasic两个项目,码力好歹能涨一丁点。当然你要是兴致足够旺,相同的时长拿去闷头自撸感兴趣的小工程,薅到的成长差不多也能撞一头。
以上泼给尚未踏进这门课的兄弟姐妹当个参照~
学生体验,不是官方事实。评价教学,不评价人格。2025年秋季学期 · 杜冬冬、董明凯历史匿名回执 ·
这是本课第四次开麦。
首先,前三位老哥说的每一个字,我全盘接收,字字血泪,句句实锤。
然后,我是24级学生,重点扒一扒前人点评里QBasic塞进战编译这件事。
24级QBasic实验文档在此:
https://notes.sjtu.edu.cn/s/NSfRuIN9O#Minimal-Basic-or-QBasic
睁大眼睛看,20分就砸在这个模块上:
(20’) Your interpreter should be able to emit the right Y86-64 statement.
Let statements can be translated into Y86-64 commands correctly.
下面开拆《战编译进SEP:QBasic中惊现Y86-64编译器》的爆点
# 爆点一
我从20级问到23级,学长学姐问了个遍,这个模块要把Basic(高级语言)翻译成用Y86-64指令集架构的汇编语言,绕不开Y86-64的assembler和simulator,可这两样都躺在软工大二下ics2的lab里。我们现在还在ics1的池子里扑腾,Y86-64长啥样都没见过。等于把ics2硬生生前置到sep,然后按着你的头让你自学成才。
# 爆点二
顺着爆点一往下,既然是要现学Y86-64指令集的assembler和simulator,那指导材料呢?如果指导管够,这不算爆点;如果指导稀薄到近乎让你手搓火箭,那就是核弹级爆点。
先看一个正面教材:sep的lab2(模拟Y86-64处理器),同样要啃Y86-64指令集,实验文档在此:
https://notes.sjtu.edu.cn/s/vx6SErIhT
这个lab我做过,也跟同级不少人交流过,大家一致认为这lab虽新,但因为:
* lab2讲解和指导充分,边界条件也喂到嘴边
* lab2虽然碰Y86-64指令集(也是ics系列前移),但整体要求低,类似于给你个差不多的架构,自己填填空,工作量适中
* lab2配备了全套测试样例的测试脚本,随时本地测试,本地全过线上就过,而且错误信息清楚得像亲妈提示
所以lab2虽然也捅了Y86-64处理器,却没炸,甚至相当一部分同学体感很不错。
看完正面典型lab2,再看QBasic:
* 对Y86-64处理器的assembler和simulator没有任何讲解
* 工作量巨大,从零开始手搓,工作量巨大
* 无测试样例
看到这里的你,应该明白了:同为SEP,同为Y86-64,lab2没爆而QBasic爆了,无非是剂量问题,前者设计合理,后者纯纯逆天造火箭,剂量决定爆点。
我非常反感此做法,即使QBasic的拓展分部分年年不一样,24级以前的拓展部分看起来还算正常,比如加字符串变量类型,或者允许断点调试和单步调试,不至于把编译那套塞进去。
***
# 后记
为什么大家都在喷编译,这里有个历史背景:
软件工程专业大三上分方向,大二下就要在:
* 编译原理(大名鼎鼎战编译,系统软件方向)
* 计算机图形学(数据媒体方向)
* 智能信息系统建模(数据智能方向)
三选一,选定方向。
在现在研二研三的软工学长眼里,当年系统软件是炙手可热的爆满方向,数据智能是冷门角落。
可现在完全逆转了,因为某些原因。
但就算不便说出原因,看到这里的你也一定懂,大家对compiler相关的东西态度已经相当差了。
***
本节课所谓的Qt,无非就是前后端混合+Cpp开发的一坨屎,把前后端混合和傻卵工程语言cpp两大坨搅在一起。
但凡看过一节web课,见过RESTful开发规范下前端传来的漂亮标准的请求路径和请求参数,用过springboot的架构和注解,体验过Java里变量要么基本类型要么引用类型、根本不存在傻逼指针和内存泄露的风险,用过IOC和DI,都不会觉得连解耦合都一点不提的傻逼sep会是什么好东西。
# 最终评价就是,这门课非常拧巴
要培养开发经验和工程能力,非要吊死在你那cpp上干嘛?要做项目、培养读中等规模代码的能力,是不是应该给一份漂漂亮亮的接口文档,然后把工程上解耦合的思想好好跟同学说一说呢?
## 培养读中等项目的能力=培养拉前后端混合的中等型号屎山的能力。
学生体验,不是官方事实。评价教学,不评价人格。2025年秋季学期 · 杜冬冬、董明凯历史匿名回执 ·
课程内容:lab+Qt Project
上课自由度:高,本学期不签到
授课质量:本质上就是靠lab和proj一路push你自学工具和技巧,靠大量写代码磨出点代码能力。当然啦,要是你本来就有自学计划、不需要这些lab来推,那这门课的工作量还是挺占时间的。
再编:y86那部分直接一刀切掉了,主打个听劝这块👍。目前刚干完第一阶段,对项目的结构和思路大概有谱了,但初次瞄第二部分真是一头雾水。摆得和以前断点调试、分步执行一上线就能看出大致的实现思路相比,这回的内容实打实有点太超前了。既然是这状况,SE是不是该重新盘一盘布置这些lab或project的初衷——到底是单纯堆工作量凑个标准的量,还是想让大家在肝lab的过程里真学到有用的技能。正如开课时说的,这门课的初衷是让大伙学会写代码,来补平台课培养码力不足的缺口。一个lab或project,要么起巩固知识的作用,给学生一个亲手摸代码的机会,别塞太多额外知识,让大家在已有知识框架里就把lab干掉;要么想引入新知识(类似上个学期的lab2 y86),那至少得配足够的文档帮你理解,要么给出一些测试样例(不用全给)让你写的时候有迹可循,而不是从头开始自学,两眼一抹黑地摸瞎找corner cases还倒贴大量额外时间。就以这次QBasic来说,文档里对y86和BASIC倒是各自讲了挺细,可对实现第二部分最核心的BASIC怎么转y86就一带而过,总共就几处简单情形的代码对应加说明。这对没有编译知识背景、或者代码基础稍弱的同学真的不太友好(目前ics中学到的东西,也不过是要求在C和汇编之间能对上号,压根没提这俩之间怎么互转),就眼下手里这点知识看不出怎么转,那必须得贴上可观测的学习成本。再想想优先级,括号、还有自己实现的乘/模运算的CompoundExpression在y86汇编里该怎么处理?边界条件怎么考虑?什么时候该用哪个寄存器?需不需要管寄存器分配?这些问题要是文档里都洋洋洒洒讲到,直接能少绕弯路——可实际上大多没有或者干脆一笔带过,于是理所当然把人惹毛了。在绝大部分人都没编译背景的情况下,文档又语焉不详,就算难度客观上还算合理,那刻板印象里把编译和难划等号,必然让大家把project的难度往上高估一大截。要真有完备的文档加本地测试,也不至于大💥特💥成这样——这正是SE往后该盯着的。毕竟AI时代,一个任务合理,或许真能让人产生自己动手写的冲动;不合理的话,大家大不了交给AI完事,这么一来这些任务就失去了原本的意义,沦为一种挤时间的工具,那就和人人喊打的物理实验报告没啥区别了🙂↕️
学生体验,不是官方事实。评价教学,不评价人格。2025年秋季学期 · 杜冬冬、董明凯历史匿名回执 ·
## 课程内容
左看右看上看下看,凑近了看,就俩字拆成仨:C++。
2025 培养计划删了,放大纲跟拿废纸糊窗户差不多,就当是官方劝退广告。按你软这爹味拉满的培养方式,明年就算删了几门课,也要在别的地方给你安排坐牢,尤其是那个本可以拿去实习的宝贵暑期,坐,都给我坐。
内容没听过一节课,此处跳过评价。但离谱的是不听课照样能写 lab,这足以说明授课内容纯属装饰。这学期终于反应过来自己落伍了、学院不太行了,要追热点了讲 MCP 讲 Agent LLM,可你瞅瞅你手里攥的是啥抽象语言?C++?(建议和隔壁那门用 C++ 调 LLM API、用 C++ parse LLM 输出的 se 特供离散,凑一桌打麻将)
## 上课自由度
人不到都行,但这课横跨大一下、大一暑假、大二上,上 se 的课意味着你的实习、自我提升,哪怕是用来躺着回血的时间,全被摁在地上动弹不得,所以是 0。
## 考核标准:**请注意,这门课仅有2学分**
- lab / 大作业:
- 一堆 C++ lab,给了文档(功能需求)跟伪代码(算法)让你实现,然后你得跟一个查无此人、不吐一个字的测评机对线,纠结到哪个换行哪个空格,最后还得跑共享文档里去找答案或者求爷爷告奶奶
- 一个暑期 C++ Qt GUI 大作业,loc 3k 左右。但实际允不允许掺别语言,允许范围未知
- 一个期末 C++ Qt Basic interpreter 大作业,工作量未知
- Qt 上机考
- 考勤
## 授课质量
一脚没踏进去过,进去也是白进。
学生体验,不是官方事实。评价教学,不评价人格。2024年秋季学期 · 杜冬冬、董明凯历史匿名回执 ·
课程内容:挂个名义布置lab
上课自由度:0
考核标准:一堆lab+QLink+QBasic+机考
授课质量:教得又杂又多,但如果你之前不会的话等于没教,上课就是到机房写lab。
这么多工作量是2学分的课?
两个proj(尤其是QBasic)评分标准跟天书一样,最后就是看到什么要求就往代码里堆史,写出两坨大的。
对代码设计能力的培养不能说毫无作用,只能说完全知道自己写的是什么构式。
学生体验,不是官方事实。评价教学,不评价人格。返回合同及回执摘要