20172313 2018-2019-1《程序設計與數據結構》課程總結

20172313 2018-2019-1《程序設計與數據結構》課程總結

寫在前面

  轉眼間,又一個學期也已通過去了,算起來,這是學習Java的第二個學期。回想起來這幾個月的學習時光,有歡樂,也有汗水,有喜悅,也有痛苦。經歷了本身親手用Java寫出完整數據結構的雀躍,也飽受在深夜寫出的Android項目不能實現功能的苦惱。在這段時間裏,我學習到了不少,也成長了不少。我也有模有樣的進行了最後一次的項目展現。在進行合做項目的那段時間內,雖然每天熬夜,但最後看到app成果的時候仍是很是開心的,也確是獲得了一個不錯的結果。在這裏學期裏,首先很是感謝王老師,看得出來王老師在每節課前都有認真仔細的準備,課後也能耐心的給咱們答疑。還有就是張師瑜和張之睿兩位助教,可以仔細的批改咱們的做業和博客。在這裏向大家表達真摯的感謝。本篇博客也是這學期的最後一篇博客了,就這樣爲程序設計課程畫上一個圓滿的句號吧!html

每週做業連接

博客兩問

你以爲本身寫的最好的一篇博客是哪一篇?

  我以爲我寫的最好的一篇博客應該是第七週的博客。爲了學習第七週的內容,我真的是花費了很多時間,我我的認爲第七週的學習內容是本學期內最難的,單單是爲了弄懂紅黑樹就花了大概兩個晚上的時間,但最後仍是沒有完全的理解。這篇博客上面的示意圖也都是我本身使用軟件進行繪製的,也用了一些時間。也就是這篇博客上面傾注的心血最多,因此我覺的本身寫的最好的一篇博客是這篇。java

做業中閱讀量最高的一篇博客是?談談經驗

  我今天去查看博客園的瀏覽量的時候,我才發現個人閱讀量最多的一篇博客居然是最後一次任務的總結博客:《Java實現哈夫曼樹》我其實感受這篇博客寫的知識性並無很強,徹底就是在按照本身的想法在寫,只是大體的記錄一下本身在使用Java實現哈夫曼樹的過程當中的思路和代碼,也沒有什麼本身特別獨到的看法。我一直都覺的本身的博客相比於班裏的其餘人來講寫的是比較水的,不管是從內容仍是博客總體的易讀性和美觀度。多是在這個任務的時候個人博客提交的比較早而已吧!git

實驗報告連接彙總

  • 實驗一:對之前學習的知識進行復習,練習排序算法的使用,使用本身編寫的數據結構進行實現。
  • 實驗二:複習Junit測試,對樹狀數據結構進行深刻的學習使用,分析紅黑樹的源碼鍛鍊看代碼的能力並加深理解。
  • 實驗三:深刻學習練習查找和排序的幾種算法,使用本身編寫的數據結構進行實現。

團隊項目報告連接彙總

代碼託管

1. 給出statistic.sh的運行結果,說明本學期的代碼量目標達到沒有?

  單單從代碼量上來看的話,我以爲應該是知足這學期的任務了,但我以爲編程能力的提升不是簡單的憑藉着代碼量的多少就能衡量的。在這學期的代碼中,有很多是對已經寫好的數據結構的代碼進行重複的使用,亦或是對代碼修改了一小部分又從新拿過來用。代碼量只能稱之爲學習的一個衡量標準,最重要的仍是在實踐的項目中可以有所進步。片面的看本身IDEA和AS上的代碼量沾沾自喜,安慰本身這學期已經很努力了是沒有用的。算法

2.加點代碼,改點代碼是理解的最好方式,參考編程的智慧,談談你的心得。

  原來不知道在什麼地方看到這樣一段話,相信你們也看到過,大概是這樣的:在進行編程的時候,咱們沒有必要從新造一個輪子。編程

   是啊,在前人已經造好了一個足夠好用的輪子以後,咱們沒有必要從新開始,考慮這個輪子是如何從原材料進入工廠怎樣一步步的變成咱們所看到的輪子的模樣。咱們須要作的是思考怎樣才能把這個輪子給應用的足夠好,賦予這個輪子以存在的意義。因此我認爲在別人代碼的基礎上加點改點代碼是很是重要和必要的。後端

3.積極主動敲代碼作到沒?教材實踐上有什麼經驗教訓?

   林林總總算下來,這學期也敲了很多代碼,相比於上個學期來講,最重要的改變就是沒有再重複的手敲書上的代碼,而是常常對本身已經完成的代碼進行修改,應該來講積極主動敲代碼大致上是完成了吧。數組

   我以爲教材實踐仍是頗有用的,在學習的過程當中,教材是能夠依靠的基礎,若是沒有了這個基礎,漫無目的的去東一榔頭西一棒槌的學習的話效率會很是的低下。數據結構

課堂項目實踐

  • 時間複雜度分析: 時間複雜度分析,用大O記法寫出時間複雜度。
  • ArrayStack的實現和測試: 完成課本中ArrayStack類的實現,特別是完成peek、isEmpty、size和toString方法的實現,並完成四個方法的測試。
  • 鏈表插入: 寫出鏈表中節點插入的操做代碼。
  • 鏈表實踐: 鏈表練習,要求實現下列功能:
    • 經過鍵盤輸入一些整數,創建一個鏈表
    • 實現節點插入、刪除、輸出操做
    • 使用冒泡排序法或者選擇排序法根據數值大小對鏈表進行排序
  • 第四章代碼檢查: 運行PP28,PP28頁的程序,根據我的學號輸入後綴表達式並計算。
  • LinkedStack補全: 給出size、isEmpty和toString等方法的定義,以完成LinkedStack類的實現。
  • 第五章代碼檢查-凱撒密碼: 代碼檢查P72-P73,凱撒密碼程序。
  • 楊輝三角: 使用循環隊列輸出楊輝三角。
  • 棧隊列測試:
  • 第六章代碼檢查: 運行PP6.8和PP6.11的程序
  • 線性表實踐: 定義一個商品類Product,須要包括商品名稱、價格等信息,使用鏈式存儲結構實現一個線性表,存儲商店中的商品。支持插入、刪除、選擇排序、查找等功能,並進行簡單測試。
  • ASL測試: 已知線性表具備元素{5,13,19,21,37,56,64,75,80,88,92},若是使用折半查找法,ASL是多少?
  • 輸出後綴表達式。
  • 三種查找算法練習:
  • 哈希衝突處理實踐: 把本身的學號加21,例如學號爲1,把22添加到序列後面,使用鏈地址法,解決衝突。編程實現,並測試。
  • 希爾排序測試:
  • 樹計算題: 計算題:
    • 1.有1023個結點的徹底二叉樹,其高度是多少?葉結點數是多少?
    • 2.高度爲h的徹底二叉樹至少有多少個結點?至多有多少個結點?
  • 樹的深度和葉子個數計算: 計算課本中背部疼痛診斷器中決策樹的葉子節點個數?根據課堂介紹的遞歸樹深度計算算法,計算決策樹的深度。
  • 中序和先序計算二叉樹結構:若已知中序和先序序列,計算二叉樹結構
  • 層序遍歷法實踐: (1)使用遞歸實現層次遍歷背部疼痛決策樹,並按照層次順序輸出每一個節點內容。(2)非遞歸的層次遍歷法算法以下:
    根結點入隊;
    從隊頭取元素, 並執行以下3個動做:
    • (1)訪問該結點;
    • (2)若是該元素有左孩子,則左孩子入隊;
    • (3)若是該元素有右孩子,則右孩子入隊;
      重複執行上述過程,直至隊列爲空。 此時,二叉樹遍歷結束。按照上述算法,編程實現層序遍歷,按照層序的方法,遍歷並依次輸出每一個節點內容。
  • 堆構造與排序: 根據關鍵字序列:36,30,18,40,32,45,22,50,構造一顆小頂堆,並排序?
  • 堆排序測試: 根據關鍵字序列:36,30,18,40,32,45,22,50,利用數組構造一顆大頂堆,並排序。
  • 十一鏈表練習: 畫出十一鏈表結構。架構

  • 最小生成樹:
    • 1.畫出Prim算法的最小生成樹的生成過程
    • 2.畫出Kruscal算法的最小生成樹的生成過程
    • 3.計算最小權值
  • Dijkstra(迪傑斯特拉)算法測試: 使用Dijkstra(迪傑斯特拉)算法計算單源(V1出發)最短路徑。
  • AOE練習:
    • 一、求關鍵路徑,v1和ve的值並寫出具體步驟
    • 二、畫出圖一可能的拓撲序列
    • 三、畫出圖二所示無向圖的鄰接矩陣、鄰接鏈表,並列出深度優先和廣度優先遍歷圖所得的頂點序列。
    • 四、寫出圖三的鄰接矩陣,並用prim算法求最小生成樹,畫出產生過程
  • 哈夫曼測試: 設有字符集:S={a,b,c,d,e,f,g,h,i,j,k,l,m,n.o.p.q,r,s,t,u,v,w,x,y,z}。
    給定一個包含26個英文字母的文件,統計每一個字符出現的機率,根據計算的機率構造一顆哈夫曼樹。並完成對英文文件的編碼和解碼。app

1. 課堂實踐對提升應用能力有幫助嗎?

  就我來講,課堂實踐所提升的應用能力仍是蠻多的,課堂實踐可以及時的對當節課學習的知識進行練習,以便於可以更好的掌握,同時也刺激了上課時的聽課效率。

2. 課堂實踐上本身有什麼經驗教訓?

  及時的對內容進行復習和預習,由於有的時候你可能上節課的知識沒有記牢,就沒法和這節課的知識所聯繫起來,從而完不成課堂實踐,也有可能你沒有進行預習,當節課的內容並無很好的理解,這樣也致使了課堂實踐沒有辦法按時完成。

3. 課堂實踐上對老師有什麼教學建議?

  這學期的課堂實踐整體來講仍是很好的,難度適中,比較符合課程的進度和內容,但其中有些與課後的練習重複,但願可以有所改進,

課程收穫與不足

本身的收穫

  這個學期相較於上個學期的學習來講,內容更有深度,學習起來天然也就花費了更多的時間,上個學期主要是花費較多的時間來理解代碼,來看懂代碼講的究竟是什麼意思。這個學期花費較多的時間來思考代碼到底是怎麼來實現的,捋清楚了思路,其實真正編碼的時間並無很長。本身的收穫大多都是鍛鍊了本身的思考能力吧。

本身須要改進的地方

  我在博客園上也常常看其餘同窗的博客,也發現有不少高品質的博客,內容的分析都很細緻,也有很多本身獨立的思考。相比之下,我感到本身的學習時間是不太夠的,也沒有及時的造成文字進行記錄。我在前面也提到,本身的博客是比較水的,在這些方面還有不少須要改進的地方。

結對學習是否是真正貫徹了?寫一下你提供的幫助或接受了什麼幫助,並對老師提供參考建議

  結對學習的話,我認爲仍是貫徹了的,小組內的成員也都花費了很多時間在學習上,有不懂的地方也都會一塊兒討論,每一個人在代碼上也都傾注了不少心血,我一直堅信着1加1大於2的道理,因此我認爲結對學習也是很是必要。提到我所接受的幫助,大多也就是編程的思路和想法,在數據結構的學習中,一旦思路被挑明,寫起代碼來也就簡單許多了。

問卷調查

1. 你平均每週投入到本課程有效學習時間有多少?

  大體估計一下的話,平均應該有15-20小時吧,有時候由於本身犯的錯誤過多使得花費的時間更多,固然這其中也有一部分是無效學習時間。

2. 每週的學習效率有提升嗎?你是怎麼衡量的?

  效率的話,除去十一放假,其餘的學習效率仍是有所逐漸提升的,但看學習的時間來衡量我以爲有些偏頗,我以爲仍是用當週的學習狀態,解決問題的速度來衡量要合理一些,畢竟學習效率這個東西只有本身內心清楚。

3. 藍墨雲班課的使用對你的學習有促進嗎?有什麼建議和意見嗎?

  藍墨雲班課做爲電子平臺,相較於傳統的教學模式,不管是提交做業仍是發佈任務上都要方便許多,也免去了老師和學生之間紙質交流的麻煩,仍是頗有幫助的,意見和建議的話,這個真沒有。

4. 你以爲這門課老師應該繼續作哪一件事情?

  繼續進行課堂實踐和藍墨雲班課的使用,我以爲這兩件事對編程能力的提升有很大的幫助。

5. 你以爲這門課老師應該中止作哪一件事情?

  寫博客。

6. 你以爲這門課老師應該開始作什麼新的事情?

  大膽創新,再也不進行寫博客,寫博客的意義在不斷學習的過程當中已經被淡化了,更重要應該是理解,理解的加深不是單純的靠寫博客就能實現的。

總結中涉及到的連接的二維碼

相關文章
相關標籤/搜索