数说好课 | CSC3100数据结构:编程与算法的实践之旅
“数据科学学院数不尽的好”系列
想知道在香港中文大学(深圳)数据科学学院(SDS)读书是什么样的体验吗?我们全新推出“数据科学学院数不尽的好”系列内容,通过不同的专题,让您“足不出户”沉浸式感受SDS的学习、生活等方方面面,体验在SDS就读的各种好:
数说好课
介绍学院专业打磨的精品课程
教授开箱
揭秘具有工匠精神的学院老师
数科时刻
探访SDS学生学习生活与实践
数话英才
采访毕业生在SDS的心路历程
“数说好课”专题
SDS创新将计算机科学与技术、数据科学与大数据技术、统计学三大专业方向交叉融合,为学生提供实用和前瞻性相结合的交叉学科教育。自学院成立以来,SDS致力于教学精进与探索,总结既往经验,持续做教学改革,以提升教学质量,更好地满足学生需求。
通过“数说好课”专题,我们将详细介绍一系列经过学院专业探索和打磨的精品课程。
本期专题CSC3100,
打开计算机教学新局面,
实现三大课程亮点,
致力打造数科er的理想课堂。
亮点1 | 实践为王 以实践的方式传授知识
亮点2 | 考试无惑 出题老师考试“划重点”
亮点3 | 科研自由 本科即可做科研发论文
课程介绍
1 课程内容
作为计算机科学和数据科学的必修课程,CSC3100数据结构课程内容涵盖:
▪️ 介绍抽象数据类型的概念和数据抽象的优点;
▪️ 介绍迭代器和堆等高级数据结构;
▪️ 讨论各种常用的数据类型,包括数组、堆栈、队列、列表、树和图,以及它们的实现;
▪️ 以排序和搜索为例简要介绍数据结构的应用和算法的复杂性分析。
2 任课教师(2023年秋季学期)
方一向
副教授
香港大学博士
研究领域:
大数据管理、挖掘、人工智能
个人简介:
方一向教授现为香港中文大学(深圳)数据科学学院副教授。他于2010年获哈尔滨工程大学工学学士学位,2013年获哈尔滨工业大学工学硕士学位,2017年获香港大学计算机科学系哲学博士学位,之后在香港大学和澳大利亚新南威尔士大学继续从事学术研究工作。他曾于 2016年,作为访问学者在新加坡南洋理工大学学习。
方博士主要研究大数据管理、挖掘、人工智能等相关课题,具体包括面向大规模图数据的数据管理、数据挖掘、图神经网络、表达学习等,以及面向大规模空间数据的学习型索引构建、关键字搜索、地理社交网络挖掘、轨迹查询等。他已在数据库、数据挖掘、人工智能等领域的国际顶级会议/期刊(如VLDB、SIGMOD、ICDE、NeurIPS 、WWW、IJCAI、TODS、VLDBJ、TKDE等)上累计发表论文70余篇,包括中国计算机学会认定的A类论文(即CCF-A)40余篇,第一/通讯作者CCF-A论文20多篇。其中一项代表性研究成果的论文被评为SIGMOD 2020会议的最佳论文之一(~4/458),并荣获2021 ACM SIGMOD Research Highlight Award。方博士目前担任国际知名期刊《Information Processing & Management》(CCF-B类期刊)的编委。他曾是多个数据库和数据挖掘领域顶级会议(例如PVLDB、ICDE、KDD、AAAI、IJCAI等)的程序委员会成员以及顶级期刊(例如TKDE、VLDBJ等)的审稿人。
于天舒
助理教授
亚利桑那州立大学博士
研究领域:
机器学习、组合问题优化、图学习和优化、循环神经网络、行列式点过程
个人简介:
于天舒博士现为香港中文大学(深圳)助理教授。于博士于2012年毕业于沈阳工业大学并取得学士学位。其后前往加拿大卡尔加里大学攻读地理信息工程专业并于2016年获得硕士学位。在此之前,他曾于2012至2014年间任飞利浦医疗算法工程师。于博士于2021年从亚利桑那州立大学计算机科学专业毕业并取得博士学位。
于博士主要研究兴趣涵盖多个机器学习和组合问题优化相关领域。他对利用机器学习解决传统组合问题,图学习和优化,以及在深度学习框架内寻求结构扩展特别感兴趣。循环神经网络,行列式点过程也是他开展的研究之一。于博士也是多个顶级会议(例如ICLR 2021, NIPS 2020, CVPR 2019-2021, ICCV 2019, ECCV 2020等)以及期刊(例如IEEE Transactions on Image Processing, IEEE Transactions on Neural Networks and Learning Systems, IEEE Transactions on Circuits and Systems for Video Technology, Pattern Recognition, Pattern Recognition Letters等)的审稿人。
课程被学生评为——
“从刚学会简单编程到认识算法中间很好的一门课”。
亮点1 实践为王:以实践的方式传授知识
课程精进前的挑战——
如何为学生提供实践和动手经验?
2023年秋季学期,CSC3100课程吸引了310名学生选修,涵盖各年级,同时受到其他学院学生的青睐。面对学生背景的多样性,课堂需求也变得复杂起来。
为了更好地满足不同背景的学生需求,CSC3100积极进行了学生走访调研。其中,同学们频繁提到一个关键词——实践。为学生提供课堂外的实践和动手经验,成为解决学生需求多样化的突破口。
学生心声:希望课堂不仅限于授课讲解,还能包括动手实践的机会。这样就可以在实践中运用所学的知识了!
学生心声:这门课程吸引了来自不同学院和年级的学生参与,课程难度我能适应吗?还有其他拓展知识的机会吗?
SDS:CSC3100一定满足同学们的需求!
课程精进后——
题库+作业+竞赛,实践动手能力Up!
CSC3100课程通过创新引入在线题库系统、设置实操编程作业,并鼓励学生参与竞赛,让学生在实践中深刻体验数据科学的魅力。
Online Judge (OJ) 在线题库
在2023年秋季学期,CSC3100教授团队邀请了一批拥有丰富编程竞赛经验的学生与USTF(本科生助教)团队合作,精选了100道来自USACO、Codeforces、洛谷等知名竞赛平台的高质量题目,涵盖堆栈、队列、树、图等课程核心概念。这些题目上传至学校的Online Judge (OJ)在线平台:http://oj.cuhk.edu.cn/,供全校学生随时访问和挑战。
OJ题库在线平台
实操型编程作业
CSC3100课程通过创新的作业设计,紧密结合理论与实践。该课程的四次大型作业均为与课程内容密切相关的编程题目,学生需要用Python/C/C++/Java等编程语言来编写程序解决问题,之后在Online Judge(OJ)系统上提交程序源代码。OJ系统能够在几秒钟内完成对源代码的正确性、时效性、内存开销等方面的快速评估,学生可以根据OJ的反馈和提示反复提交源代码,从而得到了较强的编程锻炼。
通过完成这些编程作业,学生能够在多次实践中掌握CSC3100课程的核心知识点,深化对课程知识的理解和应用。
编程竞赛
课程鼓励学生积极参加各类编程竞赛,以提升他们的编程能力。一些选修本课程的学生曾在NOIP (National Olympiad in Informatics in Provinces / 全国青少年信息学奥林匹克联赛)、CSP (Certified Software Professional / CCF软件能力认证)及学院主办的港中大(深圳)程序设计竞赛等赛事中获奖。
具备优秀编程能力的获奖学生可免在线作业。同时,课程还鼓励他们在辅导课上分享知识与心得,帮助其他同学解决编程难题。
程序设计竞赛现场
学生评价
通过尝试在线题库、实操编程作业以及参与编程竞赛,不仅激发了学生的学习兴趣和创新精神,还让不同背景的学生可以根据个人学习进度提升自我能力,为未来的发展奠定坚实基础。
谢昊轩 2019级 计算机科学与工程专业:
“该课程是计算机专业的一门重要课程;在课程中,教授们通过在 online judge (OJ) 布置习题的方式提高同学们编程能力和面试技巧,并介绍这些习题与科研的关联,鼓励学生继续深入研究。”
何润元 2023级 大一尚未选专业:
“CSC3100是一门非常全面且有价值的数据结构课程。我们通过学习栈、队列、树以及图论等内容,可以建立坚实的数据结构基础,提升算法能力和代码编写能力。课程作业不限制语言,考试可以写伪代码,这种包容性和实践性的设计可以帮助我们更好地理解和运用所学知识。总之,CSC3100是门极好的课程,希望这门课程以后越办越好。”
亮点2 备考无惑:出题老师考试“划重点”
课程精进前的挑战——
如何能系统规划编程学习,并考试必胜?
CSC3100通过与学生的对话了解到,许多学生在初识编程阶段进入该课程,对如何规划和提升编程能力感到困惑,并且对编程学习内容有很多疑问。特别是在考试前夕,学生们对答疑的需求更加迫切。
CSC3100课程也希望提供更多课外的教学活动和交流机会,更好地帮助学生提升编程能力,从而让学生们更轻松地应对考试。
学生心声:刚开始接触编程的我,该如何规划提升编程能力?
学生心声:期末考就在眼前,好焦虑啊,感觉教材的每个字都可能是必考点!
SDS:CSC3100已响应,势必解决同学们的困难!
课程精进后——
教授面对面座谈会,学业规划高分无忧!
CSC3100创新设立了师生面对面交流的课外平台——课程座谈会,为学生提供老师针对性解决学生学习疑惑的机会,同时帮助他们更好地备考大考。
课程座谈会
2023年秋季,CSC3100在诚道楼举办的课程座谈会吸引了90余名学生和数十名TA/USTF的积极参与。
01. 分享答疑
教授们详细介绍了课程的教学目标和教育理念,并分享了多种实用的学习方法和技巧。互动环节中,学生们积极提出了关于如何补充学习基础、课程考核标准以及提升编程技能的问题,授课教师也给予了详尽的解答。
02. 教授“划重点”
座谈会还特别邀请了两位出题TA进行深入讲解,包括题目理解、解题思路和技巧,帮助学生更好理解编程作业。
座谈会现场
学生评价
通过课程座谈会,CSC3100致力于打造一个互帮互助、共同成长的学习环境,让每位同学在轻松愉快的编程学习中更快取得进步。这种交流平台不仅促进了知识的传递,还增强了学生的学习动力和自信心。
康泽煊 2022级 大数据与数据科学专业:
“授课老师讲的很深入浅出。从算法复杂度的表示到图论的基础算法,个人认为是作为从刚学会简单编程到认识算法中间很好的一门课,课上会有详细的例子来解释算法的流程,能够让学生很好的理解。”
曾子荣 2022级 计算机科学与技术专业:
“CSC3100给我的感觉是一门理论和实践相结合的课,知识体系很清晰,老师讲解得也很细致。作业题目都是由教授和助教们精挑细选出来的,题出的好,覆盖知识点广,题目有着切合实际的背景,解法比较自然,要求同学们将课上所学的理论知识学以致用,能极大地提高同学们的编程水平,为课程点赞!”
亮点3 科研自由:本科即可做科研发论文
课程精进前的挑战——
如何能够尽早参与科研活动?
CSC3100课程了解到学生对科研有很大的热情,希望能在本科阶段尽早参与科研活动。同时,正在规划实习工作和升学申请的高年级同学,也希望有机会展示自己的编程能力,丰富个人简历。
学生心声:本科生有机会参与科研吗?
学生心声:希望能有机会展示自己的编程能力,为个人简历增添亮点!
SDS:CSC3100旨在为本科生打造一个参与科研并展示编程才能的平台!
课程精进后——
为本科生提供更多科研机会!
CSC3100课程紧密结合科研,教授们不仅传授理论知识,还引导学生进行科研探索,鼓励本科生参与教授们的科研项目并共同进行科学研究。任课教授方一向、于天舒不仅具备丰富的教学经验,而且在授课中融入科研知识,积极培养学生的科研能力。
发表顶会顶刊论文
曾选修过CSC3100课程的学生也在该课程中开始探索科研领域,并取得一定成果:
徐亦宸(SSE学生)、谢昊轩
参与方一向教授的科研项目,并在方教授的指导下,在数据库领域具有最高学术地位的顶级国际学术会议SIGMOD各发表了1篇论文。其中徐亦宸在数据库领域三大顶刊之一VLDBJ期刊也发表了1篇论文。两位学生在毕业后分别前往美国加州大学伯克利分校和新加坡南洋理工大学攻读博士学位。
周子涵(SSE学生)
参与于天舒教授的科研项目,并在于教授的指导下,在机器学习与人工智能领域国际顶级学术会议ICML发表1篇论文,并在本科毕业后继续跟随于教授攻读博士学位。
竞赛获奖
方一向教授在程序设计竞赛领域拥有丰富经验,目前担任港中大(深圳)程序设计竞赛队伍的教练,并曾两次带竞赛队进入国际大学生程序设计竞赛(ICPC)全球总决赛。多名参与过CSC3100课程的学生初尝程序设计竞赛的乐趣,优秀的竞赛经验和成绩也会是学生未来深造名校、进入名企的敲门砖:
石雯岚
曾荣获2023年港中大(深圳)程序设计竞赛季军,并在毕业后进入量化资产管理公司博普科技开启职业生涯。
学生评价
石雯岚 2019级 计算机科学与工程专业:
“CSC3100课程让我初探算法问题,更令我震惊的是,在完成这门课程后参加了去腾讯的实习面试,发现面试题的思路竟然在课堂上都有讲过。”
徐亦宸 2019级 理工学院应用数学专业:
“在3100这门课中,我们学习了许多简洁且有效的数据结构和相关的算法,我逐渐认识到在解决实际问题时运用它们的重要性。其中,时空复杂度的概念令我印象深刻。它让我在后续的科研工作中始终将高效性视为算法设计的关键指标。通过这门课,我也对图数据结构产生了浓厚的兴趣,并因此展开了相关的科研。”
CSC3100课程的创新与进步不会止步于此,数据科学学院将持续发力打造好的课程,也敬请期待学院其他专业的“数说好课”。