面向对象分析与设计

(张煜群)CS3092025秋 2024秋 2023秋 2022秋 2021秋 2020秋 2019秋  
2025秋 2024秋 2023秋 2022秋 2021秋 2020秋 2019秋
5.9(7人评价)
  • 课程难度
    中等
  • 作业多少
    中等
  • 给分好坏
    一般
  • 收获大小
    一般
选课类别:专业任务 教学语言:英文
课程类别:专业选修课 开课单位:计算机科学与工程系
课程层次:本科 获得学分:3.0
课程主页:暂无(如果你知道,请点右上角“编辑课程信息”添加!)
点评写点评
排序学期
评分评分7条点评
user avatar   匿名用户     2024秋
  • 难度:简单
  • 作业:中等
  • 给分:一般
  • 收获:一般

张老师英文很舒服,设计模式讲的也很清晰,不签到给分也还不错

但是大部分学生学生都不上课也摆,project做的也依托

唯一不太好的就是lab都祖传,以及本人不太喜欢写java

Update

避雷。project 只看pre。认真做的、全手搓的project,没人家调包、换皮、精心为答辩准备的project分高。直接改名叫Pre-Oriented And Design 算了。评分没有细则,全主观。还有“客观”的评委取平均,只有张老师给的分高,呵呵。

不是酸。bro的project都120,做过外包,coding能力还是有点自信的。

期末也是矢。Design pattern和refactoring这种很实践、很经验的东西来考理论,八股中的八股。还有“常识题”,谁记得Java之父是余麻子?

user avatar   Bobby_2026     2025秋
  • 难度:中等
  • 作业:中等
  • 给分:超好
  • 收获:很多

本学期这门课的体感似乎有所进步👍

Lecture的讲解确实平平无奇,甚至有些枯燥乏味,几乎100%是英文讲解,听多了容易犯困,但好在不用每次都签到。讲解的内容主要包括:UML、信息隐藏、设计模式、代码重构。

Lab前半学期是本学期新增的板块:LLM & Agent,主要包含ReAct、RAG、MCP等与大模型、智能体相关的前沿知识,还是非常新奇的;后半学期就是与Lecture一致的常规内容了,用的资料跟往年一样,但是上面的“课堂练习”并不要求完成。

Assignments(15%)共有三次,每次5分。第一次作业是基于老师给出的代码模板,设计一个具备函数调用功能的微小型Agent;后两次作业就是传统内容,跟设计模式、代码重构相关。作业难度不大,且不需要在BB上提交任何代码,你只需要在Lab课上把你写的代码运行给老师看就行。

Project是本课程的核心,占比高达40%。项目要求5人一组,从给定的五个题目中任选一个,进行系统性的软件/网页开发。同样,本学期的项目新增了对AI Agent相关的要求。

我们小组的选题是“智能校园生活助手”。自由组队的时间大约有两周,在这两周内,我们4人初步组成了小组。很不幸的是,为了尽可能把每个小组填满,另一名同学被老师“硬塞”进来了,而这便是噩梦的开始……

前面说到“不用每次都签到”,那么哪些时候需要签到(占10%),或者确切地说,一定要来上课呢?第一,Project先后共有三次答辩(A. 开题答辩:第6周,B. 中期答辩:第13周,C. 最终答辩:第16周),每一次,小组内的每一位成员都必须到位,否则每缺勤一次扣2分;第二,就是Assignment的检查。如果没有在规定的Lab课时间上给老师检查作业,虽然不会扣考勤分,但是作业会按迟交或未交处理,迟交者当次作业分数减半。

那么,说说Project每一次答辩的要求:
A. 开题答辩:需要提交开题报告和答辩PPT,内容包括:①项目简介;②项目设计UML图;③小组分工及开发时间安排;④工具链,等等。
B. 中期答辩:需要提交答辩PPT,介绍项目进度(包括已完成和未完成的部分);演示已完成的部分。进度快的小组,可以提前做最终答辩,Project分数好像会直接×1.1。鉴于中期答辩距离最终答辩只有三周的时间,千万不要到了中期答辩的时候还跟啥也没做一样,不然后三周任务量会暴增,你懂的()
C. 最终答辩:无需任何附件,直接演示成品。

OOAD的Project感觉就像是一座“孤岛”,跟其它的部分——Lecture、Lab、Assignment、Final Exam看上去是“老死不相往来”。课上提到的各种设计模式,在项目开发的过程中总有种“根本用不上”的感觉。不过这也许就是进入大三以来的常态:Project显著增多,系统性思维的重要性日益凸显,对于项目的开发,我们不能再以“老师教了什么”为出发点,而应以“用户需要什么”“我们需要实现什么功能”为出发点。课上学到的东西,不一定马上就要拿来用,它只是我们“知识库”的一个entry,说不准未来的什么时候就用上了呢。

另外,虽然这门课极力鼓励Vibe coding(点赞),甚至连Project的代码都不用交(因为老师也默认我们肯定会拿AI写代码),但还是建议在修读这门课之前(至少是Project开始动工之前),对诸如网站爬虫、数据库、前端设计,甚至Agent开发等等的技能有一个初步的了解——至少,在AI把代码生成给你看时,你能看得懂AI写的是什么,你能明白怎么为它debug。

话说回来,为什么说那位同学被塞进来是“噩梦的开始”呢......因为在开题答辩之后,我们准备正式确定分工的时候,他突然“离奇消失”了,我们剩下4个人怎么也联系不上他。小组群里发了那么多条信息,他也没有一点回应;后面两次答辩他也没出现。有一次我偷偷瞄了一眼Assignment的登记记录,他一次也没交。也不知道他是退课了还是怎么了。😱😱😱我们只能4个人干5个人的活😭为了做这个Project,我们已经不知道熬过了多少个夜,破过了多少次防,甚至直到最终答辩前半小时还在做最后的调试......好在最终的答辩有惊无险,并且根据贡献比赋分制度,我们4人由于平均贡献比从20%提升到25%,可以享受6%左右的加分,最终我们的Project也是喜提满分(当然那位同学估计就惨了)。只能说,关于组队这事,有些东西不是自己能掌控的,祝后来人好运🙏🙏🙏

我认为这门课有一个最大的亮点,就是与时俱进。从前面所说的增加Agent相关教学内容、完全放开AI编程、不要求提交代码等等举措已经能看出来了;但这门课的创新点还不止于此。相信Pinterpret这个网站已经在刚刚过去的期末周拯救了不少同学,而这个网站正是由本课程的五位助教联合开发的!最后几次Lecture上,Pinterpret也“扮演”了老师的角色,AI给我们讲完了最后的理论课内容(我感觉AI讲得比老师好🤫)。此外,另一个学习神器——Liii STEM的开发者李师兄也来访过我们的课堂,向我们推荐了他的这款产品。这两个网站/软件的共同特点有:都由南科大的学生开发;都造福了我校甚至外校师生;还有一点——与本课程内容相关的是,都内置了Agent。张老师曾经在课上说过(尽可能还原):“如今AI的浪潮席卷而来,这势必会引发我们教学和评价方式的变革;再用以前那一套方法来教你们、考你们,已经没有用了。或许有一天,大学里面不再需要教授给你们讲课了......我们南科大的初心是什么?高等教育改革!作为改革创新的先锋,我们南科人要想退缩是不可能的。”听到这番话,我莫名有点感动——或许这就是这门课的设计在本学期实现了“大改”的原因吧。

附:
Pinterpret网址:http://pinterpret.cn/
Liii STEM官网:https://liiistem.cn/

最后是期末考试(35%)。第一次课的PPT上写了:这门课的所有内容(包括Lab)都有可能会考到。我原以为期末很可能会考Agent相关的知识,甚至老师很可能会用AI出题——那这门课该怎么考呢?🤔但事实证明我想多了——其实考的只有Lecture的内容。经历了不定项选择题后,接下来就是若干个大题,每个大题涉及一种设计模式,有的小题涉及对相关概念的理解,有的小题要求画UML图,还有的小题要求写Java代码。最后一个大题是综合题,算是全学期知识的大杂烩。最后的最后,还有4分的附加题,是两个选择题:(1)哪些人属于设计模式“四人帮”(别想歪了)?(2)哪些人是在这门课中提到的图灵奖得主?说真的,考得挺偏门的,这两题随缘做吧😂

顺带一提,感觉张老师很喜欢Michael Jordan?🤭这次考试某道题目开头直接来了一句"Michael Jordan is the only living basketball king in the world (no offense to fans of LeBron James)"🤭🤭🤭当年我的JavaA也是他教的,期末第一道选择题问Java之父是谁,也有个"Michael Jordan"的选项🤭🤭🤭(虽然知道除了打篮球的Michael Jordan以外,确实还有一个搞机器学习的Michael Jordan,但还是觉得好有趣hhh😄😄😄)

期末考试总体难度不大,本人考试成绩为84分,总评成绩为95分,历经千辛万苦,终于得到了一个不可多得的A!🎉🎉🎉

user avatar   Cooper     2023秋
  • 难度:中等
  • 作业:很多
  • 给分:一般
  • 收获:一般

大课讲课依托。一会中文一会英文,云里雾里。slides也是依托,逻辑性并不强(可能和讲课风格有关)。建议自己上网了解各种设计模式。

project工程量巨大,建议早早开始学必备的skills&开始写,不然后期会很忙(尤其和其他课的ddl挤在一起)。basic requirement只有75%,剩下25%是advanced requirement,我们做了一些但并不多,但最后打分个人感觉还不错,还是建议答辩时提前演练好,把所有完整的功能和逻辑都展示清楚。

lab的assignment 挺简单的,跟着朱老师基本当堂就能写完。

考试一如既往的抽象,不定项选择+描述相当抽象的题干不作评价。大题基本上是涉及到的设计模式+uml design+refactoring,但要理解细节,还是有一些难度。

这门课的确锻炼到了project能力(自学能力)。最后建议去上嵌入式?) 白老师人美心善,听说考试出得也简单,project也没有ooad量如此之大。

user avatar   アイス     2023秋
  • 难度:困难
  • 作业:中等
  • 给分:一般
  • 收获:没有

依托的理论课,我也不知道在讲什么,感觉是比较清楚的概念绕了很大一圈在跟我们讲,后续干脆就不去了。

期末是计系传统的依托答辩全部不定项还有几题考的很细的大题,对我来说还是挺难的。这边推荐一个我复习的时候用的网站 https://refactoringguru.cn/design-patterns/catalog  不知道比那个答辩PPT好到哪里去了,也很适合平常计系学生无聊的时候看看。重构部分的虽然没有翻译,但是阅读难度也不大。

Project就是各凭本事了,但也没有详细的打分可以参考。这学期去答辩的时候把要求中的功能也基本完成了,但是不知道为什么拿到的分数还是一般,负责答辩的学助和老师还一直催我们赶快结束。

总之这门课的体验在计系课程里面并不算好,想学还是得做好一些准备,project早点开始写,期末多复习。

 

user avatar   ClashForWindows     2024秋
  • 难度:困难
  • 作业:很少
  • 给分:杀手
  • 收获:没有

纯靠lab课讲的内容来学,大课完全不知道在讲什么鬼。

PS:期末真的很抽象,第一次见题目那么不清不楚的,超多人问问题。最后还把最后一题改了,导致我直接整个大题重写。谔谔。

user avatar   匿名用户     2023秋
  • 难度:中等
  • 作业:很少
  • 给分:一般
  • 收获:一般

大课老师讲的都是什么啊,计系传统讲课依托是吗😅


teacher avatar

张煜群

计算机科学与工程系

教师主页

其他老师的「面向对象分析与设计」课

张煜群老师的其他课