作者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/m.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/m.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