活动回顾 | 数据科学学院CSC1001课程学习分享与答疑会
CSC1001课程
学习分享与答疑会·活动回顾
SDS 数据科学学院
活动回顾 EVENT REVIEW
期末考试前夕,数据科学学院应学生备考需要,帮助学生解答学期内遗留的疑难点、提升学习成绩,学院教授方一向、贺品嘉协助学生组织了两场CSC1001课程学习分享与答疑会。活动邀请了7位国际和国内大学生程序设计竞赛(由国际计算机协会ACM举办)获奖团队的队员,以自己的实战经验,向同学们分享了面向对象的程序设计(OOP)、树、数据结构、算法、时间复杂度、代码补全与程序阅读等编程相关的学习经验和心得。分享和答疑活动受到学生们极大的欢迎,两个场次每场参与人数均近300人,现场座无虚席。许多学生表示分享会干货十足,不仅对备考非常实用,还加深了自己对编程的理解,有利于今后的编程学习。
未来学院也将持续关注学生们的需求,带来更加丰富的学业辅导活动,帮助大家学业进步。
分享与答疑会精选干货
7位分享人均来自ACM大学生程序设计竞赛获奖团队,其中一支队伍获得了学校第一项国际大学生程序设计竞赛(ICPC)的金奖,创造了港中文(深圳)程序设计竞赛历史上金奖从无到有的突破。分享人分别准备了与编程相关的多角度内容,与同学们分享第一手的学习经验,以他们的实际经历,挖掘同学们学习上的难点和痛处,最大程度帮助同学们节约备考时间、丰富编程知识、拓宽对编程的认知。
获2021年中国大学生程序设计竞赛(CCPC)哈尔滨站金奖、广州站银奖
获2021年ICPC亚洲区域赛沈阳站银牌
曾协助举办港中大(深圳)首届校内程序设计大赛
高中曾获NOIP全国信息学奥林匹克联赛一等奖
侯天赐同学首先介绍了三种数据结构:队列(queue)、栈(stack)、链表(list)的代码实现,讲解了以上数据结构在Python中基于类的代码实现和依附Python自带的list的代码实现。他着重讲解了以上数据结构的边界问题(难点),分析了队列和链表以循环形式出现的边界和回收机制。同时还分析了各类数据结构在不同实现方式下的各类操作的复杂度。结合实际分析它们在现实生活中的应用,如火车调度问题。最后他为大家设置了一道思考题,带领大家分析思路,帮助同学深入理解数据结构。
忙秋阳 经管学院 2021级获2021年CCPC桂林站金奖、广州站金奖
获2021年ICPC亚洲区域赛沈阳站金奖、南京站金奖
现任算法竞赛集训队学生助理
高中曾获清华大学信息学学科营一等奖
忙秋阳同学从定义开始讲述时间复杂度的基本概念:通常通过计算elementary operations的运行次数来估计时间复杂度,将它记为和某个变量n相关的函数f(n),用O(f(n))来表示渐进意义下的时间复杂度。介绍时间复杂度的比较和分析,讲述基本法则以及不同、相同基本类型之间的比较、混合类型的比较,分析以下情况时的时间复杂度:循环与条件语句嵌套、递归语句,介绍递归式的通解(主定理)以及主定理不能成立的情况。系统地归纳了以上几类题目的解题思路,并用画图讲解的形式帮助同学们更好地掌握几类基本算法的时间复杂度。
夏禹扬 数据科学学院 2021级获2021年CCPC威海站银奖
获2021年ICPC亚洲区域赛济南站银奖、上海站银奖
高中曾获NOIP全国信息学奥林匹克联赛一等奖
夏禹扬同学介绍了Python面向对象程序设计(OOP)中private的实现(所谓的private:在变量前加两条下划线,其实也可以在class外访问)、旧式类的继承顺序(Python在多重继承中寻找对应函数类似dfs(深度优先搜索),比较好的写法是函数名保持不同,或者在子类中定义好不同的函数),以及编写面向对象程序时可能遇到的部分问题,如:如果要强行调用父类中的private函数或变量,classname必须是父类的classname;接着他介绍了二叉树的类别、有关二叉树的前序、中序、后序遍历,讲解在得知前序遍历和中序遍历后如何求出二叉树的原本形态(前序遍历的第一个节点为根,在中序遍历中找到该节点并将序列分成两段向下递归即可);最后进行拓展,讲解如何用单调栈在线性时间内判断一个前序遍历是否来自某棵二叉搜索树。
赵子逸 数据科学学院 2021级获2021年CCPC威海站银奖
获2021年ICPC亚洲区域赛济南站银奖、上海站银奖
曾协助举办港中大(深圳)首届校内程序设计大赛
高中曾获NOI全国信息学奥林匹克竞赛铜牌
赵子逸同学为大家讲解了排序和递归之类的算法问题,以及需要注意的细节点。递归是函数对自身的调用,其内部实现为栈;快速排序是一种分治算法,又称划分交换排序,简称快排。介绍了快排的两种实现方法:Lomuto分区和Hoare分区。提醒细节问题:负数取余以及数值和list在内存中不同的处理方式。
胡海川 数据科学学院 2019级获2020年ICPC亚洲区域赛澳门站铜奖
多次为校内社团开设计算机相关的讲座与课程,包含Python、C++、LaTeX等
胡海川同学讲解了关于编程语言本身的知识点,包括引用语义和对象的初始化流程。这些内容因为思维难度不大而常被大家忽视,但在实际编写程序的过程中又非常重要。在编程时为避免写出bug,应在写代码时即对自己代码的行为有明确的认知,而不是将一切留到运行时去检测。本次介绍的引用语义是在Python中实现基于pointer machine的数据结构的基础。同时,这套规则也是Java、C#、JS等一系列去除了“指针”的编程语言所共同采用的,也将有助于同学们今后的编程学习。
曲恒毅 数据科学学院 2020级获2021年CCPC哈尔滨站金奖、广州站银奖
获2021年ICPC亚洲区域赛沈阳站银牌
高中曾获NOIP全国信息学奥林匹克联赛一等奖
曲恒毅同学以习题讲解的形式,通过几道题帮助同学们复习相关概念并着重解析了难点和易错点。如:汇编语言是低级语言,但它并不能被计算机直接执行;图灵奖是计算机科学领域中最重要的奖项;二叉树的性质以及类别等。
郭⻘硕 数据科学学院 2021级获2021年CCPC哈尔滨站金奖、广州站银奖
获2021年ICPC亚洲区域赛沈阳站银牌
曾协助举办港中大(深圳)首届校内程序设计大赛
高中时曾获NOI全国信息学奥林匹克竞赛铜牌
郭青硕同学针对同学们在问卷中提出的“读不懂代码”、“不会写代码”等问题,准备了针对程序阅读与代码补全的复习内容。郭同学参照往年的考题和经典的算法与数据结构问题,改编并原创了一些关于代码补全和程序阅读的习题,内容涉及课内的排序二分查找等经典算法、栈队列链表的经典数据结构。同时,他引导大家思考这些算法的其它实现方式,并由此引出课上未涉及的归并排序等内容。郭同学的讲解深入浅出,在这种以练代讲的方式下,让同学们在实践中掌握阅读代码和程序设计的基本思路。
学生们的声音
讲得很有用!在听课之前我对于tree的了解仅仅停留在一些基础概念上,听了分享会之后才知道原来tree有那么多考点,而且很难,毕竟课件上tree的部分只有23页。而且也没想到时间复杂度也会考那么多花样,最后给公式总结大大的好评,在期末考试中也有应用。学长们讲的题也很到位,很契合考点,有些题有期末考的影子,而且最后也会给答案!线上答疑也很有用,希望明年学CSC1002的时候也有这样的分享答疑会来拯救我的Python!
同学A(应学生要求匿名)讲的很有用!好多都有期末考的影子!
同学B(应学生要求匿名)这次分享会真的好棒!!ICPC集训队的同学和学长用他们的知识背景帮助我们补充角度,使我们得以更好地理解一些难点,同时往年例题的讲解分析也让我们提前适应考题,很感谢集训队的同学们在期末周认真地准备了这场分享,特别好。
同学C(应学生要求匿名)我觉得分享会学到的知识对期末考试很有帮助。第一,分享会讲的都是我最想听、最有疑惑的知识,内容很精简没有冗余的部分,而且好几处都是考试的重点;第二,它让我们从本质上理解问题,是对课本知识恰当的拓展,所以在理解的基础上就不用去硬记知识点了,备考节约很多时间;第三,分享会有提到很多细节的知识点,对考试中的零碎考点也超有帮助!
除了期末考试,分享会很大程度弥补了我的知识漏洞,这对以后CS学习挺重要的,还有一些围绕老师讲过的知识点的拓展,有思考空间,认真听确实很有意思。
目前我对CS的各个领域还不是很了解,一些课外的延伸我觉得都挺好的。
大学生程序设计竞赛小知识
国际大学生程序设计竞赛(International Collegiate Programming Contest,即ICPC)是由国际计算机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛(开始于1977年)。经过近40年的发展,ACM国际大学生程序设计竞赛已经发展成为全球最具影响力的大学生程序设计竞赛。目前主要包括四个层级的竞赛:亚洲区域赛(即国家级比赛,包括网络选拔赛2场和常规赛6场)、亚洲区域赛总决赛(1场)、全球总决赛(1场)。
中国大学生程序设计竞赛(China Collegiate Programming Contest,简称CCPC)是由中国教育部高等学校计算机类专业教学指导委员会主办的面向全国高校大学生的年度学科竞赛(开始于2015年),旨在激发学生学习计算机领域专业知识与技能的兴趣,鼓励学生主动灵活地运用计算机知识和技能解决实际问题,有效提升算法设计、逻辑推理、数学建模、编程实现和计算机系统能力,培养团队合作意识、挑战精神和创新能力。目前主要包括三个层级的竞赛:省赛(1场)、区域赛(4场)、总决赛(1场);另外还有1场女生赛。
ICPC/CCPC奖项不仅被国内许多高校列入评奖、推免的标准之一,也被企业广泛认可。在ICPC/CCPC的比赛中,由两至三人组成的参赛队伍需要在五小时内尽可能多地解决最多十几道编程题目。解题数多、解题速度快、解题正确率高的队伍将会在竞赛中胜出。ICPC/CCPC考点覆盖广,包含了对编程能力、数据结构、算法以及数学知识的考察。因此,参加赛事能够极大地锻炼选手编程等综合素质。
目前学院已开启2022年大学生程序设计竞赛的筹备工作,未来也将持续投入资源支持学生的比赛,旨在“以赛促学”、“以赛促研”,以竞赛促进计算机本科教育水平的提升,提高大家对科研的兴趣。后续学院会为大家带来更多更详细的竞赛相关内容,请大家持续关注,也欢迎大家踊跃报名参加2022年大学生程序设计竞赛。
相关阅读
活动回顾 | 数据科学学院2021级本科新生礼包&迎新小活动回顾
资料编撰丨
文案丨
排版丨
施若暄 经管学院 2021级
SDS Publicity
SDS Publicity