选课类别:计划内与自由选修 | 教学类型:理论实验课 |
课程类别:本科计划内课程 | 开课单位:信息科学技术学院 |
课程层次:通修 | 学分:4.0 |
主要面向非计科专业、但是计算机基础较好,以至于后来很多人转去了计科的学生的课
以前:
计算机程序设计A(季海波, 张四海, 李卫海) - USTC评课社区 (icourse.club)
后续:
《计算机程序设计A》课程由孙广中和李卫海两位老师主讲,以下是对该课程在考试、给分、作业、教学水平和课程内容方面的总结。
课程分为平时作业和平时考试各占50%,平时分由小作业(15道题,占15%)、两次大作业(各占15%)和课程参与分(5%)构成。期末考试占总评的50%。优秀线为79分,卷面分85分的同学多获高分,总评抬分幅度较大,因不限优秀率,许多同学取得高绩。用户提到优秀率高,尤其是进阶班,几乎遍地4.0及4.3。
小作业分两次A题组和一次B题组,A题较为基础,B题为选做但有一定难度,并提供加分机会。期中大作业涉及多项高精度运算,要求生成1024位大素数;期末大作业是团队合作开发一个游戏或工具,语言不限,强调实际编程能力和创新能力。作业整体难度较高,但有利于提升编程和自学能力。
两位老师授课内容深度广度俱佳,除讲授教材内容,还扩展到底层实现、编译原理等知识。孙广中和李卫海老师上课逻辑清晰,讲解充分,且经常参与课堂讨论和答疑,助教也积极帮助同学解决问题。由于授课重点在进阶知识,因此更适合已有编程基础的学生。
课程内容涵盖C语言的高级知识,注重编程思想和算法优化。包括数组操作、指针、文件操作、函数调用及模块化编程等,教学PPT翔实细致。拓展至编译原理和密码学等领域,提高了学生的计算机综合理解力。
进阶班氛围积极向上,学生间交流活跃,老师和助教常参与群聊,支持匿名提问,形成了良好的学习环境。很多同学分享观点和经验,促进了共同进步。
进阶班适合有一定C语言基础的学生。其优势在于能结识到很多优秀同学,共同交流学习知识,开阔眼界,并且不限优秀率给分较好。缺点是课程和作业负担较重,对于完全没有编程基础的学生可能会有一定挑战。
总体来说,孙广中和李卫海老师的《计算机程序设计A》课程内容丰富,讲解清晰,作业和考试安排合理,适合有志于深入学习编程和计算机科学的同学。
先说说进阶班, 2019年开始设立, 一直都是李卫海老师带, 今年是第三年. 开学考的计算机考得较高(同时意愿填了进阶班的同学)会排课排进进阶班.
当然, 里头九成都是大佬.
当然, 也是唯一一个不限制优秀率的C语言程序设计班.
按照惯例, 我会把给分放在很前面, 让一部分“目的明确”的同学看完就走.
平时分全都经过我的手最后提交给老师, 我们中位数是49.55, 平均分是48.29, 最高50, 最低30.
这是本班成绩分布(期末卷面), 受年级优秀分数线控制, 优秀线是79, 咱班的优秀率是85%, 抬分幅度蛮高, 卷面81.5的给到了91, 卷面89.5就能有4.3, 卷面91的给到了97, 还有同学喜提总评100. 作为对比参考, 下面这个是一个少院普通班的期末卷面成绩分布:
(后来听说管院的一个普通班没有上90的, 全班无人4.3)
我是第一届进阶班的学生, 也是第三届(2021级)进阶班的助教, (按理是只能给保研到老师底下课题组的人带助教的, 但是今年研究生搬去高新区, 所以我才有了坑位). 第一年只有三十来个人在进阶班, 有两个助教, 今年第三年, 有六十个人, 共三个助教, 除了我这个电脑跑的很慢的助教, 还有狗头阿黄助教, 派大星助教. 主要随堂都是两位大四的助教, 我因为才大三还有较多课, 所以几乎没有随堂.
讲课进度自然比较快, 当然班里同学很多都是全会C语言的, 所以底下同学很多也不怎么听, 会讲课本之外的知识点(涉及一点点底层实现和编译原理), 虽然考试不考, 但是对计算机的理解会更高. 上课PPT会下发.
总评组成为: 小作业(15道A题, 15分)+大作业C1(3min内生成1024bit大素数, 15分)+大作业C2(开发一款游戏或工具, 语言不限, 15分)+课程参与分(貌似5分白送)+期末考试(占比50%). (注意, 教材纠错也有加分, 而且貌似不少x)
小作业的15题A题是很基础的题, 所以我今年在cscourse上用OJ评测. 当然出题的体验是很精妙的, 为了不让他们觉得太简单而睡大觉, 我有的题得花一晚上想各种特殊数据尝试卡掉他们的程序.
比如, 一道看似简单的输入一个浮点数字符串并将其改为科学输入法格式输出, 我让一个WC金牌爷一晚上交了五版程序. (第一版是合成压缩包交我的, 以下是他修改的四版)
大作业C1是一道很综合的题, 本身也是有密码学应用背景的, 不是无意义的码农. 有普通班的孩子感到好奇也想来做, 并找我问. 我是这么跟他们说的:
进阶班的大作业难度不小, 课程教学内容数组字符串操作, 结构体, 指针, 文件操作, 宏, 函数调用, 模块化编程, 全包含进去了...而且还需要比较熟练的程序设计的思想, 一些算法优化的启蒙, 以及需要一定的自学能力和很强的调试程序的能力. 实际上一趟做下来, 对个人能力的提升不小...就是比较耗时间精力, 从应试和考试的角度算的话会有点“亏”.
但是, 只要你肯去做, 在学习资源上, 我们是给尽了的:
首先李老师给了不少大佬同学机会上台演讲分享他们如何快速实现, 压位的, 蒙哥马利的, 多种优化叠一起就能以很优秀的质量完成任务, 如果有些方法听不懂也没关系, 我们计算过如果代码写得较简洁, 裸写代码出来也基本能达到要求.
其次, 我拿python给了一个测试标程, 同学们可以自己生成1024bit的素数, 以及生成由两个512bit的素数乘起来的“伪素数”进行测试.
后来, 为了让同学们更好的测试, 我还在群里利用精华消息以十进制和二进制的形式提供了128bit的素数供给测试素数判定和进制转换.
Anyway, 但是同学只要认真做下来, 收获很大. 在此要分享我接收到一位同学的提交时的一点感动瞬间:
大作业C2则是很开放性的题目, 对撰写报告能力, 团队协作能力, 自主学习能力, 大工程开发能力的提高则更大. 美中不足的是, 今年好像同学们花在C2上面的时间有点多了, 李老师不太满意, 他跟我说明年会降低难度和卷度.
当然, 也有一些别的问题出现, 比如sxl开发的APP我的科大, 貌似遭到了学在科大APP开发者lzh学长的一些攻击. 看到打压萌新我是不太开心的, 新同学刚进校园, 没什么人脉名气, 我担心一被打压, 很容易让人寒心, 也很损伤学习积极性. 我任性地出头了, 在空间发表了护短声明, 虽然好像我也势单力薄, 但多少还是希望传递点力量. 个人认为, 年轻一代有能力是好事, 能青出于蓝而胜于蓝更是好事, 我们就算帮不上忙, 也应该多照拂多鼓励吧.
同样的, 这里要感谢sxl同学, 将作品收集起来, 有兴趣可以访问 http://home.ustc.edu.cn/~sunxulei/wokebox/
C2的意义也挺大的, 我摘了一句我批改报告时读到觉得写的不错的一段出来:
当然, 虽然很多人都是大佬, 虽然我也尽力push同学们去学习, 但是不可避免的, 总有拖到ddl前火烧屁股了也才来赶工的同学. 因此A题补交ddl前, 我有幸身边围了一圈人, 包括一个区域赛金牌爷一边手在键盘上啪啪响, 一边颤抖地念念有词:“来不及了, 来不及了.”
当然, 也总有觉得作业简单懒得写直接抄的同学. 他第一次抄被我抓到了, 我私聊他问: 别的金牌爷最快也要十来分钟, 你搁这一题10秒A光了呢. 他很羞愧, 于是痛改前非, 他说他自己写一遍, 后来交代码给我, 以下是部分他的第二次提交的代码: (亮点自寻)
Anyway, 我是很心软的, 而且我也知道我出A题只是给同学们练手, 目的是让他们不要脱离普通班太远, 天天只想着竞赛难题, 也不要自以为是想当然(所以我出数据时出了不少合法但不常规的特殊数据去卡人). 既然已经是有基础的同学, 我更希望他们能有所提高, 无论是A题考虑更细致, 还是C1提高代码能力和调适能力, 还有C2能自学一些新的东西, 而不是在“无聊的地方”浪费时间(我没有说nt码农学生信息管理系统). 所以这方面上我不会特别为难同学, 这个抄袭的同学我相信他是会的, 而且也已经感到羞耻了, 也没有额外惩罚扣他分.
期末考前, 我也给同学们提供了丰富的备考资料和部分往年卷. 李老师之前告诉我进阶班的优秀率往年大概在75-80%左右, 我想着我给这么多资料, 群聊讨论氛围这么好, 今年不说100%, 应该能有90%吧, 允许五六个同学因为粗心犯错. 可惜今年卷子出的简单, 水涨了, 少部分同学可能也没有把这门课的考试很放在心上, 所以很可惜最后优秀率只有85%. 我曾经想过, 如果我多push一点, 多私聊关注一下不怎么看群的同学, 应该他们的成绩会更好吧? 但是后来想着, 助教怎么能求着学生学习呢, 这是大学了, 自己的人生应该自己掌握, 也希望跌倒能帮助他们成长吧.
开学后有几个同学跑掉了, 他们担心进阶班“太卷”, 可能浪费精力, 宁愿去普通班躺平. 但是就像我一直在群里跟他们说的, 进阶班最大的好处是, 在这里你得以认识大佬积累人脉, 得以开阔眼界打开格局, 得以与高手交流讨论, 互相学习, 共同富裕. 其他好处太多了, 细数不完.
孙广中老师还给每个同学送了小黄鸭!
有什么弊? 给分今年给的比普通班还好, 还有弊? 听说由于期末出的较简单, 隔壁少院班王雷老师的班级为了压分让助教把平时分压成中位数45(C语言一般平时分和期末卷面分比例是5:5) (当然这只能代表今年的情况, 明年给分怎么样就不好说了)
群聊里良好的氛围, 离不开同学老师助教的共同努力, 同学乐于闲聊, 老师亲切参与闲聊, 助教也积极和学生互相回应. 李老师在教我的时候就说过要坚持“从群众中来, 到群众中去”, 很庆幸两年后他还是这样.
班级氛围很轻松很活跃, 也有很感动的, 比如:
当然, 他们还有不约而同写进报告里整活的:
我先前学期初并没有计划最后写评课, 所以一路走来也没有用心留下写这条评课的素材, 所以这部分剩下的因为素材缺失就不说了.
实话说, 当助教工资并不算高, 比起家教来说来钱属实慢得多, 而且工作量相对较大.
但是我大二时看了这个课程助教, 坚定了我以后也要去当助教的心: (那次他们老师貌似布置了一个很无聊的纯粹复杂计算, 硬分类讨论的题)
我当时决心当助教, 也不说课程上一定能给学生多大的帮助(实际上有的学弟还能教窝算法), 但我庆幸我自己仍保有理想主义, 我想做的, 是在学生成长的路上, 在一个唯GPA论比较横行, 评价体系比较单一的环境里, 在学术圈急躁求paper, 许多老师轻视教育, 社会家庭一门心思推孩子往热门专业钱多专业里钻的环境里, 我能给哪怕一点点我认为好的引导. 如果我的言语态度对一个同学有哪怕一点点好的影响, 那这一趟当助教都是值得的. 当然可能因为我的一些直言, 好像偶尔老师并不是很开心.
我也衷心希望我的学生能找到自己的热爱和激情找到自己的价值, 希望他们能更成熟更理性地看待所处环境的一些问题明辨是非, 能时刻保持心怀理想仰望星空, 又能时刻勇于面对现实脚踏实地.
我还遇到过不少好助教, 他们对我也起了模范作用, 我也还有很多不足需要跟他们学习. 也希望每一个助教都向他们学习, 能更严格要求自己, 真心诚意为学生好.
写在最后, 我很庆幸我没有忘记初心, 所谓教学相长, 我也在成长, 这届进阶班的同学们, 感谢有你们, 真好!
这学期的计算机程序设计高级班。
讲课进度肯定是比较快的,内容也比较深入,会讲不少书本之外的知识。不过老师讲课思路很清晰,大部分内容上课就能听懂,少部分题目回来对着PPT想想也能懂了,收获也是蛮大的。(本校教材这学期没印,听说要出新版。所以这学期用的谭浩强的课本。谭书垃圾书!谭书垃圾书!谭书垃圾书!有看谭书的时间拿出一半看C primer plus不香吗?)
平时作业分AB两类。A题是必做题,难度较低(不过还是比其他班难一点,至少我舍友说他做不出来),B题是选做题,难度更上一个台阶,基本上没有100行办不下来,有一个题我写了快400行。不过B题不计分,不做也可以。
期中小作业是Miller-rabin质数判定以及1024bit大质数生成,要写出高精度的整套运算还是有点难度的。
期末大作业是组成团队制作游戏。不限语言(不过最好以“C”开头如C艹和C井),这时候就是各路大神能力展示的时候了。有用qt框架的,有用unity的,等等。游戏类型也是五花八门,2D平台跳跃、RPG、战棋、卡牌策略、还有不少我不知道怎么分类的游戏。不过确实都挺好玩的,我好多周末时间都花在品鉴这些游戏上了(笑)。
挑几个我印象深刻的游戏描述一下:
瘟疫危机:瘟疫公司+抽卡类型的游戏,用的windows.h(之前写错了)。需要操控研究人员前往各个城市研究病毒、治疗病人、控制传播等。难度较大,不过确实挺好玩的。起码我觉得再优化一下,放到十年前出来,再加点宣发,应该能和瘟疫公司一样火。
东方科大传:战棋游戏。unity制作,UI界面很舒适,战斗机制也很丰富,甚至还有战斗动画(虽然立绘是zun绘)。美中不足的是作者原本打算做两三关结果工期不够变成了一关无限出怪的生存模式,流程较短,且没有新手引导,第一次上手可能感觉很迷。 不过有一说一,这个游戏梗多啊!不光有灵梦,还有cwk炸毁一教,还有野兽先辈,每句话都融梗,真真是要 素 过 多,车万众欢喜。
混学校,蜗壳生涯模拟器:两个游戏都是策略性挺强的文字游戏,混学校需要你通过低买高卖,当个中间商赚差价,最后从一本数学分析开局到买下一教成为人生赢家。生涯模拟器则是通过合理安排每个学期的课表,平衡学业与心理压力,努力争取更高的gpa,同时全面发展(不过找npy这一项的成功率还是太低了呜呜呜)。可玩性都特别高,梗事件挺多的,应该是我玩的时间最长的几款游戏之一了。
五子棋:提这个游戏只有一点,作者自创的算法实在nb,我跟AI下,战绩五五开。我可是我们小学的五子棋冠军啊(
妮可迷惑日常:以一个天天酷跑的主游戏形式串起来了一个小游戏大全,包括2048(flxg版)和简单算术(指数分考试压轴题),等等。每次玩都有新体验,玩到现在我都不知道作者在里面埋的小游戏我都玩全了吗。
其他还有很多质量特别高的游戏,甚至可以说所有游戏都十分优秀。这里大佬云集,我这种蒟蒻瑟瑟发抖,只好抱大佬大腿,不过也算是圆了自己做游戏的愿望吧。
你问给分?这个班不限优秀率。
二度更新:优秀了。感觉班里4. 3、4. 0遍地走。
本班级为计算机程序设计进阶班,需要通过开学考试选拔。不过看起来似乎只要有意愿就可以进。讲课速度比普通班快一些。老师讲课似乎有点无聊,容易令人掉线。拓展知识不少,可以加深对编译原理等知识的理解。课程群开了匿名,氛围相当不错。
小作业分A、B。A组是必做基础题。B组较难,选做。期中期末的大作业比较难。期中大作业涉及多个高精度四则运算+求余数的函数组合,要求通过随机生成很大的质数。高精度除法、求余数尤其困难。期末大作业是设计一款游戏,小组合作,至多3人,编程语言不限。游戏种类丰富,品质精良,对各种游戏的介绍可以看别的评论。
不限优秀率,但想拿高分还是得靠自己。与普通班相比,课程对期末的卷面考试的帮助很可能不那么大。这个学期估计大概73+/3.7+,82+/4.0+,91+/4.3+左右。考前刷一些题是必要的,尤其是近年的题(我好像没找到,所以考试的时候被偷袭了)。总评91(感觉班里4.0+的人约七成)。不过我写的游戏得到同学投票很多,所以爽到了。据说只要电脑上装了Microsoft Excel,解压之后打开.exe就能玩这个游戏,玩过的都说好。
计算机程序设计·进阶班
我是开学考试 60 多分混进来的,可能在班里算是垫底的成绩了。
班里有很多学过 OI 的奆佬,也有一部分是暑假自学了一点 C 语言进来的。
课程方面
老师上课会讲自己做的 PPT 。
PPT 做的很用心,老师还会补充很多奇怪的知识,对期末考试还是有帮助的,建议上课的时候抽空听一下。
因为大家都是有基础的人,所以老师不会花大量时间在语法和其他基础知识上。
不过老师也不会在课上讲算法(这么一说我也不清楚课上的时间都干什么了)。
作业方面
作业分四部分:A,B,C,大作业。
A 组是必做题,都是比较基础的题。我感觉这些题给普通班做也不算难题,不过我室友说他不会…… A 组题我一般是检查作业当天下午抽空写一下,不会占用太多时间。
B 组是选做题,真的是选做,完全不算分的那种。都是比较基础的算法题,稍微学过 OI 的应该都能随便切。我写了几道之后被告知不算分,就没有继续写下去。每次上课老师都会空出来大半节课,留给班里的奆佬讲 B 组题。经常可以看到一些简单的OI题被奇怪的姿势解出来。我印象比较深的是 N 皇后( N <= 14 ),我随便水了一个 7s 左右的算法,结果到群里一看,跑了 0.6s ~ 10min 的都有。一群奆佬在群里讨论,本人完全不敢说话。
C 组是用 Miller-Rabin 判定质数,生成 512bit 或 1024bit 大质数。写了一套高精类和运算符重载之后才知道 C 语言没有运算符重载。后面就是一点一点调,挺麻烦的。最后写了个压位位运算高精,1024bit 质数进行了 41 次失败的判定,10 次成功的判定,共计跑了 2.8h,收获还是蛮大的。
大作业是写一个游戏,要求使用 C 开头的语言,比如 C,C++,C#,CPython(?)。我们组三个人用 Unity + C# 写了个战棋游戏《东方科大传》 https://github.com/txtxj/TouHouUSTC 。有点遗憾的就是没能完成我们的预期目标。不过我们的游戏应该也算是完成的不错的了,代码一共 6000 行左右,顺便还编了一首东方风格的校歌《永恒的东方》作为主题曲。大作业算是整个课程中收获最多的一部分了。我们组是几乎从零开始学习了 Unity 和 C# ,并且我们组三人码风都发生了很大变化。
给分方面
进阶班,不限制优秀率。据说 19 年 4.0 ,4.3 遍地跑。
我们今年平时作业占总评的 45% ,大部分同学的平时分应该都是满的。
A 组占平时分的 20% ,C 组 30% ,大作业 50% 。
本学期期末考试 73 分以上即可优秀。
其他方面
老师助教都很友好。课程群聊允许匿名,经常可以看到奆佬们在群里匿名卖弱,课程结束那一段时间群里总是一群大老爷们用动物主题的匿名发表迷惑言论:“猫猫表示有爪子就行”、“鱼鱼表示没爪子也行”……
我们这一届期中左右进行了一次小测,在洛谷上搞的,
与平时成绩无关,就是大家凑在机房刷刷题基础 OI 题玩玩。
挺多人 AK 了,不过也有不少人爆零了。
因为来高级班的人大部分都是早就会了的,所以上课有、无聊,除了看各位大佬争着讲题很有趣。
对认真学的萌新还是比较友好的,作业也不算太难,而且人性化地分级了,虽然总评还是期末考试占比较多..
想提升自己知识水平的同学来选这个班,你问我不...资瓷不资瓷,我是资瓷的。还附赠数十款小游戏[滑稽] 想水gpa的大佬更加推荐来高级班,毕竟...不限制优秀率摆在那里嘛~ 水了一点微小的点评,很惭愧,谢谢朋友们!
这是 2021 秋季学期的计算机程序设计进阶班。
上课:
前半学期由李卫海老师主讲,后半学期由孙广中老师主讲。
今年似乎没有出勤分。(前几节课用过雨课堂签到,但是似乎没什么效果,后来也就不用了)
平时没怎么听课,在下面忙自己的事情(相信有不少人都在这么做),但从有时候无意间听到的内容来看,老师有时候会提到一些超出书本范围的东西。
我印象里,孙广中老师推荐了 CS:APP 这本书,并且推荐了本校的 “计算机系统详解(吴俊敏)” 课程。
另外,今年使用的教材是课程组自编的教材,勘误会给出额外的分数(印象里是 1 个错误 0.1 分)。
作业:
和去年一样,仍然采用的是两次小作业(A 题)+ 拓展题(B 题)+ 两次大作业(C 题)的方式计分。
其中 A 题和 C 题是必做项,B 题不作要求,可以通过上台讲解 B 题的方式获取额外的分数。
A 题一般一次会塞个 7、8 道题目,给一周的时间,按时完成即可获得满分,任务量不算大。
C 题的要求和去年相同,制作一款原创游戏或软件。其实不需要你做得有多精美,大家得分都是差不多的,只要认真做,分数是有保障的。
给分:
给分还是不错的(?)
平时分和期末考试各占 50 分。平时没有小测,不限优秀率。
平时分主要是 A 题和 C 题,B 题是加分项,大家的平时分基本上都是 49 分及以上。
由于今年的期末考试比较简单,年级平均分较高,虽然本班不限优秀率,但是只有获得 79 (及?)以上的期末卷面分才能得到 3.7 及以上的 GPA。
关于总评的计算,今年应该没有大的调分,就是直接按比例算的。如果总评的计算结果有小数点,会直接往前进一位(92.5 -> 93),如果进位结果是卡绩分数,就不会再进一位了。
班级优秀率约为 85%,平均分 85,最高分 97.5,90 分以上 20 人(全班一共 60 人)。本人期末卷面分 83 分,最终总评 92。
其它:
这个班的精髓在于 QQ 群,两个老师、三位助教、外班大神齐聚一堂。
老师、助教和同学都很友好,匿名讨论的功能也没有关闭,群里气氛十分活跃。同学们经常会在群里讨论上到吃喝拉撒、中到课程安排、下到编译器特性的各种话题,李老师也会经常冒泡跟我们聊天。
我认为只要水平足够,来进阶班应该是不会后悔的。
看到了助教老师的评论,我也是心潮澎湃啊。这个学期在进阶班的故事,会成为我在很长一段时间内重要的思想财富。
我是2021届的学生,期末总评96,4.3。评分标准可以去看那位助教老师的评论,为了方便我就把助教的那一段复制过来:
小作业(15道A题, 15分)+大作业C1(3min内生成1024bit大素数, 15分)+大作业C2(开发一款游戏或工具, 语言不限, 15分)+课程参与分(貌似5分白送)+期末考试(占比50%). (注意, 教材纠错也有加分, 而且貌似不少x)
注:以后就没有教材纠错加分了。教材是这个学期新出的。期末考试进阶班和普通班是同一套卷子。
这个班上的同学绝大多数都是高中搞信息竞赛失败了的。(如果成功了就不会来科大了(bushi))。如果让我们去普通班,肯定就是一个学期毫无收获,净做些感觉毫无难度的题目,最后考试占用很多40%的优秀率名额。不是我骄傲,毕竟我们要比大家多学了3到5年啊,这本身就是不公平的。
所以,按照李老师的话来说,就是开一个这样的班,让我们能够真正地学到东西,也不至于妨害到其他同学的利益。当然,如果这个班还是40%优秀率的话,也很不合理,因为这样的话我们就会直接跑到普通班去搞4.3了。所以是不限优秀率的。
两个老师分别讲课讲了半个学期,讲课内容是C语言的进阶知识。虽然我们搞过竞赛,但是其实对于C语言编译的一些细节问题还是不是很了解的。比如指针、函数指针、指针函数、指针函数指针,运算符优先级,左结合右结合,i++和++i的本质,等等这些问题。除了编译上的细节问题,还讲了一些延伸性的知识,密码学的知识(李老师好像是网安的),以及大型软件工程中我们怎样保持代码库的良好的结构。
小作业A题大多是不太难的题目,助教老师把它们传到了OJ上,其中有一两道需要很强的鲁棒性,也相当具有挑战性。有一位同学好像是掉线了,到了deadline前一个小时还没有开始做题,正好我和他在一个班,我们现场看完了他是怎样极限冲刺的。
小作业B题是有进阶难度的题目,不是必做,同学们做了可以在课堂上拿到讲台上来讲解自己的解法,这个有加分,不过不多。基本上每次课的后半部分就是这样的反转课堂部分。
大作业C题有两个,第一个是“生成二进制下1024位大素数”(十进制下大概是304位左右),deadline是11月底。代码量基本上是500行左右,debug相当不容易,没有竞赛基础真的很困难。有的人在10月中旬就完成了,我是11月29号才赶完的。助教很和善,即使我是卡在deadline交的也相当耐心。值得一提的是,这个作业必须要用C语言完成,而且只能使用stdio.h,stdlib.h,time.h这三个头文件,对于习惯了C++的竞赛生来说是不小的挑战。
第二个大作业是“自己编写一个游戏或者工具”,组队进行开发(1~3人,对3人组有更高的质量要求,但对1人组的要求基本不会降低,鼓励我们组队),游戏必须有科大元素要能用来宣传,工具不能照抄现有工具,使用的语言必须类似C语言(包括C++, C#, java等,但其实python, Html5等也是可以的),使用的引擎不限。最后不需要提交源代码或者游戏文件,只需要一个不超过60秒的宣传片,加上一份完整的论文格式(但是并不需要写得像论文那样完整的内容)的报告。在最后的一个半星期的三次课里,课程内容已经全部结束,就都给我们来进行自己的C2项目的展示。同学们可以随意提问提建议,大家都颇有兴趣,氛围其乐融融。
大概八成的同学选择了游戏,游戏的主题大概分为两种:科大生活,和来科大之前的高考生活。游戏类型涵盖了横版跳跃、文字经营、休闲、塔防,使用的工具从Unity,Qt到原始的控制台程序或者Windows API都有,包含的科大元素很多都是GPA、卷、躺、“我要考科大”、“保护金矿”、“西区图书馆起火了”这样的整活元素。最后绝大多数同学都把自己的项目传到了群里,供大家品鉴,这确实是一件很有意思的事情。
两成的同学选择了工具,其中最有名的就是sxl同学的“我的科大”了。因为sxl和我一个班,所以我能够看到他的日常,他在开发的过程中就纯粹是为了创造而创造,经常会问我们“这个图标怎么样”“这个设计舒不舒服”,我看到了他有梦想的灵魂。其他的包括煌图识别软件,自动排课软件,等等,很有创意,而且相当实用。(请不要误会我说识别煌图“很实用”的意思)
有同学吐槽:“我学Unity花的时间都够开一门2学分的课了!” 助教也说过:“这个C2可能是你们整个本科除了毕业论文之外工作量最大的大作业了”。对于我自己来说也是如此,为了学会Unity开发游戏,我用上了我高中时因为爱好学的像素艺术,花了一个月啃完了w3cSchool上的Unity教程,还在B站上找视频教程学习经验,加了一个开发教程UP主创立的一个独立游戏交流群(我还在这个群里碰到了我们进阶班的一个同学,世界真小啊);因为各种零散问题搜索的CSDN、简书、知乎和cnblogs文章更是不计其数(所以报告里的参考文献部分就不愁不够多了),在deadline前的一个星期都没有在3点前睡过觉......但是主要是因为我对开发游戏有兴趣,才会花这么多功夫,其实也有很佛系的同学,在组内只负责美术或者剧情,就不需要这样去学很多引擎的知识。
但是,这个游戏的开发过程是一个宝贵的实践机会,它大大提高了我的能力水平和知识水平,在整个开发的过程中我一直在不停地学习干货,在一个月的开发结束之后,我感觉我的大脑都变得充实了,收获感Max啊。下面是我们的报告中的一段:
对于我们来说,比起游戏本身的趣味,这个项目更大的意义是教育上的。在开发的过程中,我们的大型项目开发能力、软件学习能力、资源寻找能力、代码维护能力都得到了很大的增强。我们了解了或者深化理解了很多在计算机程序设计中的技巧和原则,如降低耦合度、注释和变量命名的规范性、代码风格等等;学会了怎样多人合作编程,解决冲突;也学会了使用更多的软件工具网站来解决开发中的问题。C#语言的完全面向对象的特点,也让我们对面向对象有了更新的理解。
李卫海老师和孙广中老师的水平都是无可争议的,上课讲的内容既有意思又有很多干货,而且也不是念PPT,而是在把自己的知识教给我们。如果是有OI基础的同学,强烈建议你们在开学考试中认真考试,开学后要来进阶班,不要去普通班躺平了,这里有欢笑,知识和故事。
有意思的一点是,上课的PPT的每一节末尾都会贴一个程序员笑话。比如:“如果自己的程序第一次就成功运行了,新手程序员会很开心,老手程序员会很恐惧。”
最后的期末考试占50%的分数,所以马虎不得。老师强调过,即使是进阶班也有很多人考不好,不要自大了。在考试前夜我们群里面开始疯狂“点炒饭”,讨论各种各样的奇葩C语言程序写法的解析,虽然最后大多都归结于“C标准中没有规定,所以各个编译器中可能不一样”的结论,但是确实还是让我们在考试中减少了很多错误。
为了在期末考试中不至于不知所措,建议进阶班的同学多多帮助你身边的普通班同学,他们有什么困难就坐在旁边指导一下,这样你也知道普通班学的是什么,到了期末考试中就会更加从容。
其他:
我们的课程群已经成为一个水群了,现在的群聊名称是“程设佬群”,里面的同学和助教都已经成为了朋友,估计不会解散了,哈哈。
最后,我要用这腐朽的声带喊出:“老师们好厉害讲课好好,助教们好帅好漂亮(”
2021级 进阶班某只菜鸡
内心感受:班里的强手好多,被无情薄纱
进阶班是给有一定基础的同学开始的。本人高中计算机竞赛压线苟了个省一,开学考试凭借出色的运气来进阶班当垫底。
课程内容: 课堂前半学期李老师上,后半学期孙老师上。老师在讲课的时候不会局限于简单的C语言以及其期末考试范围,还会讲一些更深一些的原理性的知识。可惜我太菜了,只能听懂一小部分。
课程作业:两次小作业,都是简单一点OI题,也感谢cs助教构造的毒瘤数据,让我们这种废物有时候感到百思不得其解。 两个大作业,第一个是3分钟内随机生成一个1024位大素数,第二个大作业是可以自主开发一款应用之类的,总而言之收获很大,但是由于第二个作业是组队作业我有点依赖队友所以收获没有那么大。
关于给分: 期末92, 总评96, 4.3, 感谢欣姐海底捞
关于课程群: 他一直活着,成为了学子们交流的圣地,也可以说是cs粉丝后援团(bushi
一点建议:1.建议认认真真写大作业,会有很大收获
2. 如果你有基础但是想卷其他的科目,可以去普通班。普通班对于有基础的人来说可以花更少的时间拿高分。
21年秋季。
作业分为小作业和大作业。小作业直接rush过去(有个题评测数据出锅呜呜呜
大作业C1没用太长时间,只不过熬了很多夜。
C2我就是上文提到做煌图识别软件的那个,其实软件叫“戒在科大”,煌图识别只是一个功能。
自学的python很多操作,在不断优化中做的挺累。
期末复习复习,考的比想象中差了些。
喜提4.0,谢老师奶我。
感谢whli,gzsun,cs_fisha,doge,paibigstar和这个班级各位巨佬们。
我的期末复习笔记(密码:cscourse):https://www.cnblogs.com/oybdooo-ozai/p/15649843.html
其实还有C1大作业的笔记,只不过不想放出来密码,建议自己认真思考后写
先说进阶班:根据开学考计算机分数进行判定,貌似入班难度并不算高。我初中略接触过OI也能进,也有暑假自学c语言的同学考的比我们班上大多数人还高(可惜没有选择来进阶班)。
当然基础还是要有的。班上大多数同学(应该吧)都是OIer,所以当他们讨论某些听不懂的东西的时候就可以伪装虚心请教,会有不少收获。由于不限优秀率,班上整体氛围趋于共同富裕的感觉,大家都会很乐意将自己的心得体会分享出来。
总评组成为: 小作业(15道A题, 15分)+大作业C1(3min内生成1024bit大素数, 15分)+大作业C2(开发一款游戏或工具, 语言不限, 15分)+课程参与分(貌似5分白送)+期末考试(占比50%).
A题:简单。主要难点可能在于和某大气层助教的对弈,但实际上多加思考或者讨论也就一上午做完的事,毕竟题目本身难度摆在那里。
C1并没有看上去那么难:由于相对宽松的时限(我前后改了有1个月)以及并不算大的数据(裸写能过,对就是我裸写的),更何况还有同学们分享自己使用的算法。
C2是我认为这门课最有意思的地方。大多数同学会考虑使用现成的游戏引擎(基本是Unity),也有少数同学使用C/C++/Python的。在开发的过程中遇到挫折然后兜兜转转(可能还不得不改得更简单)实现自己的想法是一件相当有趣的事。当然要简单的可以做点小游戏什么的,要复杂的甚至还有去学习渲染的。当然重点是调整好和其他课程复习的安排,如果真有自己非常想要实现但不影响总体的功能可以假期继续改嘛(咕
期末没什么好说的。多背教材吧(乐
总体上我十分推荐这个班,无论是班级氛围还是整体给分/作业。我们并不需要去按照教材上的内容按部就班,对愿意挑战自己,拓展自己或者想要体验更贴近现实的“程序设计”的同学都是很好的选择。
总体来说挺不错的,氛围很好,但是最后考试手写代码我不认可。