相信大家对选课会有很多疑问,课程难度如何?选修课选什么好?必修课挂科率高不高?课代表为大家找来了各专业的学霸学长学姐为大家总结了学习心得与经验,希望对大家有所帮助~
Master of Computing and Innovation - Study Plan
必修课列表

选修课列表


难度(课程知识点是否易于理解, 1非常难,5很简单)
考核(考试难度以及作业量,1难过,5易过)来评价部分必修课和选修课
必修课程
COMP SCI 7202 - Foundations of Computer Science
本课程将以数据和数据科学为重点,提升学生的编码和解决问题的技能。学生将学习算法设计以及基本的编程概念,例如数据,选择,迭代和功能分解,数据抽象和组织。学生将探索面向对象的编程基础知识,包括类的使用和继承。学生将建立有效的问题解决能力,包括接触问题的解决过程和策略,简单的“搜索和排序”算法(线性和二进制搜索,选择和插入排序)。学生将建立基本的软件开发技能,包括使用编程环境和工具,调试,测试以及良好编程实践,样式和设计的基础。
本课是入学第一门课,为无编程基础的同学提供的,老师从安装软件到写简单程序,教授编程基础,学习过程循序渐进,每周一个topic,是所有课程里最简单的一门课。课程附带一些编程作业,建议反复练习,为后面打下基础。
ELEC ENG 7057 - Engineering Communication & Critical Thinking
本课程提供项目对其进行可行性分析,进而撰写文档。同时在此过程中为同学提供用英语交流开发项目的机会。
这门课比较像语言班,重交流与思维的形成,及项目开发的流程。对具体项目要求并不大。
COMP SCI 7081 - Computer Systems
本课程从基本硬件门的层次到编译器,语言和应用程序,介绍计算机系统的元素。目的是概述计算机系统的分层性质,以及如何使用简单的界面使复杂而强大的系统设计成为可能。
涵盖的主题包括:数字逻辑,内存,处理器,汇编语言,虚拟机,递归下降解析,代码生成和操作系统。
本课程主要偏向硬件学习,学习最底层的实现逻辑,在工作开发中运用机会不多,但却是支持整个系统运营的核心原理,考核项目比较多,但是都比较容易。
COMP SCI 7201 - Algorithm & Data Structure Analysis
本门课包括程序开发技巧,包括正确性和证明的基本思想,复杂性和分析的概念,递归等。同时包括解决问题的方法,抽象数据类型,列表,堆栈,队列,集合,树和哈希表的表示形式,图和图遍历等概念。
本门课着重培养算法和数据结构理解与应用能力,作业多是对现有算法进行理解和实现,难度较小,算法与数据结构在整个知识结构中也处于重要的基础地位,需要重视且反复理解练习。
注意:这门课上学期换了一个Lecturer,数学方面占比变大!
COMP SCI 7064 - Operating Systems
操作系统涉及:资源管理和扩展虚拟机,历史发展关键部分,相斥,信号量,监视器,经典问题,僵局,流程调度,输入和输出,硬件和软件控制,内存管理,多程序,虚拟内存,分页和符号分段,文件系统,操作,实施,性能,保护机制,保护域,访问列表,功能系统,最小特权原则。
本课程涉及计算机操作系统的全方面,从底层kernel到各种功能实现,让同学体验操作系统的精良设计,此门课由于理论众多且都是成熟的理论,所以考核难度较大,多是对理论的理解与实现。计算机操作系统在日常应用中非常重要,是应用工作的平台,所以需要进行了解。
COMP SCI 7039 - Computer Networks & Applications
着重介绍Internet协议的网络和数字通信简介:应用层体系结构(客户端/服务器,对等)和协议(HTTP-web,SMTP-mail等),传输层操作:(可靠的传输,拥塞) 和流控制(UDP,TCP);网络层操作:(路由,寻址,IPv4和IPv6),数据链路层操作:(错误检测/纠正,访问控制,以太网,802。11,PPP),第2/3层协议(ATM和MPLS):安全性,多媒体协议,服务质量,移动性,无线网络,新兴协议,网络管理。
本课程介绍TCP\IP协议框架,是企业招聘考核的一个重点,因为几乎所有项目都需要基于网络,由于课程中协议多为成熟发展的协议,记忆难度较大,发展的过程与优缺点也为考察重点,所以需要格外注意。
Project项目课程(必修)
COMP SCI 7015 - Software Engineering & Project
在为期一个学期的基于小组的软件工程项目的背景下,本课程介绍了针对高质量软件解决方案的开发过程。本课程涵盖的主题如下:软件生命周期模型,需求分析和规范,程序设计技术和范例,软件规范技术,配置管理和版本控制,质量保证,集成和测试,项目管理,风险分析,软件工程中道德考虑的案例研究。
本课程涉及项目开发流程,然而考察重点是在项目过程中文档的书写与总结,对于开发的实际项目涉及不深。即使如此,同学们也应该尽自己可能在开发中学习流程与技能,为工作中真实项目开发做好铺垫。
COMP SCI 7098 - Master of Computing & Innovation Project
本课程介绍大型软件项目的开发和管理。本课程涵盖的主题包括:软件规范,风险分析,项目管理,质量保证和道德考量的研究。此项目为多人合作项目。
与上面的项目开发不同,这门课偏向于项目的实现,而且多人的小组给每个同学更多的参与机会,几乎每个人都要参与到每个细节,希望同学们可以抓住机会学习与项目相关的技能。注意的是两门项目开发课程技能都是需要自学的,课上老师只会讲概括性的项目开发流程。
选修课程
COMP SCI 7306 - Mining Big Data
课程主要介绍大数据挖掘相关的技术和算法,包括MapReduce、PageRank、推荐系统及clustering等应用算法。要求掌握MapReduce框架编程以及通过应用该编程模式实现各种数据挖掘相关算法。课程覆盖内容难度相对不大,作业要求能够很好的理解MapReduce编程思想从而实现PageRank、Frequent Item等相关算法。该课程内容十分丰富,涉及范围比较广泛但是难度不大,是接触大数据挖掘相关领域的推荐课程。(by Hank)
在大数据高速发展的现在,数据科学在计算机领域越来越重要,但是本门课程仅为基础入门课程,概念与算法相对较简单,且作业为团队合作作业。(by Yuning)作业涉及到的代码实现部分相对有一些难度,但是对于大数据挖掘方面有较大的帮助并且较为容易掌握。(by Hank)
COMP SCI 7094 - Distributed Databases & Data Mining
本课程涵盖的主题包括:分布式数据库系统体系结构,分布式数据库系统设计,分布式查询处理和优化,分布式事务管理,数据仓库和OLAP技术,关联分析,分类和预测,群集分析,挖掘复杂类型的数据。
分布式也为近期比较热门的话题与趋势,本门课程也为课程纲要中为数不多设计数据库部分的课程,数据库为项目开发中重要的一部分,也是开发中的基础之一。
COMP SCI 7026 - Computer Architecture
本门课程包括计算机设计基础,量化成本和绩效,指令集架构,程序行为和指令集使用的度量,处理器数据路径和控制,管道,处理管道危险,内存层次结构和性能,I/O设备,控制器和驱动程序,I/O和系统性能。
课程主要介绍计算机硬件的设计与架构, 以及对于架构的优化。对于偏向硬件方向的同学比较推荐,如果是软件开发方向则不推荐本课程。
COMP SCI 7059 - Artificial Intelligence
人工智能课程主要包含四大主题:Search, Learning, Uncertainty以及NLP。第一部分要求理解、掌握并且能够代码实现路径搜索算法。第二部分介绍基本的一些机器学习相关的理论以及算法,同时包括神经网络的介绍。要求掌握算法的原理并且能够实现基础的机器学习算法。第三部分主要介绍贝叶斯网络、马尔可夫模型等相关概率论与随机过程的知识,不涉及到代码实现。第四部分介绍自然语言处理相关知识。
本课程为人工智能基础课程,与大数据课程一样仅为入门级别,因此难度不大。人工智能也为近几年热门趋势,本课程将进行几次作业,以使学生获得使用关于人工智能技术的基础经验。(by Yuning)
由于该课程作业部分对代码实现能力要求较高,因此对于非计算机背景的同学而言请慎重考虑。但是作为近年来的热门领域,该课程具有很大的实用价值。另外,该课程期末考试难度较大(2020年的考试最后做了总体调分)。
COMP SCI 7076 - Distributed Systems
本课程包括构建客户端/服务器软件时面临的挑战,部分系统故障的排查与解决,例如:多个地址空间,缺少单个时钟,通信延迟,异构性等,RPC和中间件,命名和目录服务,分布式事务处理,数据复制,加密安全性,移动代码。
本课程难度较大,且在一般项目中很难用到分布式系统,只推荐给有相关知识背景的同学。
COMP SCI 7089 - Event Driven Computing
本课程主要包含三部分:自动机理论、设计模式以及GUI理论和应用。介绍事件驱动编程模型相关的自动机理论,包括有限状态自动机、无线状态自动机以及涉及到同步并发到PetriNets理论。在设计模式部分介绍常见的设计模式及其应用场景。
作业部分要求实现类似简易画板的自动机交互程序,一共分为三个阶段对应三次作业。作业通过websubmission上传并通过自动测试评分,由于第二次作业限制了提交代码次数,因此稍微有些难度。
本课程介绍有限状态机相关知识,普通项目开发存在一定量的运用场景。(by Yuning) 课程内容,作业以及期末考试的整体难度不大,但是期末考试的题量较大,会有打不完题的风险。
COMP SCI 7007 - Specialised Programming
本课程主要涵盖了一般的算法,包括:蛮力,分治,动态编程,贪婪算法和搜索技术,为ADSA的进阶版。(by Yuning)作为计算机的专业选修课,这门课有着十分重要的价值同时难度不小,要求理解和掌握常见的算法思想。由于每两周一次的上机考试,因此不仅对于算法理论应用的要求非常高,同时对于代码能力也有的较高的要求。课程要求算法实现的语言为JVM平台语言,因此对于大部分同学来说就是JAVA。对ACM有兴趣的同学,这门课十分重要,并且最好能够多多刷题。
本课程为纯编程课程,分别要求学生合作与课上限时完成topcoder算法题目。对编程能力要求较高。课程难度较大,但是认真准备并且提前学习和完成practice课程的题目并且可以尽量多练习实现算法题,及格比较容易。关键词:刷题、刷题、刷题。
COMP SCI 7307 - Secure Programming
本课程的目的是学习维护软件安全。在课程中,学生将学习身份验证和授权中的问题,安全性审核,输入清理,TOCTOU漏洞,内存管理问题,修复漏洞和补丁分发。
本课程极难。除非对编程非常有信心否则不建议选择。编程作业占考核60%。
COMP SCI 7412 - Secure Software Engineering
该课程2019 s2第一次开课,因此课程设计的内容、难度相对不稳定。课程内容设计各种软件安全漏洞类型及其避免和解决方案。每两周一次随堂测试,难度不大主要考察记忆。作业要求找到github上面开源项目中涉及到的安全漏洞,并且提出解决方案,难度不大,主要考察对报告的撰写能力。除此之外,还有组队项目任务要求从设计到实现能够做到避免安全漏洞。
对计算机和网络安全有兴趣的同学可以考虑选这门课。期末测评是以项目的形式,要求组队在三天之内完成项目课题所指定的内容。
COMP SCI 7407 - Advanced Algorithms
本课程介绍一些高级算法和使用它们的实际场景。高级算法包括:动态规划,线性规划,匹配,最大流量/最小切割,P和NP,逼近算法,随机算法,计算几何。
本课程为ADSA的进阶版,同样为算法的课程,对于以后的系统设计比较关键,同样作为成熟算法,步骤相对固定,作业难度不大。
如果同学们还有什么问题
欢迎添加小德微信
进行咨询哦~
