发布于 ,更新于 

评课:CS2115 CS2312 CS3201 CS3334 MA2185 GE1205 (Semester A 2023/2024)

受人之托,评一下 CS 大二上的必修课。顺便写一下 Area 2 GE 课,GE1205 Green Economics。

我在 2023/2024 Semester A 修了这些课,请注意课程内容可能会有所变化。

JC2066 不同,这些课都不是新开设的,也没有什么值得我长篇大论的地方,所以就简单罗列一下吧。

CS2115 Computer Organization

Content
  1. Number Systems
    • Binary, Octal, Hexadecimal
    • Signed Numbers, 2’s Complement
    • IEEE 754 Floating Point
  2. Circuits
    • Logic Gates, Boolean Algebra, Karnaugh Maps
    • Combinational Circuits: Adders, Multiplexers
    • Sequential Circuits
  3. MIPS Assembly
    • ISA, Register File, Memory Organization
    • MIPS Instructions
  4. CPU
    • Control Logic, Execution Cycle
    • Pipelining: Hazards, Forwarding, Branch Prediction
  5. Memory
    • Cache: Direct Mapped, Fully Associative, Set Associative
    • SRAM vs DRAM, SSD: NAND Flash
  6. I/O
    • Programmed I/O, Interrupts-Driven I/O, DMA
  7. Parallelism
    • Multicore CPU
    • SIMD, GPU, CUDA Programming
    • Interconnection: Bus vs Ring, UMA vs NUMA, Cache Coherence, Message Passing
  8. Performance
    • Cache
    • Parallelism: Amdahl’s Law
Assessment

Assessment Breakdown:

  • Continuous Assessment: 30%
    • 4 Assignments: 20% (2% + 5% + 5% + 8%)
    • Midterm: 10% (Week 7, Written, 2 hours)
  • Final Exam: 70% (Written, 2 hours)

Coverage:

  • Assignment 1: Number Systems
  • Assignment 2: Circuits
  • Assignment 3: MIPS Assembly
  • Assignment 4: CPU (Groupwork, 2-3 people)
  • Midterm: Number Systems ~ MIPS Assembly
Review
  • Course Content: 3 / 5
    • 比较全面地介绍了计算机的各个方面,但是没有深入
    • 对比隔壁 CUHK CSCI2510:CUHK 的课没有覆盖 I/O 和 Parallelism,但是对 pipeline 和 cache 的讲解更加深入,可以将其课件作为复习资料;另外,CUHK 对 cache performance 的分析也值得一看,虽然考试不会考
  • Difficulty: 2 / 5
    • 整体而言内容比较基础
    • Assignment 1, 2, 3 都不难,但是有些问题(比如在 MIPS Assembly 中实现递归)需要搜索资料,教你如何计算 Fibonacci
    • Midterm 不难且题量少,平均分 75 / 100
    • Final 不难但题量很大,往届试卷参考意义不大(往届试卷里甚至有状态机和神经网络),请注意把握时间;Final 的重点是 MIPS Assembly(两个程序,15%)和 CPU(Control Logic / Machine Code / Pipelining,20%)
  • Workload: 4 / 5
    • Assignment 4 要求使用 Logisim 实现一个 16-bit CPU,需要花费大量时间,请至少保证 2 个整天;虽然是小组作业,但由于 Logisim 只能在一台电脑上同时编辑,所以最好考虑一下怎么分工
    • Final 考察范围很广,甚至包括 CUDA Programming
  • Class & Resources: 3 / 5
    • Lecture:2 / 5
    • Tutorial:2 / 5
    • Lecture Slides:2 / 5
      • 课件不够详细,上课请做好笔记
    • Exercises:4 / 5
      • 额外的 Exercises 值得一做

CS2312 Problem Solving & Programming

Content
  1. Java Basics
  2. Object-Oriented Programming
    • Encapsulation
    • Principles: LSP, DIP, OCP
    • Design Patterns: Singleton, State, Command
  3. Objects and Classes
    • Inheritance, Polymorphism, Dynamic Binding
    • Interfaces, Abstract Classes
    • Exception Handling
    • Generics
    • Collections
  4. Functional Programming
Assessment

Assessment Breakdown:

  • Continuous Assessment: 50%
    • Lab Attendance and Assessment: 10%
    • Quiz: 5% (Week 5, Written, 50 minutes)
    • Midterm: 20% (Week 12, Written, 2 hours)
    • Programming Assignment: 15% (Week 13)
  • Final Exam: 50% (Written, 2 hours)

Coverage:

  • Quiz: Java Basics, OOP, Objects and Classes, Inheritance
  • Midterm: All but (Inner Classes, Generics, Collections, Functional Programming)
  • Final: All but (Command Pattern, Inner Classes, Generics, Exceptions, Functional Programming)
Review
  • Course Content: 3 / 5
    • OOP 确实是很重要的一门课,Assignment 就很好地体现了这一点
  • Difficulty: 2 / 5
    • 这门基本没有什么 technical content,只要你的 programming 基础不错,很难遇到什么困难
    • Lecturer 设立了一个 课程信息页,可以看到 OJ 上各题的通过人数,从此可以判断,差不多只有 1/3 的同学能够通过 Assignment
  • Work Load:3 / 5
    • 请务必出席 Lab,回答老师提问,按时完成课堂和课后练习
    • Assignment 是一个完整的 OOP Project,在 Lab 练习的基础上增加功能;最花时间的部分在于调试
    • Quiz, Midterm 和 Final 都是以 Programming 为主,穿插一些关于 OOP 理论的问题
  • Class & Resources: 4 / 5
    • Lecture:3 / 5
      • 课上除了讲 Lecture Notes,还有配套的 Exercises
      • 这一方面让你上课绝对不会闲着,另一方面也让课堂体验比较割裂
    • Lab:3 / 5
      • 尽管如前所述,Lab 的工作量比较大,但确实设计得很好
    • Lecture Notes:3 / 5
    • Exercises:4 / 5

CS3201 Computer Networks

Content
  1. Introduction
    • Loss, Delay, Throughput
    • 5-layer Internet Model
  2. Application Layer
    • HTTP
    • Email: SMTP, IMAP
    • DNS
    • Client-Server vs P2P
    • Video Streaming and CDN
  3. Transport Layer
    • Multiplexing and Demultiplexing
    • UDP
    • TCP: Congestion Control, Flow Control
  4. Network Layer
    • Data Plane:
      • Router: Forwarding, Packet Scheduling
      • IP: IP Address, DHCP, NAT
    • Control Plane:
      • Routing Algorithms: Link-State, Distance-Vector
      • Intra-AS Routing: RIP, OSPF
      • Inter-AS Routing: BGP
  5. Link Layer
    • Multiple Access Protocols: ALOHA, CSMA, CSMA/CD, CSMA/CA
    • Error Detection and Correction: Parity Check, CRC
    • Link-Layer Addressing: ARP
    • Ethernet
    • Switch
  6. Wireless Networks
    • Cellular Network: CDMA
    • WiFi: 802.11, CSMA/CA, RTS/CTS
    • 1G and 2G, IP Mobility
Assessment

Assessment Breakdown:

  • Continuous Assessment: 30%
    • 2 Homeworks: 12% (6% + 6%)
    • Programming Assignment: 6% (Groupwork, 1-2 people)
    • Midterm: 12% (Week 7, Open Book, 70 minutes)
  • Final Exam: 70% (Open Book, 2 hours)

Coverage:

  • Homework 1: Introduction ~ Transport Layer
  • Homework 2: Network Layer ~ Wireless Networks
Review
  • Course Content: 3 / 5
    • 全世界的本科 Computer Networks 课程都是这样设计的
  • Difficulty: 3 / 5
    • 难度不低,Terminology 很多
    • 由于是开卷考试,考试题目会比较刁钻;复习的主要目的是熟悉各种细节,而不是记住答案
  • Workload: 2 / 5
    • 没有什么特别花时间的地方
    • Programming Assignment 要求用 Socket Programming 实现一个简单的 HTTP Client,编程知识课上完全没讲,请自行查找资料
  • Class & Resources: 3 / 5
    • Lecture:3 / 5
    • Tutorial:4 / 5
      • Tutorial 比较有用且有趣,覆盖了所有涉及计算和分析的内容
    • Lecture Slides:3 / 5
      • 课件非常全面,因为它完全照抄课本内容
      • 因此在准备 Cheat Sheet 时要有选择性地记下重点,页数太多了反而不好

CS3334 Data Structures

Content
  1. Abstract Data Types
  2. Linked List
  3. Stack
  4. Complexity Analysis
  5. Queue and Hash
  6. Tree: Binary Tree, Heap
  7. Balanced Search Tree: AVL Tree, Splay Tree
  8. Disjoint Set
  9. Suffix Sorting: Suffix Array, Suffix Tree
  10. Graphs: BFS, DFS, MST (Prim), Shortest Path (Dijkstra)
  11. Sorting: Heap, Merge, Quick, Bucket, Radix
Assessment

Assessment Breakdown:

  • Continuous Assessment: 40%
    • Assignment Questions: 20%
    • Project: 5%
    • Midterm: 15%
      • Programming: 7.5% (Week 7, Computer, 2 hours)
      • Written: 7.5% (Week 9, 2 hours)
  • Final Exam: 60% (Written, 2 hours)

Coverage:

  • Programming Midterm: Abstract Data Types ~ Binary Tree
  • Written Midterm: Abstract Data Types ~ Heap
Review
  • Course Content: 3 / 5
    • 由于 Week 7、9 都有 Midterm,Week 8 又放假,导致后面的进度很快,有些内容讲得比较仓促
  • Difficulty: 4 / 5
    • 臭名昭著
    • 课件很基础,但 Assignment Questions 很难,因为 ACM 题不只是 Data Structures & Algorithms,还需要解题思维
    • 这方面我也帮不了你,虽然说这门课里的题目到头来都不会太难,但是你要是不会做,就真的不会做
  • Workload: 2 / 5
    • Assignment Questions 共 16 题,在 OJ 上完成,只要出席 Lab 就能得满分
    • Project 要求用多种 DSA 完成同一道题目,然后进行复杂度分析、构造 Test Case 证明正确性,相当有意思
    • Midterm 有两部分,Programming Midterm 为 2 小时内解 4 题,做出 3 题就能得满分,可参考我的题解
    • Written Midterm 以理解算法实现为主(比如,输出中间结果),加以少量代码填空题
    • Final Exam 的题量较大,兼具简答、编程和证明题,可参考往届试卷
  • Class & Resources: 3 / 5
    • Lecture:4 / 5
      • 课上互动可以赚 Bonus Point(3%),最简单的办法是回答每节课开始的复习题
    • Lab:2 / 5
    • Lecture Slides:2 / 5
      • 课件错漏百出,尤其是 Balanced Search Tree 一节,建议参考网上资料自己整理

MA2185 Discrete Mathematics

Content
  1. Logic
    • Proposition, Logical Operators, Truth Table
    • Boolean Algebra
    • Predicate, Quantifier
    • Logical Inference
    • Mathematical Induction
  2. Set Theory
    • Set Algebra
    • Cartesian Product
    • Relations: Equivalence Relation
    • Functions: Injective (One-to-One), Surjective (Onto), Bijective
  3. Combinatorics
    • Counting
    • Probability
  4. Graph Theory
    • Terminology
    • Shortest Path (Dijkstra)
    • Spanning Tree (Prim, Kruskal)
  5. Number Theory
    • Modular Arithmetic
    • GCD and Modular Inverse
Assessment

Assessment Breakdown:

  • Continuous Assessment: 30%
    • 3 Assignments: 6% (2% + 2% + 2%)
    • Midterm: 24% (Week 9, Written, 100 minutes)
  • Final Exam: 70% (Written, 2 hours)

Coverage:

  • Assignment 1: Logic
  • Assignment 2: Set Theory, Counting
  • Assignment 3: Probability, Graph Theory, Number Theory
  • Midterm: Logic ~ Counting
Review
  • Course Content: 2 / 5
    • 和 Calculus and Linear Algebra 一比,这门课就不太重要了
    • Combinatorics 被 CS2402 (Introduction to Computational Probability Modeling) 完全覆盖,Graph Theory 也不用再学了
    • 整体而言课程的设计其实还好,但全世界的本科 Discrete Mathematics 课程都是这样设计的
  • Difficulty: 2 / 5
    • 课程内容很基础,也不能掉以轻心
  • Workload:2 / 5
  • Class & Resources: 3 / 5
    • Lecture:3 / 5
    • Tutorial:4 / 5
    • Lecture Notes:3 / 5

GE1205 Green Economics

Content
  1. Environmental Economics
  2. Demand and Supply
  3. Producer Theory, Cost Theory
  4. Perfect Competition
  5. Market Failure
    • Externalities
      • Externality, Pigovian Tax, Subsidy
      • Effective Emission Standard
    • Public Goods
      • Public Good, Free Rider Problem
      • Game Theory, Nash Equilibrium, Prisoner’s Dilemma
  6. Solutions to Market Failure
    • Coase Theorem
    • Pollution Permit Trading System
Assessment

Assessment Breakdown:

  • Continuous Assessment: 100%
    • In-class Assignment: 15%
    • Reflective Essay: 5%
    • Course Project: 30% (Groupwork, 6-8 people, Presentation + Report)
    • Quiz: 50% (Week 9, Open Book, 90 minutes)
  • No Final Exam

Coverage:

  • Quiz: All
Review
  • Course Content: 3 / 5
    • 说白了,就是 Microeconomics 的一个简化版
    • 课程内容比较基础,但会涉及很多与环境相关的 case study
  • Difficulty: 3 / 5
    • 图像和计算还是有一定难度的
    • 由于是开卷考试,考试题目会比较刁钻;考试只允许带一页 Cheat Sheet,但说实话用处不大
  • Workload: 2 / 5
    • 这个 Workload 在 GE 里也算是非常低的了
    • Group Project 也不需要花太多时间
    • Quiz 结束后会抽签决定 Presentation 的顺序,能抽到 Week 10 ~ 13,最坏的情况下当周(Week 9)就要准备;Presentation 限时 20 分钟,务必控制好时间;好在 Pre 的效果比我们预期的要好
    • Report 正文限制 12 页(图表放在附录),我们大约写了 3,700 字
    • Presentation 和 Report 最重要的部分是 Economic Analysis 的图表,虽说用 PowerPoint 画图很麻烦,但是效果还是很好的
    • 总的来说,小组人数越多,一方面统筹起来越麻烦,另一方面只要没有 free rider,工作量就会越少。我对这个 Group project 还是很满意的
  • Class & Resources: 3 / 5
    • Seminar:3 / 5
    • Lecture Slides:3 / 5