当AI能写代码、做设计、翻译文章
非计算机专业的同学
如何学会驾驭AI
成为“大众开发者”?
复旦大学今年春季学期
全新开设的AI大课
“生成式软件开发”
给出了一个有趣的回答:
学会跟AI
把软件“聊”出来
让非专业学生
也有机会成为程序员
01 一门培养“大众开发者”的新课
周五上午第三节课,三教101教室里,同学们正盯着屏幕。
讲台上,计算与智能创新学院副教授吴毅坚正在演示一个“天气出行规划系统”,他对着AI工具一句一句描述需求,不一会儿,一个带前端界面、后端接口的网页应用就出现在屏幕上。
台下,社会发展与公共政策学院23级本科生廖书伦记着笔记。他上学期试用Trae这种AI原生集成开发环境帮自己写过爬虫,但自己的自由探索经常发现AI写的代码就像“抽卡”,能否跑起来就像是许愿。“上了这门课才知道,用AI写代码也是有章法的。”
这门“生成式软件开发”课程由计算与智能创新学院副院长彭鑫牵头,张天戈、吴毅坚联合主讲,专门面向非计算机专业学生。今年春季第一次开课,便吸引了全校五十余名学生选修。
彭鑫回忆,去年年底斯坦福大学开设了一门基于自然语言编程的课程,这让他想到复旦当时正在推进AI大课建设,面向全校学生提供人工智能相关课程,彭鑫团队本身就在研究AI辅助软件开发,也有成熟的技术积累。
他很快邀请了有丰富企业开发经验的张天戈和长期从事智能化开发研究的吴毅坚加入授课教师团队。课程推介中那句“把软件聊出来”的吸引了不少同学的目光。
在彭鑫看来,这并非夸大其词,
“我们进入了一个‘大众开发者’的时代。过去,只有受过专业训练的程序员才能开发软件。现在,AI帮你把底层的实现细节屏蔽掉了,你只要把自己的问题讲清楚、拆解好,AI就能帮你生成能跑起来的软件。”
他也强调,这里的“程序员”和专业开发者仍然有区别。专业开发者要面对需要具备高可靠性并进行长期维护的复杂系统,比如大家每天都在使用的在线社交、网上购物以及电信系统,需要深入掌握算法、数据结构、操作系统等知识并驾驭复杂软件架构。而大众开发者只需要学会如何与AI对话,就可以为自己定制小工具、小软件。
02 降门槛不降标准
工程化思维是关键
给非计算机专业同学讲课很有挑战。吴毅坚坦言:“讲深了,大家基础跟不上;讲浅了,又怕大家只停留在表面。”最终团队决定从软件工程的核心思想中抽取精华,用非专业人士能听懂的方式呈现。
课程从第1周到第16周层层递进,初期用纯对话模式开发简单应用,遇到复杂度瓶颈后自然引入问题分解与规划、上下文工程、Spec(规格说明)驱动开发、版本管理、软件测试等工程化手段。
张天戈说:“如果只教聊天式生成,价值并不大。当项目稍复杂,学生立刻感受到没有版本管理和问题分解就寸步难行,这时再教这些方法,他们吸收特别快。”课程每个阶段都配有详细的实验作业,一份文档长达六七页,步骤、验证方法、评分标准写得清清楚楚。
相比软件工程专业课,这门课淡化深入的软件设计与实现机制,聚焦需求拆解、版本管理、测试验证、增量迭代等高层工程素养。
为了把硬核概念讲明白,老师们用生活化的比喻来翻译。讲到版本管理,张天戈把它比作“时空穿梭”:项目像一条时间线,可以在任意节点回到过去。同学们听完后纷纷给自己的项目建起了Git(分布式版本控制系统)仓库。讲到问题分解,彭鑫用“办一场晚会”举例:如果助手能力很强,给一个模糊目标就行;如果助手能力一般,就得把任务拆成“买饮料、买零食、布置场地”一步步交给他。
AI也是如此,需要学会拆解问题、分步骤推进、迭代优化,并根据大模型的能力决定问题拆解的粒度以及上下文提示的详细程度。这些能力不依赖编程知识,却需要工程化思维。
03 “人人都是程序员”的真正含义
为什么给非专业同学开这门课?
彭鑫举了一个例子:20多年前选课还要填纸质表格,后来有了选课系统,但信息化只能覆盖全校层面的共性需求。如今,每个同学、每个专业特有的个性化需求,比如,社会学专业的文献管理工具、临床医学的病例分析系统、法律专业的判例文书整理助手,过去因为开发依赖专业程序员、成本太高而只能停留在想法里。现在借助AI,一个非专业学生可以在几周甚至几天内自己“聊”出一个可用的软件。
当AI把编码门槛大幅拉低,未来“程序员"不再仅属于机房,也可属于实验室、档案馆、法院、诊室与田野……
张天戈在开课前做过一次问卷,想了解同学们希望用这门课解决什么问题。答案五花八门:有人想做学习笔记管理,有人想做实验数据分析,有人想做一个互动式英语学习网页。“虽然很多想法还很小,但说明大家已经意识到,AI可以帮助他们把专业需求变成现实。”
在面向计算机专业的软件工程课上,彭鑫会故意加大课程项目难度,逼着学生意识到不能全靠AI。而这门课定位不同,学生用AI生成代码、关注测试与验收即可,不必深究每行实现。但其中的分解问题、管理版本、验证预期等工程化思维,反而变得更加重要。
“只要你懂得用自己的专业眼光发现问题,用工程化思维拆解它,再用自然语言‘聊’出属于你的那一个软件。”
04 为什么AI要听我的?
“助教真的非常用心,他们甚至会把每一步操作都演示出来,我们跟着做。哪一步卡住了,群里问一下,很快就有回复。”管理学院23级本科生曾悦说。
这门课除了3位授课教师,还配备了2位助教。助教徐宸是计算与智能创新学院的研究生,研究方向正是AI辅助软件开发。从开课前两个月开始,他和另一位助教陈董祺就投入到Lab制作、demo开发中。“最难的是怎么从非专业同学的视角去理解问题。”徐宸说。
实验作业会匹配课程进度不断进阶,并配有详细注解
每周的实验课上,助教会帮助同学先梳理知识点、演示demo,随后同学们动手完成当周任务,有问题随时提问,现场解决。
有一次,一位同学提问:“为什么我的代码写完了,但跑起来是白屏?”徐宸发现代码本身没问题,但那位同学不知道如何启动一个网页,团队通过设置实践课课,手把手教大家怎么部署、怎么运行。
还有同学问:“为什么AI要听从一个比它能力还差的人去指挥?”助教们从AI的原理解释:大模型本质是一个“下一个词预测器”,没有意识,不会嫌弃你,也不会自作主张。正因为如此,你需要学会正确指挥它。
陈董祺在批改作业时发现一位同学做了一个仿Windows 98风格的网页应用,界面精致,甚至有桌面宠物元素。“这种创意,我们计算机专业的同学反而很难想到。不同学科的碰撞真的很有趣。”
05 从跟AI瞎聊到跟AI合作
学期接近尾声,同学们的变化很明显。
曾悦以前只学过一点Python基础,勉强能读懂代码但写不出来。上了这门课后,她给上小学的妹妹做了一个英语学习网页,有点击、有积分、有奖励机制。“虽然还比较基础,但妹妹在用,她觉得很新鲜。”
数学科学学院23级本科生任昊来上课前习惯“古法编程”,经常遇到上下文管理等问题,近期项目式开发环境的方法也不太熟悉。几次课程实践与课后讨论下来,他在Agent Harness Engineering环境下感受到了明显变化。“现在自己修改的代码部分少了很多,验证想法的速度变快了,工程落地的效率提升了不少。”
廖书伦则有更深的体会:“我最大的收获是一套工程化的思维方法。以前做事容易想到哪做到哪,现在会先拆问题、做规划、分步骤推进。这对我的社科研究也很有启发。”他正在自己动手做一个轻量级应用,有登录注册、用户数据存储、大模型API调用。
张天戈也观察到,一位临床医学五年制的同学,遇到问题后自己把故障层层剥离,定位到最小的可测试单元,再找他确认。“我当场表扬了她,她的模式已经非常工程化了。”
06 当AI抽掉了梯子
你可以自己搭一个新的
在一次教学分享会上,彭鑫提出一个观点:AI正在抽掉能力成长的梯子。过去,学生从小任务做起,一点一滴积累,在痛苦中获得能力。现在,AI可以代劳几乎所有“低阶”工作,学生很容易被架空。
虽然这个观点针对的是计算机和软件工程专业的学生,但在这门课上,这个问题的答案有了另一种可能。
“AI抽掉的是旧的梯子,但你可以用它来搭一个新的。你不必从头学习编程的每一个细节,但你要学会拆问题、做规划、验证结果、迭代优化。这些能力,在任何专业领域都是最值钱的。”
这门课是今年第一次开设,没有现成教材,没有可借鉴的教案。课件几乎是“每周上课前一周还在更新、调整”。“我们是边讲边摸索,边看学生反应边调整。”彭鑫说。
让他意外的是,学生对这门课的接受度非常高。50多个选课名额很快报满,还有外校的老师每周来“蹲守”课件。
“工程化思维也是可以跨专业迁移的。”吴毅坚补充,选修课程的留学生在语言不完全通的情况下也能跟上增量迭代思路,有修经济金融的同学将课程方法用于专业数据挖掘讨论。
第一轮授课即将结束,团队也在总结经验。
“通过学期初的调研问卷与同学们的课堂反馈来看,很多同学对自己的专业领域里有哪些可以信息化、智能化的需求,并不清楚。”吴毅坚在最近的一次课上,花了一些时间和同学们做交流,了解每个人想做的具体应用。
因此,明年的课程计划增加“需求挖掘”环节,帮助同学们结合自己的专业,找到真正值得做的项目。“这有点像产品经理的工作:先不管怎么做,挖掘一下自己的领域里有哪些地方可以借助AI提高效率、改善质量。”彭鑫说。
彭鑫还发现,非专业同学与AI协作是否高效,取决于是否具备基本信息化素养,比如知晓模态窗口、分组排序等术语。“未来,我们也考虑在前序中加入信息化素养模块。”
正如廖书伦在课后评价中所说:“人人都是程序员,这件事取决于你这个人本身。你聊出来的软件有多厉害,实际上是你自己有多厉害。”
组稿:校融媒体中心
文字:赵天润
摄影:梅旭普 张琪
编辑:高康珵
责编:赵天润
复旦大学版权所有
联系邮箱:Fudan_media@fudan.edu.cn
特别声明:本文经上观新闻客户端的“上观号”入驻单位授权发布,仅代表该入驻单位观点,“上观新闻”仅为信息发布平台,如您认为发布内容侵犯您的相关权益,请联系删除!
热门跟贴