C/C++程序设计

(郑锋)CS2052023秋 2022春 2021春 2020春  
2023秋 2022春 2021春 2020春
6.1(12人评价)
  • 课程难度
    中等
  • 作业多少
    中等
  • 给分好坏
    一般
  • 收获大小
    一般
选课类别:专业任务 教学语言:双语
课程类别:专业选修课 开课单位:计算机科学与工程系
课程层次:本科 获得学分:3.0
课程主页:暂无(如果你知道,请点右上角“编辑课程信息”添加!)
课程简介(教工部数据)
The objective of this course is to give a good knowledge of C and C++, as well as a working practice of Linux, and to prepare to future courses in the Computer Science curriculum. Through lectures and small programming projects, it covers topics such as how to build a program on Linux, what are the major differences between a language such as C and Object oriented languages such as Java (and C++), how Object oriented Programming in C++ differs from Object oriented Programming in Java, pointers and memory management, data structures in C and C++, as well as system calls. The first half of the course will solely be devoted to mastering C, and the second half will present C++ and the efforts to build a “better C”, as well as how to interact with the operating system through "system calls".


The objective of this course is to give a good knowledge of C and C++, as well as a working practice of Linux, and to prepare to future courses in the Computer Science curriculum. Through lectures and small programming projects, it covers topics such as how to build a program on Linux, what are the major differences between a language such as C and Object oriented languages such as Java (and C++), how Object oriented Programming in C++ differs from Object oriented Programming in Java, pointers and memory management, data structures in C and C++, as well as system calls. The first half of the course will solely be devoted to mastering C, and the second half will present C++ and the efforts to build a “better C”, as well as how to interact with the operating system through "system calls".
点评写点评
排序学期
评分评分12条点评
user avatar   咕桃     2023秋
  • 难度:困难
  • 作业:很多
  • 给分:超好
  • 收获:一般

负责2023F某次quiz,某道assignment以及期末某六道题的SA深夜写篇评论,评分和指标按“如果是我自己在上这学期的zpp”的个人真实感受填写。

首先给所有带来不好体验的同学诚挚道歉,确实平时作业和小测难度拉的很高,目的是在占比并不高(单次Quiz应该只会影响小数,而作业也给了充足的部分分)而且bonus很多完全可以cover损失的情况下让大家尽可能地锻炼技能和了解自己的学习情况,郑老师的讲法比较轻松,而C/C++能学的东西还有很多,很难说一个学期就可以达到精通,更何况是有同学高度依赖GPT,且除了作业完全不会写一行C/C++代码的情况。

Assignment和Quiz是按照我自己做起来会比较有挑战性的难度出的,所以如果你感觉做起来不舒服、做不完、debug很痛苦,完全属于正常现象,对于顺利完成本学期几个SA的题目的同学,我对你们的实力表示高度赞赏,对于并不完美但努力尝试过的同学我深表抱歉也为你们的毅力折服。至于“Quiz完全是OCR+GPT手速大赛”的同学,请问你们在锻练手速之余是否真正了解背后的C/C++知识了呢?

至于期末考试题的题型,是完全由郑老师以及两位助教老师指定,由我们填充题面的,选择题是单选,代码题是完整类实现,这与往年的题目设置并无创新之处,甚至没有往年的不定项。关于题目的难度,SA出题时也达成一致,表示大家平时都不容易,期末不会为难大家,于是设置的难度相对平时的quiz和assignment都大幅降低,所涉及的内容也完全与课程内容高度相关

从最终期末考试成绩以及总评的情况看来,大部分人的成绩还是相当优秀,即便不是总评也被拉到了可能并不属于自己水平的高度,我们期末放水的效果是达到了的,至于20分代码大题出lab exercise原题的简化版(标答不压行只有30行),我出完甚至问老师说这会不会太简单了,结果一看答题情况,还是不太理想,面向copilot和ctrl+C/V编程的人太多了,平时自己一行代码都不写,考场上恐怕再简单的题也会被吐槽难吧。

关于project设置,某个project的进度与公示不合理毋庸置疑,这点我想代设置该project助教向选择该project的同学道歉,不过同时我们也采用了“可以提交自己的测试样例”以及第三次延后代码提交ddl的缓和措施。但在延后project deadline以后仍然有人反映“怎么把ddl设置在期末周完全没办法抽时间完成”“这不是逼大家期末周熬夜吗”“别人都放假了我们还要写project”“能不能再延后一点”……有人嫌早,有人嫌晚,有人嫌早的同时又嫌晚。

对于这样的反馈,我想请任意一位计系朋友来品评一下,其他哪门课的单个project从第十周开始到第十八周才结束?这个周期恐怕对于我们给定的project而言真的过量了,据我所知,某个组仅用一个月就完成了满分project,即便别人天赋异禀,两倍的时间总是足够每个人完成一份基本的project了吧。早知如此,何必当初呢。没有人会逼同学在期末周甚至假期写project,把任务拖到最后的只能是自己。我和廖老师说过给八周会不会太长了,廖老师说不会给他们多点时间打磨project吧,我说好。

现在看来是我当时多虑了。

如果你看到这里不舒服,可能是因为我出言不逊,可能是因为你被这门课的某个部分伤害,也可能是你并没有很好地掌握某个知识:

  • 其一我已向你诚挚道歉,这篇评论的意义就是为了从另一个角度解释这门课这学期为什么不是水课;
  • 其二这门课已经结算,再去纠结也没有太大意义不如想想以后可以用C/C++写点什么很酷的东西,例如你已经解锁了OS/Compiler/嵌入式的软前置,可以轻松学这几门课了;
  • 其三,如果你很清楚哪个地方没学好,利用假期时间补足我想无论是你自己还是郑老师都会觉得这是好的,如果是自己的时间安排没做好,大可活用于下一门课程。

道听途说,以后大概没有计系本科生SA了,而且于老师的C/C++课程也申遗成功了(不是),所以这应该也是最后也是最困难的一次Zpp了。再次向每个我可能作为SA伤害的同学致以深刻的歉意,也为每一个在SA艰难的考验下仍然坚持了一学期的同学表示诚挚的感谢与敬佩,向每一位完成该课程的同学表示祝贺!

哦对了,如果你有任何异议,也欢迎在这里回复或者qq我,如果你认为有必要,我们大可泡一杯茶心平气和地聊到达成一致,虽然我已无力改变你的成绩,但我乐意奉陪也愿意听听你的看法。

by 咕桃

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

本人大二上,计算机系,该门课程A-,仅期末考试有扣分,是我这个学期第二差的课(最低的那个说的就是你,DSAA)。期末时发着低烧,所以喜提63(bushi

(幸好期末占的少啊awa 我觉得期末炸裂的原因是(主要)没有复习好理论课+(次要)脑子浆糊了)

总体来说我个人并不推荐非计算机系的同学来挑战这门课,除非你非常想要学会C++。

我觉得这门课是很典型的妮可计系课的风格,就是理论与实践分得比较开,这点在期末考上尤为明显。实践内容(作业,project)并不会去考察一些非常刁钻的内容,也不会考察一些非常概念性的内容,但是期末考就……

先从郑锋的课开始讲起。毫不夸张地说,他的课上得非!常!烂!我觉得他一来声音有气无力,二来他讲的东西让我一点听的欲望都没有,纯净读PPT,我觉得这个是我这个学期听过最烂的专业课。而且最离谱的一点是他的quiz是课上做的,但是课上做他还要接着讲,这个就……emmmm有点难评

而且这个学期的课程内容太多了,同样是语言类课程,我感觉这门课和JavaA简直不是一个量级的,所以学起来非常痛苦,尤其是期末复习的时候。

其实对于实验课和作业,project我并没有太多的意见。作业可能略难了一些,但是我觉得……还算能接受。project的难度也比较高,期末考完熬了两个通宵才搞定的(102分)。我说实话,我觉得这个学期的三个project(C++,数据库,数字逻辑),就这个project的难度最大。这些平时的内容难度较大我觉得也是很有锻炼意义的,就是平时会非常痛苦。期中比较送分,就是2小时4道题,oj判题,不会很刁钻。

至于有些助教学长可能说话会比较直接,这点我就不说了。

anyway 我觉得这个学期收获最大的课就是DSAA,其次就是这门C++。如果真心想学C/C++,非常欢迎来这门课。除此之外,我实在想不到有什么理由用这门课折磨自己了。

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

以一种诙谐的角度来说,这是一门非常好的课,唯一的问题是需要上还计绩点。简单总结了一下:

优点:

  • 课程很有意思,可以帮助理解一些更偏向底层的逻辑,解释平时写代码的时候不会去注意的细节,更透彻地理解编程语言。
  • 实验课老师讲得很细,基本上了就能有所收获。
  • 期中考试很友好。

缺点:

  • 老师基本是在讲ppt,讲得挺清楚的但是知识密度很大,跟上比较困难,需要准备好课后啃ppt(这里建议如果没跟上,做个标记赶紧去看老师现在在讲的,要不然差的会越来越多)。
  • quiz很难,会出比较生僻的知识,导致得分很不乐观。quiz的时间安排有问题,上半学期占了整个课间,下半学期quiz改到最后10min了,但是期间老师讲课不会停,体验很差。
  • 课下作业非常、非常耗时,题目很少但是很难,因此如果投入时间不够的话得分会很低。
  • 大课和实验课的进度有点脱节,导致学起来有点乱,像是模板和重载lab课上在第七周就讲了,但是大课第十周才讲。
  • project管理有点混乱。

总的来说,课很有意思,老师讲的也挺清楚的,但是实在是太耗时间和精力了。

相比于给自己上强度,还是建议选择自学或者旁听。

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

为了和yu++看齐(maybe),这学期workload大概是lecture quiz 16 + lab practice 16 + Assignment 5 + Midterm OJ + team project * 1 + Final exam。 

quiz只能盯着一坨代码人肉编译/拼手速手敲/GPT4图片上传。lab课体验还不错,廖老师讲的很细致也很耐心,practice也算契合lab内容,是唯一的体验较好的一点了。5个Assignment风格和难度差异巨大,完全看SA心情。期中当堂限时OJ,题目不难,但对写代码效率不高的同学可能不太友好,得当场写当场debug。project要求中规中矩,timeline也算合理,但全由SA负责,临近ddl临时修改要求,随意修改dealine(参考其他评价)。 期末考试选择+手写代码,选择题挺正常的,手写代码题只给文字描述,要求写出完整的类的代码,(给出适当代码片段和要求 再填空不是更合理吗)本可以作为一次中等assignment的题目放到期末要求手写,做得头疼。

总之整门课体验相当差,zf只有每周上课出现一下,其他事情大部分由SA负责,(比如assignment难度,project要求,期末考试题也是SA自己出题的风格)就像上了一门各个SA风格混杂的C++课一样。最后再吐槽一下期末考试SA出题就挺逆天的,个人觉得不妥,毕竟题目难度直接和SA水平相关,zf有点太摆了&不负责了一些。

user avatar   Cypher-B     2023秋
  • 难度:中等
  • 作业:中等
  • 给分:一般
  • 收获:一般

本人大二计系,总评A+。

首先,C++作为一种更加偏向底层的语言,学习起来肯定是比Java更加有挑战性的。最好不要抱着选一门选修水课的态度来上课,虽然郑老师的课程难度确实相较于于老师下降不少,但是想要完全水过这门课还想用来拉高绩点是不现实的。

但是,我觉得这门课的难度其实并没有过于突出:

  • 课堂小测的难度确实比较高,但是这部分只占总评的5%,何况助教最后还捞了一把这部分(以个人分数推算得出,并非官方说法)。
  • bonus部分挺充足的,如果拿满课上回答问题的5分加分和project的2分bonus,按照期末25%的占比计算,相当于额外获得了期末28分的卷面分。
  • 期末考试选择题部分虽然多但是相对简单,也没有多选(对比隔壁于老师的数据库原理先来20道不定项多选)。代码题属于是综合考察课程全内容(指针+内存+类+模板),但是都是写过的内容了(lab课练习+作业都有涉及),只要平时不是一直chatGPT+Copilot,能够记住一些代码写法就不至于被扣得很惨。
  • Project部分虽然有难度,但是正如Gutao所说,这至少是我遇到的project中时间最宽裕的,开始时间最早的了。

最后,对于想要在这门课上拿高分的同学的几点建议:

  • 上课回答问题的bonus一定要早拿,拿全。一方面回答一个问题相当于期末补4分真的很generous了,另一方面尽早拿完可以避免在期末周和众多同学比拼手速抢答问题。
  • Project尽早做。本课程第10周就发布project算是计算机系中较早的一批了,拖到期末周只会陷入DDL地狱(本人这学期同时写数据库+数字逻辑双project已经累死累活了,很难想象三project的感觉)。
  • 期末建议留出充足的时间复习,课程知识点相当密集且要复习的资料相当多:Lecture Slides及代码,Lab课件,Exercise题目及代码,Assignment代码,etc。本人只留了一天差点没复习完。

user avatar   匿名用户     2023秋
  • 难度:困难
  • 作业:很多
  • 给分:超好
  • 收获:很多

这个学期被折磨的死去活来,上课听不懂,作业也是死活de不出来bug,尤其是第二次和第三次作业,花几天时间都搞不对。

期末考试的时候,郑老师疯狂倒计时,当时心态有点小崩。

最后出分后结果还不错,也学了不少知识,也算是对得起自己一个学期的努力了。

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

给了我满绩,所以给满分。课程本身还行,助教水准超高,Project 很有意思,算是体验不错,哈哈。

user avatar   Darren_Mcdonald     2023秋
  • 难度:困难
  • 作业:很多
  • 给分:一般
  • 收获:一般

至于为什么说zpp开始变于pp了呢,因为这大概率是zf开cpp的最后一年了,当初也是听了学长们说的zpp比ypp给分好不少就来了。但是遇到的这届sa都是从于pp手下训练出来的混沌邪恶版,oj作业超难,quiz纯gpt使用考究(除非你现场手敲代码到编译器足够快的话),而且zf老师上大课几乎没多少人听,这门课要学基本上就得看ysq在b站的网课。最后的project非常难崩,ddl改来改去 ,在qq群里问消息sa也不回复,在临近ddl的时候才回复然后惹得群里差点起义,我只能说这学期体验非常不好,尽管zpp已经成为历史了,如何学弟学妹们真想学cpp,这边建议b站网课自学或者不在乎gpa的情况下去找ypp吧,至少真能学到东西

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

我真的很喜欢C++(哭),郑峰老师上大课听讲的人似乎不多,个人感觉讲的也确实没有什么吸引力,纯在念ppt。学习C++全靠平时作业和于老师的B站网课。但是由于C++本身语言难度就比较高,加上这学期助教们水平超高(膜拜大佬们,但我真的只是个菜鸡),这学期的OJ作业变得很难很难,平均一次作业需要8+hours才能写完。不过lab的廖老师讲得很好,为我消除了很多疑惑。整体来说,如果只是希望学习一些语言基础来做一些工程,我不建议系统的学习这门课程,个人感觉学的比较深。如果真的想深入学习C++,请选择于老师的课,他真的讲的很好。

很惭愧自己C++学的并不好,希望在以后实践中多加使用和练习吧。另外,智能科学与技术的同学们最好在秋季学期多学专业基础课,很多专业核心课和选修课都只有春季开!

 

user avatar   同心圆     2022春
  • 难度:困难
  • 作业:很多
  • 给分:一般
  • 收获:一般

廖老师讲的特别详细,每节lab知识密度都很高可以学到很多东西,基本靠lab课和看书学的cpp。但是!感觉这门课对外系同学不太友好,期中限时oj占总评20%,平时不写oj或者写代码慢的同学,很吃亏。然后理论课,老师口音有点重,但是每节课都有quiz签到都要去就很折磨人。期末考试手写代码,那些平时要在CSDN上查的东西是真的记不住欸。个人觉得c++要比java更难学,知识点零碎要记的东西很多,这学期上的太破防了。

user avatar   cra     2021春
  • 难度:中等
  • 作业:中等
  • 给分:一般
  • 收获:一般

问:郑峰的cpp难度怎么样,任务量大吗?

同问

郑峰cpp难度很小,个人感觉任务量很小,甚至比javaA还简单,相比上学期计系刘德华——ysq的cpp简单很多很多,给分也很高!!强推


teacher avatar

郑锋

计算机科学与工程系

教师主页

其他老师的「C/C++程序设计」课

郑锋老师的其他课