學了一學期數算之後的吐槽

我校課程評價的建議那一欄真是小的可憐.....只有學習我同學把吐槽放這裡了...

與這篇文章

woctordho:上了一學期計概和一學期數算之後的吐槽zhuanlan.zhihu.com圖標

所提到的情況對比,信科的數算還是比我院的水平高很多的,至少沒有太多嚴重的學術錯誤,而且從課程裡面學到的知識也要多很多,然而還是槽點滿滿....

貴院很多課頗有一種要把學生變成人肉計算機的風格,比如說給我一個混亂的十多位長的序列,要我回答直接選擇排序的比較次數什麼的.我嚴重懷疑,老師您自己不畫兩頁草稿紙不重複數兩遍,敢不敢聲稱自己數的沒錯.還有手動Dijkstra(這個的計算量好像稍微小一點),手動紅黑樹,手動splay.....數不勝數.一棵樹畫出來要佔一頁的四分之一,多插幾個節點再多splay幾次就可以寫滿兩張紙了.作為平時的作業題我還可以寫一個程序,然而把這種題拿來當做考試題真是呵呵

"所有不上機的考試都是扯淡",這門課有一次上機考試,還是很好的一件事情,然而並不影響不上機的半期考試和期末考試扯淡的事實.我聽說去年這門課的期末考試還是上機考試,不知道為什麼今年就放棄了.

我總聽程序員和程序媛們說,讀別人寫的代碼就是吃友善度,我覺得以此類推,拿代碼填空題來考我就是喂我友善度吃.況且出題人自己出的題,self documentation做的極差不說,還有語法錯誤,比如期末考題裡面就有一個未定義的變數.然後我舉手詢問,被告知"你不要管它",於是我在出題者和監考員聯合的充分的誤導之下就把題做錯了.很多在紙上寫程序犯的錯誤,上機之後通過debug都可以解決的,因此上機考試的時候的那一道代碼填空題才應該是代碼填空題合適的考法.包括這個出題人犯的錯誤也是用機器驗證一下就可以解決的.我很好奇,難道出題人在把這道題寫在試卷上之前沒有把填了空的代碼拿到機器上面跑過么?(順帶質疑一下高考理科綜合科目的出題人在命實驗題之前有沒有親手把題干所涉及到的所有實驗親手做一遍.重視實證,不輕信自己想當然的實驗結果,在我看來是一種基本的尊重科學的態度,這在十分嚴肅的高考考試中尤其重要)

這門課用到了openjudge還是個很好的事情,然而作為一個瞎搞過幾年NOIP的人,oj上面的題目對於數據範圍的說明的簡陋實在讓我印象深刻.我已經不知道有多少題沒給數據範圍,或者多組數據卻不告訴我究竟有多少組數據,這讓人完全沒法分析自己設計的演算法的可靠性.哪怕是簡單如A+B Problem,你來10^10組數據,時限1000ms我也很可能就TLE了啊.如何出一道質量比較高的oj題呢?可以去Codeforces上面找幾道題來參考參考.第14周的作業題好像比其他很多的質量都要高出許多.

mooc上面的題至少有一大半都是人肉計算機式的題,做起來真讓人頭疼.而且諸如排序題不說是升序還是降序,建堆不說是最大堆還是最小堆的小錯誤比比皆是.這門課理論上的小的漏洞並不止這麼一點,至少從課件上看起來是這樣.

例如,從這個定義

我應當可以推斷,不存在起點和終點相同的路徑.然後

於是令x=y我們可以得到"任何一個圖都不連通"的結論.然後判斷"一個有向圖的極大強連通分量不能進行拓撲排序"這種命題就十分讓人為難,因為直覺和邏輯得到的結果並不一致.

如果書上明明有更好的定義,為什麼課件上一定要另闢蹊徑呢?

想要考這些理論問題,至少需要在課程理論的可靠性上再下一點功夫吧.定義雖然沒有理論上的限制,但是如果要讓定義能夠很好的捕捉直覺上的概念,可能並不能隨心所欲的下定義,還是要考究考究的吧.可以參考演算法導論做一點演算法的可靠性證明.

總而言之,這門課既不是一個著重於訓練同學解決實際演算法問題的課,而想要考理論卻沒有一個令人滿意的理論體系.搞的兩頭都很尷尬.我聽說貴院的程序設計實習,ics和計算概論考核方式都是大作業和上機考試,不知道為什麼數算不可以延續這種優良的傳統.


貴校要讓本科生在一門成績都還沒有出的時候做課程評估,最關鍵的是課程評估裡面還有"你是否同意,本課程評價方式公正合理"這種問題,要我在從"非常同意"到"非常不同意"之間做選擇.但是這門課連分都沒有出來,很多課期末考試也沒考.評價方式最終都是體現在成績上面,我怎麼知道公不公正合不合理.除了對於所有這類問題全部選擇"不同意"以外,我別無他法.

以上


推薦閱讀:

做 IT,如何從優秀變為卓越?
[求助]有熱心人能用伺服器幫我跑下levidb8的測試嗎?
面試經典問題——每次可以走 1 級或 2 級,上 100 級台階有多少走法
基於五種機器演算法的信用風險評估

TAG:算法与数据结构 | 教育 |