写在前面: 本课程指南由各专业学长学姐根据2019-2020年课程经验编写, 同学们可以先对课程进行了解, 新学年的课程表若有更新, 我们后续会有更新以及解析, 请持续关注~
课程介绍
Year 2 必修
1. COMP 201
Software Engineer 15学分
Coursework 2*20%
Writing Exam:60%
课程内容:
该课程旨在帮助学生发展对大型计算系统的开发相关的问题的理解(无法由一个人设计和开发的大型系统,通常被设计服务于数量较大的用户。)并且学习以一种较为高效的方式开发此类系统过程中所需的技术和工具。
学习成果:
1. 了解一个项目的完整life cycle。可以用Java等语言设计一个简单系统
2. 理解设计系统的需要,以完全满足预期用户的需求,包括功能性和非功能性的要素
3. 更加深入了解面向对象原则,并运用到实践。
4. 学会用UML生成O-O需求和设计文档,演示良好设计特性,如松散耦合性和高内聚性
5. 能够演示如何在O-O语言(如Java或Python)中有效地嵌入O-O设计;
注意点:
两个ddl不难,但比较注重细节,对文档的要求往往比代码还高,所以要好好写文档。平时作业分不是很高。考试概念比较多,需要花很多时间背课件,虽然是选择题,但也很注重细节,总体来说不是很好刷分。
2. COMP 207
Database Development 15学分
Coursework 2*10%
Writing Exam:80%
课程内容:
向学生介绍数据库并发所产生的问题、信息安全的考虑事项及如何解决这些问题。
向学生介绍在整合异质信息源及使用半结构化数据时所产生的问题。
向学生介绍非关系型数据库,以及在选择数据库时所涉及的经济因素。
向学生介绍分析大量数据的技术、其中涉及的安全问题和商业因素。
学习成果:
1. 学习本课程后学生将能够识别和应用数据库管理系统中的事务管理的基础原理,以及事务所涉及的主要安全问题。
2. 加深对高级SQL内容的理解
3. 确定对象关系模型的基本原则,以及采用和开发这些模型的经济因素;
4. 解释数据仓库中的主要概念和安全问题,以及数据挖掘的概念和采用范型所涉及的商业考虑。
注意:
两次10%的ddl是以题目形式发布,比较简单。期末考试难度不低,需要对数据库各个概念都充分了解。
3. COMP 208
Group Software Project 15学分
无考试
课程内容:
学生们将以小组为单位制作一个的软件系统。在过程中可以
1. 获得团队工作经验;
2. 获得开发中型软件系统的各方面经验;
3. 为第三年完成个人项目做准备;
4. 巩固第二学年第一学期的资料,特别是COMP201和COMP207。
注意:
非常自由的一门课,主题几乎没有限制,可以用任何语言写任何形式的软件/网站。课内知识不足以完成这门课,需要大量的自学以及默契的团队配合。虽然是第二学期的课,但建议从开学就开始准备主题,自学语言,物色队友。个人认为软件的主题,实用性,完整性比代码质量更重要,所以前期要对主题,功能有一个完整的构思,同时尽量将一开始requirement上所写的功能都实现,就算实现不了,也要给出恰当的理由,不然建议一开始就不要写上去。同时报告也非常重要,报告的分数占了接近一半的比重,需要按照老师课上要求的格式来写,最好不要缺少老师要求的内容,因为是按照这些内容的质量进行给分的。这门课认真对待可以很大地提升能力,但确实不是一门轻松且好拿分的课。
4. COMP 202
Complexity of Algorithm 15学分
In-class test: 10%
Coursework: 10%
Writing exam: 80%
课程内容:
展示算法的研究如何应用于许多不同的领域。介绍时间复杂度等概念。介绍数据结构和算法设计的基本方法。进一步学习了贪心,分治,动态规划等一系列算法。
学习成果:
在课程结束时,学生应树立算法对一个程序的表现有十分重要的影响的意识。学生应该能够熟练地将基本数据结构(队列、堆栈、树、图等)与经典算法问题(搜索、排序、图算法、安全问题)结合使用,并了解基本的数论应用等。学生应该通过formal theories所提供的证据理解许多计算问题是十分棘手的,例如NP-completeness问题。
注意:
虽然大二在西浦有接触过算法,但这节课更注重各个算法在时间复杂度方面的表现,在整个计算机体系课程中属于top级别,一定要学扎实,老师讲课也很仔细,要对每一个算法思想都从头到尾的理解。想要这门课取得好成绩,需要多练多做,可以刷tutorial上的题,也可以刷leetcode找感觉(找工作早晚要刷,不如提早刷起,每周几道题熟能生巧)。编程作业不难,课堂测试有一定难度,但准备充分70+还是可以拿的,考试难度不大,主要是老师编一些现成算法让你分析他的时间复杂度并且能改善的地方。
Year 2 选修
1. COMP 219
Artificial Intelligence 15学分
Coursework: 2*10%
Writing Exam: 80%
课程内容:
通过研究智能系统中的问题解决、知识表示、规划和学习,介绍人工智能(AI)的主题。提供一个基础的AI编程语言序言。
学习成果:
1. 在本课程的最后,学生应该能够识别或描述intelligent agents的特征和他们的生态环境;
2. 识别、对比并应用为解决人工智能问题而开发的主要搜索技术;
3. 区分了人工智能中使用的主要知识表示范式的特点和优缺点,如生产规则、语义网络、命题逻辑和一阶逻辑;
4. 识别或描述用于解决人工智能规划问题的方法,并将这些方法应用到简单的例子中;
5. 确定或描述人工智能学习的主要方法,并将其应用于简单的例子中;
6. 理解并编写序言代码来解决简单的基于知识的问题。
7. 学习一些基础的算法模型如 神经网络模型,朴素贝叶斯模型,knn算法等
8. 学习使用初步的python
注意:
上学期最火的选修课,选的人非常多。两个10%的Coursework难度适中,需要好好钻研课件,并且熟悉python的一些基础语法。网上资料也比较全,可以作为借鉴。Report需要好好写,会有给低分的可能。总体来说两个作业用心写拿七八十还是可以的。期末考试也全部是选择题,建议将往年试卷认真做一遍,将一些公式亲手推导一下,加深理解。这门课作为AI pathway的必选课,虽然课程设置不深,但对数学有一定要求,需要涉及比较多的计算,数学基础不好的同学可能会比较头疼。
2. COMP 226
Computer-Based Trading in Financial Markets 15学分
Coursework: 2*10%
Writing Exam: 80%
课程内容:
在个别交易的层面上发展对金融市场的了解。提供不同的电脑交易应用和技术的概述。介绍使用历史高频金融数据开发计算机交易策略的关键问题。为交易策略的设计和风险管理提供统计和计算方法的概述。对交易策略的设计、实施、评估和部署有一个实际的理解。
学习成果:
在课程结束时,学生将会:对市场微观结构及其对交易的影响有一个了解。了解以计算机为基础的交易应用程序和技术,从盈利交易策略到执行算法。能够设计交易策略,批判性地评估其历史表现和稳健性。了解利用历史数据制定交易策略时常见的陷阱。了解用于评估执行算法的基准测试。了解在投资组合水平上衡量风险和多样化的方法。
注意:
下学期比较火热且有趣的一门课,想转金融方向的同学可以选择,不转的也可以作为兴趣了解。两个作业都是用R语言实现一个投资策略,难度适中。期末考试全是选择题,不是很难,将课件内容掌握即可。老师讲课很清晰,平时也很负责,性价比很高的一门课。
3. COMP 228
APP Development 15学分
Coursework: 2*20%
Writing Exam: 60%
课程内容:
提供为小型移动设备开发应用程序的指导方针、设计原则和经验,包括对上下文和位置感知服务的评价。通过简单的应用程序和用例的实现,对小型移动设备的交互方式进行评估。了解当前移动接口技术的发展。
学习成果:
1. 在模块结束时,学生将对移动硬件设备的特点和限制有一个实际的理解,包括他们的用户界面的模式。
2. 开发特定于移动设备的应用程序并在移动计算上下文中演示当前实践的能力。
3. 对移动设备上下文感知解决方案的设计和开发的理解和欣赏。
注意:
上学期在中国学生中比较冷门的一门课,但外国学生选的很多,两个ddl是用swift语言写一个简单的app,一般将功能实现,report认真写,给分会很高(90+这种)。期末考试全部都是主观题,虽然都是课件上的内容,但给分比较低,除非答的很完整,不然就算答到大致的点依然会被扣很多分,所以相当考验背诵功力。当然如果能一丝不苟的全背下来,这门课分会很高。不过两个coursework占比很高,一定程度上保证了这门课的下限。
4. COMP 218
DECISION, COMPUTATION AND LANGUAGE 15学分
Exam: Coursework weighting 80:20
课程内容:
该模块旨在为学生介绍自动机,语法和语言的形式概念。
介绍可计算性和可判定性的思想。
为了说明自动机,形式语言理论和通用计算模型在计算机科学和人工智能中的重要性。
学习成果:
熟悉作为自动机识别的对象和由形式语法生成的集合之间的语言之间的关系。能够在非确定性和确定性有限自动机之间应用标准转换。熟悉形式语法的不同类型(例如Chomsky层次结构)和语法正常形式的概念。注意不同自动机和语法形式的局限性(相对于表达能力)。了解递归和递归可枚举语言之间的区别。
注意:
难度一开始挺简单的,期中考试之后会变得比较难。但是期末考试考的基本是给的模拟卷上原题类似的题目,建议TTL好好做题,上课仔细听,总体来说还是很好刷分的一门课。想走AI pathway的同学可以选这门课。
5. COMP 222
PRINCIPLES OF COMPUTER DESIGN AND IMPLEMENTATION 15学分
Coursework:2*10%
Writing exam: 80%
课程内容:
主要内容是学习用JMonkey引擎做游戏,语言是java。刚开始会学一些线性代数的知识,包括向量,矩阵的运算等等。中期是学JMonkey引擎的使用(第一个DDL)。后期是学游戏AI的原理(第二个DDL),有些内容跟COMP219有点重合,比如状态树等等。不推荐这门课,因为JMonkey这个引擎比较老了,现在主要是用Unity和Unreal。
DDL:
第一个DDL是用JMonkey做打砖块的游戏,也可以用Unity做,但是得自己学,老师不会教。
第二个DDL是编写坦克大战的游戏ai,用一个叫robocode的软件,也是用java写的。
注意:
两次DDL给分很高,基本都是满分,但是相应的,最后的考试压分很严重,谨慎选择。
6. COMP 281
Advanced object-oriented languages 7.5学分
Coursework: 2*50%
课程内容:
1. 在系统级别的过程式编程语言(C)中,介绍内存和内存管理的问题,以及一些辅助检查状态、堆栈和堆使用情况的调试工具。
2. 使学生熟悉现代系统级程序设计语言(C)。
3.从算法和内存管理的角度学习当下的软件配置,为学生提供经验和信心
学习成果:
1. 学生应该能够分析和解释在软件应用程序内的内存资源的使用,包括在函数调用和基于堆的动态内存管理期间对堆栈的内存使用
2. 使用调试工具检查内存使用情况,并协助软件开发。
3. 在C编程语言中开发应用程序,包括使用命令行驱动的C开发工具。
4. 通过使用C编程语言实现和管理至少一个熟悉的数据结构来处理使用动态数据结构时的底层基于内存的问题。
注意:
这门课内容比较基础,会介绍一些比如指针之类,比较底层的概念。两个ddl难度不大,但比较注重程序的表现,用性价比更高的方法可以得更高的分。可以作为OO类型以外的另一种编程语言的丰富,但不适合想要系统性学习c语言的同学,因为教的实在是太浅了。报告写全面的话给分不低,算是轻松且比较好刷分的一门课。
7. COMP 282
Advanced object-oriented languages 7.5分
Coursework: 2*50%
课程内容:
学习C++和C#。需要有COMP281(C语言)的先修课程。COMP281是上半学期,COMP282是下半学期。没有期末考试,两次DDL各占50%。学的东西很简单,基本上花一天时间就能把整个课程的ppt都看会了,但是给分不是很高,一般都在80左右,想要得高分的话代码规范必须要特别注意。
DDL:
第一个DDL是关于C++的,实现很简单,照着tutorial的代码依葫芦画瓢就能写了,内容是C++的面向对象编程(类,继承,对象等等),很基础。
第二个DDL是关于C#的,也很简单,做一个Windows的桌面应用,内容是对象在列表里的加减乘除,和之前什么Java的图书管理系统有点像,也很简单。
注意:
这门课就上半个学期,教的内容太基础了,不适合想要系统性学习C++和C#的同学。
8. COMP 285/220
Comp 285 Computer Aided Software Development:
7.5 学分 coursework :50%*2
Comp 220 Software Development Tools:15学分
coursework:10% in-class test:10% final exam:80%
课程内容:向学生介绍现代大型工业软件开发中使用的一系列技术和工具。描述如何通过软件开发工具来支持高质量、健壮的产品的开发和部署。
学习成果:
1. 使用自动化测试、持续集成和测试驱动编程的技术来执行软件开发任务
2. 分别或联合使用Ant、JUnit和Eclipse作为自动化测试、持续集成和测试驱动编程的工具
注意:这两门课的内容一样,区别在于285是由一次上机测试(因为疫情改成限时作业)和一次coursework组成,没有考试。220是一次上机测试(和285一样)和期末考试,占15学分。这两门课的难度适中,285上机前耐心跟着ttl做一遍分数都不会太低。220期末考试比较难,知识点比较多且需要背诵。
9. COMP 284
Scripting Languages 7.5学分
coursework :50%*2
课程内容:
让学生了解脚本语言的性质和角色。
向学生介绍一些流行的脚本语言及其应用程序。
使学生能够使用这些语言为各种应用程序编写简单的脚本。
学习成果:
使用适当的脚本语言开发服务器端基于web的应用程序,并强调这些应用程序的并发使用。
使用适当的脚本语言开发基于计算机的或基于web的客户端应用程序。
有效的信息检索技能(包括使用WWW和评价从这些来源检索到的信息)。
注意:
学PHP和JavaScript,所以需要有HTML,CSS的基础。课程中讲前端的内容不是很多,所以想学前端技术也不是很有必要上这门课。每周的practical都得跟着做基本,assignment都是能写的。按照老师给的要求来评分的,少一项都会扣一项的分。不是很好刷分,选课全看兴趣。
10. COMP 283
APPLIED DATABASE MANAGEMENT 7.5学分
coursework:50%*2
课程内容:
利用关系代数开发高效的数据库查询语言代码。
提供设计关系数据库的实践经验。
掌握使用商业数据库管理系统(如Microsoft SQL Server)管理和维护数据库系统的技能。
介绍跨数据库系统维护数据完整性和持久性所需的技能。
学习成果:
在模块的最后,学生应该能够:设计和结构一个有效的可扩展的数据库系统。
实现并配置数据库系统。
维护安全和持久的数据库。
描述、说明和解释链接数据库和数据迁移技术的概念。
演示典型数据库系统设计任务。
!! 福利 !!
转发该推文至朋友圈集 8个赞
添加下方校友力小助手
上传转发截图 即可进入专业答疑群
学霸笔记
疑难知识点讲解&
考前学术课程分享
专业答疑群内会有本专业的学霸助教为同学们进行学术答疑 (每周Coursework, 疑难知识点答疑, 期末考前试卷解读等). 每周群内免费分享学霸笔记, 帮助大家更好地提升学术成绩.
[扫码添加小助手Lucas]
校友力 | 未经允许,请勿转载