作者RhinoXiNiu (犀牛望月)
看板NTHU_Course
标题[心得] 计算机程式设计二 杨舜仁
时间Tue Jul 7 23:41:32 2020
课名:计算机程式设计二 Introduction to Programming (II)
科号:10820 CS 135602
老师:杨舜仁
课本:Algorithm、Compiler、Assembly Code、AI Introduction部分是老师自制ppt,中
间的C++(OOP)是厂商提供ppt。不须购买,教授会提供
课别:资工系系定基础必修
学分:3
凉度:★
甜度:★★★★
建议先修课程:
计算机程式设计一 Introduction to Programming (I)。
请先看我所写的同位教授的程设一:
https://webptt.com/cn.aspx?n=bbs/NTHU_Course/M.1593703201.A.972.html
基本上大同小异。
课程内容\简介:
上课方式:
这学期因为COVID-19的影响,所以在台湾还没控制得宜前,助教限制周二只有学号双号
才能进教室,周五单号。教授采用youtube同步直播的放式授课,授课後课程影片会留在
youtube上,要复习满方便的。但初期因为不熟悉的关系,加上有时外面有除草机运作,
收音听起来满痛苦的,采用youtube直播的後期,收音就改善很多。因为教授本身不喜欢
远距授课,认为集体到教室比较好,尽管到教室也不一定听课,但至少不会完全宅在宿舍
心情受影响,而且同学间能有交流,教授也能和同学互动,确保学习的成效,所以等到台
湾疫情平稳後,学校一公布可以开放集体上课,教授就停止youtube直播了。
程设二的授课大纲比较杂,基本上是把资工所需要知道的必备基础知识都简单带过,以
弥补程设一所跳过的不足。教的东西有:Algorithm(主要是用Josephus Problem来介绍
BigO时间复杂度的概念)、Compiler(引入资工中的常用技巧: Tree) and Assembly Code(
因为清大没有教计算机概论,所以把其中比较偏向硬体的部分在这里补足)、C++(导入OOP
物件导向的概念,补足C语言的缺陷)、AI Search(除了教AI的雏型设计方法外,也简单介
绍了哪些东西是可以透过AI完成的(ex围棋、黑白棋、OOXX游戏…etc),同时也引入一些
C++常用的STL)。
教授教课的模式除了受疫情影响的变更之外,其余都相同。
考试作业型态:
这学期的分数切得很细,而且很多分数集中在学期末,所以loading很重。
学期总分100% = Online Judge Lab(本学期共考五次) 8% +
期末笔试10% +
Online Judge Mid1 15% +
Online Judge Mid2 15% +
Online Judge Final 25% +
Mini Project1 9% + (Mini1 Bonus 0.9%) +
Mini Project2 9% + (Mini2 Bonus 2%) +
Mini Project3 9% + (Mini2 Bonus 3%)
和程设一相同,每次Lab前和期考前助教都会公布OJ作业,不必缴交到iLMS,但Lab考的
两到三题中,一定会有一题和作业一模一样(甚至调简单)的,其他题目也是作业的变形,
所以有写至少有一半分数。期考的部分,每一题老师都会在考前讲解助教制作的ppt,所
以不怕期中考考0分,因为也会有基本分,但仍很有可能考很差,因为期考的变形助教真
的玩很大。
Mid1的范围主要把Tree练熟,Mid2和Final主要是C++(OOP)的部分。
至於某些上课上到的素材无法用OJ的形式测验,就会利用Project的形式测验。
虽然每个Project教授和助教都冠上”Mini”的名号,但我自己是觉得比程设一的Final
Project还难啦,所花的时间和头脑都不是程设一能比拟的。
Project1测验Tree和Assembly Code的观念。主要是模拟一台InOrder(不是PreOrder)计
算机,把InOrder以Tree的方式记录起来,并且输出CPU所会看到的Assembly Code的模样
。测验方式是用OJ,共有20笔测资,一笔测资5%。在AC的情况下,可以把自己的C语言的
code传到另一个题目去,和其他也是AC的人比赛。所输出的Assembly Code最快的前十五
名可以得到Bonus。这个Project的Bonus是CP值最低的,只有加总分的0.9,有心想加分的
学弟妹,我会建议没必要为此爆肝。
Project2就回到游戏设计的部分了。一样是以Allegro作为引擎,写一个塔防游戏(猴子
守城的山寨版)。不同的是,这次以C++物件导向的方式设计,所以困难度直接100倍。助
教把大部分的引擎都写好了,所以只有一半的分数是自己写code。另一半的分数是在demo
时,助教会从简单题12题、中等13题、困难7题,分别随机抽取2、2、1题来问。简单题基
本上是不做project,或者简单trace code就能回答。中等题是要把整份project的所有
code 很完整精通地trace过好几遍才能顺利回答。困难题就要看运气了,几乎全是老师不
曾教过、真的要到外面公司去当社畜才会的题目。Bonus分数是助教code如果有未臻完美
之处,可以回报给助教,请助教裁夺。个人是觉得C++(OOP)你能够把助教写的code给
trace到精通已经很了不起了,如果有能力改助教的code的话你大概也不会修这堂课。所
以这个Project的Bonus的CP一样不高。
Project3是黑白棋AI。助教也是把大部分都写得差不多了,剩下MiniMax(NegaMax)、
State Value Function、AlphaBeta Pruning(AB-Nega Pruning)的部分需要实作,详细的
内容在这里有点难以表述,需要修课才知道。
至於笔试的部分,考前助教有给两份练习题,练习题都不难,甚至有很多老师有教到的
部份练习题都没出现,我还很紧张想说「即便练习题没有,正式考试出出来一样合法」所
以复习很多遍,但事实证明考出来真的就像练习题一样简单。Bonus分数是在GitHub办帐
号,有超过3个commit就加总成绩一分。我只能在心里干,这比我在Mini1拿到的Bonus还
容易,然後拿到的分数还比较多QQ。另外还有两分是如果能够把五个助教所写的AI都打趴
的话,才有资格在同学间进行PK。Bonus分数是再加上个人胜率的两倍,所以这部分最高
加100% *2 = 2分。
给分:
再次强调loading很重很重,外系别来自讨苦吃。
有认真写的话,大概至少各种Lab、Mid、Final、Project都会及格,但再往上的分数要
看个人造化(不管你是要神人同学Carry还是要自己成为神人都行,或者自己把肝在不断的
熬夜中提炼成仙丹也可以。)
但要切记,神人同学Carry的部分仅限想法上的交流,不能是code上的交流。否则三个
Project都会抓抄袭直接0分,OJ的考试也会写不出来。
老师的喜好、个性:
老师很nice。如同程设一的描述。
给加签吗?
忘了。
补充:
程设的loading真的很重重重重重重重重,诚心劝退外系想来修的同学,尤其程设二。
程设的loading真的很重重重重重重重重,诚心劝退外系想来修的同学,尤其程设二。
程设的loading真的很重重重重重重重重,诚心劝退外系想来修的同学,尤其程设二。
总成绩/班上排名:
成绩: A 18/113 (差一点点点就A+真的快被自己烂气死)
成绩分布:
无
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.165.34.104 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/NTHU_Course/M.1594136494.A.10C.html
1F:推 yang20913 : final跟我之前修哲荣的完全一样耶 07/07 23:45
2F:推 zhaonce0420 : 原来甜度到了4颗星 我修ㄉ要死要活qq 07/08 00:17
3F:推 ErcH922 : 不知道跟另外一班比如何 07/08 00:29
4F:→ ErcH922 : 期考变化度一次比一次难 07/08 00:29
5F:→ ErcH922 : 但是舜仁人好课又甜 还是大推 07/08 00:29
6F:推 k30114 : 我觉得李的mini project 2 3应该loading更重...而且 07/08 16:05
7F:→ k30114 : 还不给bonus...黑白棋至少网路上一堆code可以参考来 07/08 16:05
8F:→ k30114 : 看 有够爽 07/08 16:05
※ 编辑: RhinoXiNiu (140.114.252.204 台湾), 06/28/2022 22:21:26