西浦Y3课程

Edit by LeslieXu

我校ics的课程涵盖还是比较标准的,基本的计算机核心课都有了,申请研究生肯定是足够的。但是如果是希望自己能够从事一些开发工作或者是科研访学,这些课程是远远不够的,可以说如果仅仅学课内课程的话什么活也干不了(非常抽象),更别说有些课的质量实在是一言难尽。这篇会分享ics基本的核心课信息+一点网课推荐。作者是20级的,所以是根据20级的课设和lecturer写的,后续有可能会做出调整,但大体不会改变。

Y3-S1

CAN201 Introduction to Networking

Delivered by: Dr. Fei Chen and Dr. Enjun Fan

Programming Language: Python

Workload:★★★☆☆ (3/5) 课程收获: ★★★★☆ (4/5)

这门课在20级之前应该都是Fei Chen一个人带的,19级的cw据说很难,给了一个diy的protocol然后手搓C/S,我校为数不多的还可以的coding exercise,评分标准是按传输文件的速度,完全符合正态分布,被卷成麻花,report基本不看,后来据说惨遭投诉课程难度下降(cw难度被腰斩了)。分数结构上cw的占比很高(40%),和期末(45%)差不多。有百分之15是lab课白送的,基本只要上了lab就能拿满。学期初还说要考勤,搞得人心惶惶的,结果每节课都有录播,不用去lab,看完录播课提交每周的assignment就可以拿满15分。在期中之前的lecture是Fei Chen讲的,后半学期则是Wenjun Fan。

课程结构直接是照抄的Computer Networking: A Top-Down Approach。非常经典的计算机网络课程,进度非常快,讲课进度和umass官方提供的视频课程差不多,个人感觉跟着这个进度是吃不透这门课的。如果想找替代课程的同学,推荐观看中科大计算机网络。课程时长比较恐怖,2小时只讲我校一半lecture的东西,不做多赘述,自行观看。 有关cw:20届的cw变成了groupwork,并且分为了两个part,每个part判分分为code和report两个部分。Pt.1是阉割版本的19cw,给定了protocol和server文件,只要求完成对应的client文件,难度急剧下降。Pt.2是实现根据OpenFlow protocol的SDN重定向流量,还是比较有意思的,虽然实现功能只要在OPF1.3的基础上多加几行代码,但是要看懂SDN控制器的工作流程需要花一点时间,作者猛看OFP文档才找到了对应的API,最抽象的是下一节lab直接把答案需要使用的API讲出来了。由于难度被阉割,所以每一组的判分不会很悬殊,甚至变成了report大赛。

CPT 203 Software Engineering

Delivered by: Soon Phei Tin

Programming Language: Java

Workload:★☆☆☆☆ (1/5) 课程收获: ★☆☆☆☆ (1/5)

这门课可能会让很多同学失望的一门课,非常非常非常traditional的SE课程,PPT都快包浆了,课程也很无聊,作者只上了第一节lecture就再也没有去过了。同许多老旧软件工程课一样强调各种类图、文档设计、测试,大部分都是概念类的知识,猛猛背书就完事了。

Lecture讲课昏昏欲睡,感觉水平也不是很好,没有学到practical的东西。唯二涉及到一定代码的可能是高内聚低耦合部分会讲一点java代码的类设计还有是junit test。(很少)要拿分重中之中是时序图,类图,活动图,类图等图的设计和绘画,建议自己多使用visual paradigm等软件或者手画一下,期末时候占比很重。 两个Assessment也是纯文字的选择,很水很水,而且答案玄学。 希望这门课能早点改掉吧,能学到东西的部分真的很少。

CPT 205 Computer Graphics

Delivered by: Yong Yue

Programming Language: C++

Workload:★★★☆☆ (3/5) (如果很卷的话 cwworkload可以做的很大) 课程收获: ★★★☆☆ (3/5)

这一门课和DB是俩门选修课,二选一,如果想走游戏引擎或者游戏客户端开发的同学可以选这门课。(然而并没有什么很大用处) 岳老板常年沉淀过的课,对于图形学的intro课来说,理论内容应该算是面面俱到:从一开始的基础线性代数,变换矩阵,渲染管线,建模(这一部分感觉有的知识比较多余),光照和材质,纹理映射等。理论内容还是很多的。PPT依旧包浆,像Ray tracing之类的知识没有涉及到。岳老板可能年纪大了,lecture都感觉一直在念ppt,昏昏欲睡。Lab给的sample code还是挺有用的,值得看看,对完成两个coursework很有帮助。Lec内容和Lab内容可能有点割裂,lec纯理论,结尾时候会讲解几个OpenGL的API,lab的话就是给了基于OpenGL的samplecode,去看一些理论的简单运用。

Coursework:两个,一个是2D,一个是3D。两个都是基于OpenGL的,两个都是基于Freeglut库的,应该只能使用STL和freeglut俩Cpp的库,不给使用多余的库。第一个cw公布的时间在前半学期,能用到的知识比较少,基本只有画一些基本图形和几何变化,可以做的很卷,美工大赛。第二个3d作业也是用openGL搭建场景,可以运用到光照,纹理映射的知识了。有认识的同学做的很卷很卷。很像美术创意大赛,做的好看应该分数就不错。个人觉得有点不太合理 如果想要自己深入学习图形学的同学,可以先看看闫神的GAMES101GAMES系列的课质量真不错哇,喜欢图形学游戏引擎的同学可以多看看,做做cw,网上有很多做完的作业,如果手搓完GAMES101的作业应该会对图形学有更深的理解,作者是懒狗,很后悔没写),然后再来看这门课。如果只是想要学习一下OpenGL的同学,可以直接看看LearnOpenGL

INT 201 Decision Computation and Language

Delivered by: Yushi Li

Programming Language: 无

Workload:★★☆☆☆ (2/5) 课程收获: ★★☆☆☆ (2/5)

讲得不咋滴,印象很深的是有一个TTL给的答案画生成树要先把CFL换成Chomsky范式,但是也没有人讲这个,还是和同学在讨论中发现的。也没有公布两个cw的评分细则,包括期末的回答题目的格式。哈工大的形式语言与自动机可以完美替代这门课的内容,只要看下每周TTL的答题格式就好了。不过个人认为如果因为格式扣分是真**,别的方法就能算我错?油管上有一门MIT的类似课程讲得也很好,可以自行搜寻。

Y3-S2

下学期内容是后面由其他几位同学补充的,所以受主观因素影响,可能和之前的内容的评价标准不完全一致;行文上也会有差别。

INT202 Complexity of Algorithms

Delivered by: Rui Yang and Chunchuan Lyu

Programming Language: 无

Workload:★★☆☆☆ (2/5) 课程收获: ★★☆☆☆ (2/5)

INT202是一门算法课,感觉是大二那门算法课INT102的进阶版,主要涉及到了一些重要的算法,数据结构和它们的时间复杂度分析。这门课一共有两个quiz和一个Final Exam,两个quiz很考验反应能力,这两年都是7道题,一共有10个空,15min的时间完成考试。每个题目计算量不是很大,只要掌握算法的关键步骤就行,全部都是填空题。期末考试可以带一张help sheet去,可以打印也可以手写,看个人喜好吧。博主当时是将每课的重要算法(核心思想,步骤,时间复杂度等)整理出来,一面4页,拼接在一起打印过去的。

这门课一共有两个老师,上半学期是杨瑞老师,个人觉着杨瑞老师讲的很好,算法讲的很清楚,他的课我是全部有去听的。下半学期是吕纯川老师,我觉得他连自己在讲啥都不知道,PPT一些地方都是扣过来的,错了都没改,不如自学。

然后这门课平常的时候把tutorial上的题目做了,然后跟着老师的板书规范一下过程就好,考试上很多题型都是tutorial上的。不会的,可以在Office hour去问老师,我觉得大多数的老师都很乐意解决你的疑惑,而且在Office hour的时候是用中文回答,理解起来要好很多。在期末考试之前,集中精力复习老师考纲上的内容和重点。

CPT208 Human-Centric Computing

Delivered by: Yue Li and Teng Ma

Prototype Software: 有很多可以用的软件,我们用的是Figma

Workload:★★★★★ (5/5)(因为是小组作业所以wl拉满!)课程收获: ★★☆☆☆ (2/5)

这门课的每个PPT都很长加上图片很多文字较为分散,可能会让同学们不知道哪里是重点。22-23是Yue Li和Teng Ma两个老师穿插的来讲的,当时因为说建议每节课大家以小组作业为单位来签到,所以博主尽量每节课都去了,但是感觉能从课上学到的东西很少,只能说Yue Li老师讲的会好一些,上课超级有活力,很有人格魅力,个人很喜欢她。

Coursework:博主本人深受两个15%的小组作业的迫害,大概就是别人在和伴侣出去玩,我在写小组作业,并且每次都能被他们交上来的垃圾气的不清,怎么能有人到了大三写作业还不知道看tasksheet。扯远了,听说23-24届cw有所改革,不知道是不是因为我在MQ里口诛笔伐。扯远了,建议大家一定要提前找好队友,有的时候成绩只是表面,一个人的品行才是决定了这个作业质量的好坏。实在不行的话,建议大家放下“如果这个作业全是我做的,我心里很不平衡”的想法,毕竟分数是自己的,在大三这个最重要的刷分阶段,分数是一切。并且你最终会发现,和傻逼一起合作写作业不如一个人全部肝完来的高效。作业形式应该还是以一个原型设计以及竞品评估两个cw。其实个人感觉原型的想法是否新颖并不一定在打分的考量范围内,关键在于是否应用到课程中学习到的知识,并且能够有较为现实的考量。举个例子来说,一开始我们组打算做一款用户群体为视障人士的产品,这一产品的困难点就在于我们无法找到目标用户去做调研,失去了用户调研的产品就没有考虑到现实性,也违背了HCI设计过程中的问卷设计...方面(记得不太清楚了)。竞品分析也是同理,并不一定要找非常成熟的产品,一个产品如果很成熟的话,就说明能够被找寻的问题是少的。做竞品分析本质上是考察大家对于Nielsen's 10 usability heuristics的理解和应用,我们做竞品分析是希望能够在自己的产品中规避他人的缺点,加入他人的优势。

期末考试:208的期末考试占了70%,允许带一张cheat sheet,没记错的话是允许打印的,建议拿学校电脑来上传打印材料,可以把8页纸打印在一页纸上面。而且老师考试前会上传一个Revison的outline,并不是每一课的都是考试范围,应该只有9个Lec会被考到,其实就是Design,Prototype,Evaluation各三个部分。大家准备cheat sheet的时候,基本上就是把概念性的东西抄上去,比如说 Interaction Design的definition和goal,evaluating有几种方法等。建议大家在考试的时候,不要光抄概念,谁都会抄概念,最好和自己cw时做的东西相结合,把每个概念的主体讲完之后都举例讲解。HCI人机交互本质上就是以人为本,注重用户的体验,用户的反馈,所有的概念方法都是在不断的探索中实践出来的,空有理论没有结合实际就没有HCI的意义。所以老师希望看到其实是一张将理论与实践紧密结合的答卷。以及如果遇到完全不知道答什么的题目,可以先留到最后再写,但一定要写!!哪怕只是抄相近的概念也可以的,总是能给个1,2分的辛苦分的!(最后加一句:我真挚地希望大家不要被任何课下的小组作业影响到自己的分数,或多或少我们总会遇到很垃圾的组员,但希望大家明白自己的目标是什么,坚定自己的目标,其他的都不用去理会,在有的时候不要感情用事,理智的去解决它)

CPT204 Advanced OO Programming

Delivered by: Erick Purwanto

Programming Language: Java

Workload:★★★☆☆ (3/5) 课程收获: ★★★★☆ (4/5)

这门课是基于 MIT 的 6.031: Software Construction, Fall 2020 这个课程设计的。课程设计和安排还不错,确实能学到不少东西。而且 MIT 也提供了完整的课件内容和例题,所以学起来也比较容易。不过对于编程基础比较弱的同学可能课程内容不是特别友好,需要多花些时间去理解。因为课程涉及大量 Java 语法内容,用 Java 语言讲面对对象编程的各种概念,自然也需要用到 CPT111 Java Programming 的基本知识。我个人是基本上自己看课件和 MIT 对应的资料学的,最后成绩还是不错的。

Assessments

这门课我们这一届虽然均分 56 不是很高,但其实主要是因为方差比较大。低分和高分都有点极端,30%+ 的人不到五十分,同时还有 9 个人九十多分甚至满分。总的来说,这门课高分不算特别困难,属于是很适合大三刷分的一门课。但代码部分如果平常没有好好练的话,限时考试的时候会很拖节奏,最后导致写不完试题。具体来说,这门课的评分组成是:

  • 10% Lab Exercises

  • 10% Coding Assignments

  • 40% Final Project

  • 40% Final Exam

虽然其中20%的平时的代码题 Lab Exercises 和 Coding Assignments 基本上就是送分,但也一定要自己写一下,别直接抄。因为后面 Final Project 和 Final Exam 里面都有限时代码题,和平常的代码作业强相关,对日常作业理解透能节省很多时间。如果觉得平常作业比较困难,可以额外有针对性地刷刷力扣简单题。

Final Project 我们是分了两部分,一部分是完成几个函数实现一个游戏再加一个限时编程。限时编程基本上就是检查你有没有好好写平常的作业,难度不大。另一部分是写一个游戏的 AI 玩家和 GUI,还要录个视频 Pre 一下。这个基本上就是 UC Berkeley CS61b 的某个大作业的修改版,框架源码基本上没改,所以网络上有很多可以参考的资料。不过具体的算法实现需要查文献资料,但不需要你卷算法部分,找一个主流的算法就行。评分更在于结合文献讲清楚使用算法的原因,以及其他课上概念内容的实践。此外还有一个额外加分的 GUI,我们是把这个也写了,不过这个在 200 分的作业里就加 10 分,还挺废时间的,看个人取舍吧。

Final Exam 开卷考试,内容是概念题 + 编程。可以提前去机房传资料到电脑上,可以自带键鼠(不过好像就我自带了 hhh)。概念题和课件以及 MIT 网站上例题的内容差不多,而且还可以用软件的搜索功能,所以熟悉的话基本上就是白给的。需要注意的是答题策略,要留够时间给编程题,因为题目顺序是随机的,别在一个地方卡太久,不然后面容易写不完。

Last updated