[心得] 計算機程式設計二 楊舜仁

看板NTHU_Course作者 (犀牛望月)時間3年前 (2020/07/07 23:41), 編輯推噓4(404)
留言8則, 4人參與, 3年前最新討論串2/2 (看更多)
課名:計算機程式設計二 Introduction to Programming (II) 科號:10820 CS 135602 老師:楊舜仁 課本:Algorithm、Compiler、Assembly Code、AI Introduction部分是老師自製ppt,中 間的C++(OOP)是廠商提供ppt。不須購買,教授會提供 課別:資工系系定基礎必修 學分:3 涼度:★ 甜度:★★★★ 建議先修課程: 計算機程式設計一 Introduction to Programming (I)。 請先看我所寫的同位教授的程設一: https://www.ptt.cc/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://www.ptt.cc/bbs/NTHU_Course/M.1594136494.A.10C.html

07/07 23:45, 3年前 , 1F
final跟我之前修哲榮的完全一樣耶
07/07 23:45, 1F

07/08 00:17, 3年前 , 2F
原來甜度到了4顆星 我修ㄉ要死要活qq
07/08 00:17, 2F

07/08 00:29, 3年前 , 3F
不知道跟另外一班比如何
07/08 00:29, 3F

07/08 00:29, 3年前 , 4F
期考變化度一次比一次難
07/08 00:29, 4F

07/08 00:29, 3年前 , 5F
但是舜仁人好課又甜 還是大推
07/08 00:29, 5F

07/08 16:05, 3年前 , 6F
我覺得李的mini project 2 3應該loading更重...而且
07/08 16:05, 6F

07/08 16:05, 3年前 , 7F
還不給bonus...黑白棋至少網路上一堆code可以參考來
07/08 16:05, 7F

07/08 16:05, 3年前 , 8F
看 有夠爽
07/08 16:05, 8F
文章代碼(AID): #1V19Uk4C (NTHU_Course)
文章代碼(AID): #1V19Uk4C (NTHU_Course)