本学期课程介绍
课程概述
本学期中将有三门专业相关课,包括两个学科基础课以及一门公共基础课:
- DI22004 - Computer Systems 2B 计算机系统 2B
- DI22010 - Object-oriented Analysis and Design 面向对象分析与设计
- DI22001 - Algorithms and Artificial Intelligence 算法与人工智能
均采用英文授课。
教师情况 (Year 23-24)
- DI22004 - 王磊(CSU)
- DI22010 - Karen Petrie(Dundee, 本应为Pardis Biglarbeigi, 因不可抗力替换)
- DI22001 - 刘姝(CSU)
注: 本学期中涉及的团队pre并不硬性要求全员上场
1. 计算机系统 2B
学习内容
- 更多的计算机硬件知识
- 管线/缓存/内存等计算机结构
- GUI编程
- 多线程开发
- 深入操作系统
Assignments
Assignment 1 - Super-Scalar Architecture
- 团队项目: 3人
- 提交内容: Report (2300-2500 words) + 团队pre + 个人 Peer Review
- 需 Pre
- 内容: 对超标量(super-scalar)CPU架构进行调研, 分别从软件, 硬件及其他因素三个方面进行讨论, 并在3周后给予调研总结性质的pre。
- 需要的知识:
- 掌握超标量架构相关三方面的发展历史, 包括多核与多处理器的发展, 摩尔定律的突破等。
- 一定的文献搜索能力与阅读能力。
- 学术报告撰写规范,reference与citation的正确使用等。
Assignment 2 - Multi-thread programming
- 团队项目: 3人
- 提交内容: 项目 + Report (700-800 words) + 个人 Peer Review
- 无需 Pre
- 内容: 自选开发引擎(如Unity3D),或直接借助相关语言自带的GUI工具(如Qt),模拟ATM取款机的同时取款过程。项目要求ATM的展示多线程的两种工作状态:冲突状态,在不同用户对同一账号同时操作后,余额出现计算错误。非冲突状态,在不同用户对同一账号同时操作后,余额得到有序的计算并正常结算。
- 需要的知识:
- 至少了解一种GUI的使用方法,如Unity(C#),Qt(C、C++,python)
- 了解多线程冲突和有序运行的原理(锁或信号量)
- 了解ATM的外形及操作方法,尽可能做到视觉还原
- 做好项目的时间规划。
考试
- 时间: 2小时,纸笔,闭卷
- 形式: 4道大题,每道大题由多个小题组成(含选择、填空、简答、写代码、计算)等,每道大题覆盖一个方向(如一个大题考缓存计算)
学习建议
- PPT课件上覆盖的知识点很全,王磊保证所有的考试内容都在PPT里。
- 计算题分值很大,一定要看懂,没有难理解的计算题,看PPT就足够了。
- PPT中的一些重要图片及上面文字要尽量记一下,期末考试会考一样的内容。
- 仍然会考概念题,包括某某的定义,甚至考到了GUI原理等。
2. 面向对象分析与设计
学习内容
- Use Case 图及用例设计
- Requirement 分析
- 类图制作
- STRIDE威胁分析
- 序列图分析制作
- 六种设计模式
Assignments
Assignment 1 – 分析模型
- 团队项目: 3人
- 无需 Pre
- 提交内容: Report(图片需要特殊软件制作 + 有格式要求)
- 内容: 通过一款软件说明(本学期为游戏Cluedo的变形),从若干角度分析它的使用方法,类的设计,潜在威胁等。
- 需要的知识:
- Visual Paradigm软件的使用,或是其它的UML图绘制软件
- 了解Use Case设计与类图绘制方法(作业重点)
- 多查阅资料,课上内容可能不够
Assignment 2 – 设计模型
- 个人项目: 无需 Pre
- 提交内容: Report(图片需要特殊软件制作 + 有格式要求)
- 内容: 进一步分析Assignment1中涉及的软件,在给定的几个交互场景下绘制序列图,重绘类图,需要涉及一些设计模式,并简述与Assignment1的提升之处。
- 需要的知识:
- Visual Paradigm软件的使用,或是其它的UML图绘制软件
- 了解序列图与类图绘制方法(作业重点),尤其在于序列图,要想好交互逻辑,有严谨的输入与输出。
- 设计模式的深度理解与使用。
考试
- 时间: 2小时,纸笔,闭卷
- 形式: 3道大题,两道画图,一道简答
学习建议
- 这门课比较像文科,需要大量的阅读、理解和学习。尽量多背,尤其是ppt上列出的重点。
- 类图是整个课程的核心,要认真学习。
- 考试内容迷惑,建议全面复习,不要过于依赖模拟卷。
- 尽量避免赶时间,设计过程和画图过程较为耗时。
3. 算法与人工智能
学习内容
- 空间复杂度与时间复杂度的计算
- 排序算法分析(冒泡,选择,插入,归并,快速)
- 搜索算法入门(包括BFS,A*,DFS等启发式和非启发式算法)
- AI入门(深度学习、机器学习等,纯理论)
Assignments
- AI Project
- 团队项目: 5人
- 需 Pre
- 提交内容: 前期Proposal+ 项目源代码 + PPT及pre + Report(有格式要求)
- 内容: 自主寻找AI的一个应用领域,写750字左右的Proposal并提前上交,并按提议筹备实施,约一月后上交后续报告,项目成品并进行pre。
- 需要的知识:
- 多种课内算法的原理,包括BreathFS,BestFS,Dijkstra,A*,有一些是必须涉及的。
- 一种GUI的呈现方式,不限语言,引擎。
- 发现需求的能力(想法提议决定了后续走向)。
- 可适当涉及真AI领域内容,但只是锦上添花。
考试
- 形式: 线上,闭卷,1个小时40分钟
- 内容: 选择、简答
学习建议
- 前面的知识较为基础,建议理解算法,不要死记硬背。
- 空间复杂度和时间复杂度的计算需要掌握,考试和平时测试都会涉及。
- 启发式算法要分清对启发式函数的依赖情况,可以尝试重写算法。
- 真AI部分建议直接背,包括四种模式的案例。
总结
感谢您看到这里。
写代码向来并不是最重要的,到了大二末期,独立面对问题,知道怎么去解决它才是最重要的。
如果这篇给大家带来哪怕一丝丝帮助,那我也不胜荣幸。(受jason鸽鸽的影响, 我要当manager😤😤)
今当远离,临表涕零,不知所云。
created by Levine