BDT课程整理
香港科技大学的大数据科技硕士需要修够30个学分的课程,其中包含了12个核心课程学分以及18个选修课程学分。值得一提的是,学生还可以修读6个学分的信息技术理学硕士的课程。
必修课
MSBD 5001:数据分析基础 Foundations of Data Analytics
课如其名,这门课就是数据分析的基础课啦,前两节课主要讲的是统计的部分,因为统计和机器学习密不可分嘛。后面的课程主要分成两大块:机器学习基础(线性回归,逻辑回归,KNN,决策树等等)和数据规范/存储/集成。这门课对没有基础的同学很友好,因为TA会在课上讲python的numpy,pandas,matplotlib和sklearn四个包的基本使用,并且用例子来加深理解;后面还有tensorflow,keras深度学习框架的现场教学,如果课上消化不了,课后也可以自己下载代码学习一下。
01这门课虽然没有作业,但是project很多!期中的时候会有一个单人的kaggle比赛,是TA自己找的数据集发布在kaggle上大家一起PK,还能互相看到排名就很刺激(无限内卷)。另一个是期末的project,5-7人组队完成一个数据分析任务,要进行两次presentation(选题时和结题时)以及完成一个report。
数据分析课。课程主要带我们学习数据分析任务的主要过程。上半学期教授主讲机器学习分析的方法,下半学期教授主讲数据方面的理论。此外,每堂课也会有一些tutorials,关于Python常用的packages以及深度学习框架等,对没有Python和机器学习基础的同学是一个好的补课机会。
是我个人觉得最值的一门课2333,professor是著名的数据科学家——杨强爸爸。当然身为大佬岂能轻易出场~ 所以一半的课是teaching assistant教的~ (你会发现瞬间就没那么有趣了,大佬讲课就是幽默风趣啊啊啊想念大佬)
课程内容基本就是data mining的方法介绍啊,data analysis的基本方法之类。会与5002的Data Mining有重合部分。但是特别之处在于会有一个统计预测相关的course project,大佬只给题目,四人成组,自己去爬数据,清洗之后建模分析,最后汇报成果~ 还是很能学到东西的~ 神马Python呐、R呀、MATLAB啊 两个月速成就问问你还能去哪!
ps项目做得好有福利!(大佬会请吃饭会介绍资源我会乱说??(很惋惜天真的我居然没有合照留念┭┮﹏┭┮ 下个月的毕业照必须补回来~
这门课由Prof. CHEN Kai和Dr. CHAN Cecia带, 内容主要包括机器学习基础、一节TensorFlow Workshop、数据整合相关的几类内容;CHEN Kai带机器学习基础,每节课最后一些时间TA会教一些numpy和pandas等常用库基础,对新手非常友好。TF Workshop也是TA专门用一节课的时间教用TF框架。Cecia讲的内容偏向数据挖掘,相似度度量部分讲的非常细占用了比较多的时间,导致后面内容有些浅尝辄止。评分包括Proj(40%)/in-class kaggle(20%)/Final(40%)。
MSBD 5002:数据挖掘与知识发现 Data Mining and Knowledge Discovery
数据挖掘课。这一届是Raymond教授给我们上(听说下一届是陈雷教授教,期末60小时考试警告⚠️)。开学前就听说陈雷教授教的非常好,得知我这届换老师时还有点小失望,但Raymond并没有让我们失望!DM主要讲数据挖掘的基础算法(有些偏推荐系统),从基本的关联规则,到分类、聚类等等都有涵盖。教授的课突出一个“细节”,他会用理论和具体例子带我们过每一个步骤,可以说是很负责的老师了。But,要说有什么槽点那一定是的homework!想试试光看题干能看一个多小时还没看懂,要专心做上好几天才能写完的作业吗?欢迎来上DM。不过综合来看,课业重也代表着能学到很多东西,现在也确实很感谢Raymond给我打下了很多算法的基础。
是由另一位大佬陈雷教授,这门课是踏入机器学习的基础课程~ 认真学完这门课程就再也不用看内地大佬周志华的西瓜书啦~(同班同学站出来说西瓜书还是很有利于科普扫盲的 这我也表示赞同 因此看不看西瓜书因人而异啦~(这门课会和IT班的同学一起修~ 因此IT的同学想走机器学习、数据挖掘这些方向也完全没问题噢~
这门课由Prof. Raymond WONG带,Raymond是一个非常细致非常温柔的老师,事无巨细会安排妥帖,堪称保姆型教授。内容包括数据挖掘领域的一些基础模型和经典的高引用论文算法讲解,学期最后会安排Proj的答辩,Proj的题目设置基本是最新的顶会Paper复现,Raymond把这部分称为advanced topics。Raymond的课程内容的讲解也足够详细,详细到让高中生来听都可以理解的程度。评分包括HW(30%)/Proj(40%)/Final(40%)。我个人认为这门课算Workload King,HW一共三次,但每次的作业都很费时间,为了写好作业课一定要听仔细。可能是受Raymond影响,这门课的Proj做的也比较细,不得不说Workload最大的也是收获最大的。M5002和M5001有一些知识点的重合,就我个人感觉,M5002算M5001的延展。
MSBD 5003:大数据计算 Big Data Computing
03主要讲的是Spark编程。课上Yi Ke老师会在屏幕上现场教学,一行一行地讲代码(Yi Ke老师的思路超级清晰,口语也很好,不愧是清华小神童)。这门课可以说是印证了BDT的名字,毕竟Spark是现在炙手可热的大数据框架,看一下现在算法工程师的JD,基本上都要求掌握Spark和Hadoop生态圈,因此学好这门课对将来找工作很重要。最后几节课还请到了阿里和腾讯的大佬来线上讲座,加深大家对业界的理解。
03的作业有4次编程,基本上都是课上讲的内容,也不会很难。上课的内容对Math同学稍微有点不友好,因为课上涉及到不少计算机原理和算法,听得我一脸懵逼,还要课后恶补一波。最后也是有Project的,从deep(设计和优化一个pyspark并行算法)和wide(利用课上讲的RDD, DataFrame, SparkSQL, MongoDB, Streaming等知识来实现一个数据分析任务)选一个,完成presentation和report。
大数据计算课。这门课是Program Director易珂老师讲的,主要介绍大数据框架Spark,也涵盖了云计算等topics。这门课偏向编程,作业和考试中coding的比重都比较大。Term project中我做的是实现一个基于Spark的数据分析服务,从大数据分析,到前后端搭建,最后到部署项目实现一个服务,对我来说锻炼很大!总的来说,这门课能学到的还是很多。另外易珂老师的课讲的真的很好!逻辑清晰又耐心,是我大学以来最喜欢的老师之一了。
主要是Spark的开发与运用,课堂上易珂老师会在屏幕上手把手教着spark in python。因此爱学习的宝宝们最好坐在前排,中后排很难看清屏幕上老师敲下的代码,亲测。课上不要分神 跟着老师一步步走,否则一个晃神回来你就不知道老师在讲什么东南西北了(不要问我为什么知道(含泪微笑
这门课程的考试设置是一半现场编程 一半理论知识,也会有project的考核,教授会提供数据,只需要在实现分析的时候,从Spark SQL、RDD、Spark Streaming、GraphFrames、Hive、MongoDB等以上选5个使用即可。
这门课由Prof. YI Ke带,YI Ke从20fall接替CHEN Lei担任BDT项目主任。课程内容包括Spark生态的原理和使用,易老师讲课足够清楚,我觉得广度和深度作为一门课程已足够。令我印象深刻的是易老师回答canvas里问题的及时和详细,半夜提的问题会在第二天一早被回复,从跟易老师做M5014的同学那里了解过,果不其然也是带教过程非常认真,我愿意给一个最佳教授提名。
MSBD 5004:数据分析的数学方法Mathematical Methods for Data Analysis
红红火火恍恍惚惚,这门课程就是介绍了Fourier transform(FFT、DFT)、Wavelet transform等理论知识并灵活运用。实不相瞒这门课程在上课的时候我基本全程懵X状态,全靠课堂笔记和课外书籍狂补,当然有数学or统计底子并且基本功扎实的可以忽略我。
这门课由Prof. CAI Jianfeng和Prof. WANG Yang带。 Jianfeng的内容包括基础知识:向量空间、范数、内积空间、核技巧、线性函数等,案例研究:SVM、岭回归、优化、梯度及黑塞等等;Yang的内容包括傅立叶变换相关。这门课介绍了基本的数学概念,就我个人而言,jianfeng和yang的这种板书讲解我非常可以接受,yang虽然身为副校长事务繁忙,但在他负责的四节课里,讲解足够清晰明了,功底可见一斑。除此之外,下面会介绍Jianfeng带的M5007。
选修课
MSBD 5005:数据可视化Data Visualization
水,教审美
MSBD 5006:金融间序列的定量分析Quantitative Analysis of Financial Time Series
Programming (Python/R)
Ljung Box Test, Stationary, ACF/PACF, AR/MA/ARMA/SARIMA model, ARCH/GARCH model, ADF.
Useful Link: MSBD5006
MSBD 5007:优化和矩阵计算Optimization and Matrix Computation
这门课由Prof. CAI Jianfeng带, 内容主要包括代数基础、线性方程、不受限光滑优化、不受限非光滑优化、受限优化、矩阵分解等等。本来这门课的先修课程是M5004,但是项目却把M5004排在Spring,这门课排在Fall,同时学长学姐说对数理基础要求高慎选。我自己数理基础一般但还是硬着头皮选了。在结课之后回头看,其实这门课并不可怕,首先在fall term第一次上这门课,对梯度下降进行推导证明的时候,确有豁然开朗之感,如果一个人的机器学习基础不包括这种数学训练的话,我认为这样的基础是不扎实的。jianfeng的讲解和板书都很清楚,只要不走神,跟紧思路还是没啥大问题的。考试题目和作业题型类似,也比较友好。jianfeng人也很nice,两句口头禅是no problem和dont worry about that。
MSBD 5008:社会计算导论
主要讲图神经网络,也是一个很不错的方向
MSBD 5009:并行编程 Parallel Programming
这门课由Prof. LUO Qiong带, 课程内容包括流行的各类并行编程框架MPI、OpenMP、Pthreads、CUDA以及一些经典的并行范式(Reduce、PrefixScan等)。这门课同样被打上编程基础要求高慎选的标签。我自己编程基础一般但还是头铁又选了。三次HW,确实基础一般做起来相当费时,有两次的我花了两三个白天的时间才能做好,做完以后回头再看其实题出的不算难,真的只是考察了必须要掌握的基础,只是这debug太折磨。Qiong是一个非常温柔知性的教授,回答问题总是笑,讲课讲着讲着也笑。我喜欢Qiong的笑。
MSBD 5010:图像处理与分析 Image Processing and Analysis
是图像处理课程,主要使用的工具是matlab,可以作为CV的先导课程
MSBD 5011:高级统计:理论与应用Advanced Statistics: Theory and Applications
有个作业是川麻大赛,每位同学做一个川麻的AI,最后大家的AI互相PK等等。
MSBD 5012:机器学习 Machine Learning
首先我要说一句:乃文(Prof. Nevin L. Zhang)永远滴神!乃文是我们宿舍给老师起的外号,因为他的英文名的读音很像乃文哈哈哈。5012估计是BDT最牛最硬核的课程了,之前没有深度学习基础的同学会比较吃力一点(但这门课是选修课)。
Machine Learning,朴素的名字下却包含了传统机器学习(从线性回归到随机森林),深度学习基础(FNN,CNN, RNN/LSTM),深度学习进阶(Adversarial Attack,Explainable AI,Transformer and BERT,Variational Autoencoders,Generative Adversarial Networks,Reinforcement Learning)。选了5012,一学期上完机器学习和深度学习不再是梦。而且,每节课乃文老师都会从理论的角度来解释每一个模型,同时伴随着海量的手推公式,简直是Math专业的福音啊(推公式我们在行,吧)。课后还会发布大量的tutorial,包含了Pytorch写的模型例子以及TA的视频讲解,感觉这种模式超级棒,课上讲理论,代码部分放在课后自学,不多占用课堂时间。
这里插一句,我之前还是tf boy(使用tensorflow的男孩),自从接触了pytorch就真香了,代码写起来比较简洁易懂,而且现在学术界大部分用的是pytorch的框架,果断变成py boy(使用pytorch的男孩)。
5012的作业也很硬核,分为手写作业和编程作业。手写作业大部分是上课讲的一些理论和计算,编程作业主要是实现softmax, back propagation和一些模型,在编程的过程中也可以加深对理论的理解。最后有一个deep learning project,但是不占用课堂的时间做展示,而是做一个视频上传到YouTube。
机器学习课。选课一开始机器学习课就爆满,还吸引了很多外专业的同学来选。这门课可以说是这学期最硬核的课了。教授讲的特别细节,课上涵盖了大量大量的公式手推,没错这基本就是数学课,稍为走神就跟不上了hh。虽然叫机器学习课,但传统统计机器学习部分只占比40%左右,老师侧重了深度学习,让我们接触到Transformers,GAN,XAI,RL等相对偏前沿的知识。不仅如此,课下还有多次assignment和programming作业,以及一些Tutorials课和课外资料阅读,从数量和深度来说难度都不小。。。你以为这就完了吗( )?还有Term Project等着你,project涵盖了大量的自学和代码工作,鼓励做得新颖,比较具有挑战性。如果这学期你看到一个BDT学生在图书馆学习,那么ta可能一半时间都在学5012这门课吧 。但话说回来,这门课认真学是真的完全能建立起机器学习、深度学习的认知,能理解很多模型和算法,也是我这学期学到最多东西的课了吧。
这门课由Prof. Nevin ZHANG带,课程内容包括一些机器学习基础、回归与GD、生成vs判别、贝叶斯相关、偏差方差、DNN/CNN、LSTM/GRU、GAN、XAI、BERT等等过去一段时间在机器学习领域有影响力的工作。这门课讲的内容其实大家已经有不同程度的理解,但作为一门入门课,我认为是合格的。
MSBD 5013:统计预测 Statistical Prediction
这门课由Prof. CHEN Kani带,Kani的汉字是卡你,Kani是内地出身所以这名字也不是什么外国人自己起的,由来好像有段轶事,不可考就不展开了。这门课非常干脆,没有final,只有in-class kaggle (100%)。Kani作为隔壁金数项目的主任属于是把TPG整明白了。单就课程内容来说,是统计机器学习的那一套,与上学期M5012相似但又不是一个味道。
MSBD 5014:独立项目 Independent Project
这门课是为想要读PhD的学生设计的,可以选择导师,跟着导师做一个项目。我选的课题是有关NLP方向的,基本上每个月会和导师开会汇报进度,有问题也可以随时和导师发邮件交流,是接触大佬最好的机会。想要尝试一下科研的同学可以选择这门课。
独立项目课(翻译的好别扭,我们一般直接叫ip)。会在教授的指导下做一些正在进行的课题/科研项目,是一个接触教授,获得科研实践经历的好机会。这门课中我选择自己喜欢方向的project,对我之后的求职/科研都带来了很大的帮助。
这是被多次提及的独立项目课程,可以通过这门课与心水的Facauty增进彼此的了解。2020-2021带项目的Facauty有Ke YI、Lei CHEN、Nevin ZHANG、 Huamin QU、 Fangzhen LIN、 Jianfeng CAI等等,题目的方向基本都是老师们各自的研究领域。作为开设目的,通过这门课得到领域的common sense是保底可以做到的,但在兼顾其他课程的前提下,不同于RPG可以将主要的时间投入到自己的工作中,想要靠这门课做出扎实的自己的工作难度很大,本身的资质需要过硬。不过作为一项工程项目,在工作面试中是合格了的。
MSBD 5015:人工智能 Artificial Intelligence
Writing & Programming (Python)
Decision, TLU Implementation, Perceptron, Agent, State Machine, Travelling Salesman Problem, Constraint Satisfaction Problem, Markov Decision Process, Reinforcement Learning, A* Search, Minimax Search, Tree, First-order Logic, Bayes, D-Separation, Nash Equilibria.
Useful Link: MSBD5015
MSBD 5016:深度学习满足计算机视觉:实践与应用 Deep Learning Meets Computer Vision: Practice and Applications
(same with CS231n) Writing & Programming (Python)
Image Classification, kNN, SVM, Softmax, Fully Connected Neural Network, Fully Connected and Convolutional Nets, Batch Normalization, Dropout, PyTorch & Network Visualization, Image Captioning with RNNs and Transformers, Generative Adversarial Networks, Self-Supervised Contrastive Learning, …
Useful Link:
MSBD 5017:区块链技术介绍 Introduction to Blockchain Technology
Programming (Python/JS + Solidity)
Useful Link: MSBD5017
MSBD 6000I:文本挖掘 Text Mining
主要讲的内容是文本挖掘有关,涉及到文本表示,分类,聚类,情感分析和主题建模。自然语言处理也是最近很火的一个方向,因此BDT也开设了相关的课程,另外一门是下学期的NLP。授课的Jason老师人很nice,也会经常邀请他的业界好友来开讲座,而且上的内容也比较基础简单。
MSBD 6000H:自然语言处理 Natural Language Processing
自然语言处理课。对NLP感兴趣的同学不要错过呐。在简单地过一些机器学习/深度学习基础后,教授会从传统到深度学习介绍NLP的发展以及各个子任务,是一个全面了解NLP的好机会。此外在Assignment和Project当中可以实际接触和实践一些NLP的子任务,对想走NLP方向的学生可以说很有帮助了