CS中心線上課程的組織者和助教

14月XNUMX日,CS中心第三次推出線上課程「演算法與高效計算」、「開發者數學」和「C++、Java和Haskell開發」。 它們旨在幫助您進入新領域,並為 IT 領域的學習和工作奠定基礎。

要註冊,您需要沉浸在學習環境中並通過入學考試。 了解有關該計劃、考試和費用的更多信息,請訪問 code.stepik.org.

同時,助教和先前發布的專案負責人將告訴您培訓是如何組織的、誰來學習、助教在學習期間如何以及為何進行程式碼審查,以及參與專案教會了他們什麼。

CS中心線上課程的組織者和助教

計劃是如何組織的

CS中心在Stepik平台上有三個線上專案: 《演算法與高效率計算》, 《開發者數學》 и “C++、Java 和 Haskell 開發”。 每個程序由兩部分組成。 這些課程是由經驗豐富的教師和科學家準備的:

  • 演算法和理論計算機科學作為演算法課程的一部分。
  • 面向開發人員的數學程式中的數學分析、離散數學、線性代數和機率論。
  • 線上程式語言專案中的 C++、Java 和 Haskell 課程。

以及其他活動,例如程式碼審查、透過證明解決理論問題、向助理和老師諮詢。 它們很難擴展,因此培訓以小組形式進行。 活動可以幫助您更深入地了解主題並獲得高品質的回饋。

Artemy Pestretsov,助教:「在我看來,程式碼審查是語言和演算法線上程式的主要區別特徵。 要找到問題的答案,您只需谷歌即可。 這既艱難又漫長,但卻是可能的。 但谷歌不會進行程式碼審查,所以這非常有價值。”

該計劃中的每門課程持續約兩個月。 在期末考試中,學生必須通過考試或獲得所有課程的學分。

CS中心線上課程的組織者和助教

誰是我們的學生

線上課程學生:

  • 他們想填補數學或程式設計方面的空白。 例如,想要提高數學知識的經驗豐富的開發人員。
  • 他們開始熟悉編程,並將中心的課程納入他們的自學計劃中。
  • 他們正準備進入碩士課程或電腦科學中心。
  • 接受過不同專業教育的學生決定從根本上改變方向。 例如,化學家或教師。

Artemy Pestretsov:「我們有一個學生,他正值青春年華,在一家石油和天然氣公司工作,由於去井裡出差,由於截止日期而延期。 具有完全不同背景的人們看到 IT 技術和數學已經獲得了發展勢頭,這真是太酷了。 這些人都是有成就的人,他們已經過上了美好的生活,但正在嘗試學習新的東西,並希望在其他領域發展。”

米哈伊爾·維謝洛夫, 虛擬機:“每個人的水平都不一樣:有人不完全理解語言的基本東西,而有人是Java或Python程式設計師,你可以本著“如何做得更好”的精神與他進行對話。 ” 最重要的是不要專注於最好的,而是專注於平均水平,這樣課程對每個人都有用。”

培訓是如何組織的?

有多種工具可協助組織者和教育者建立流程。

透過郵件通信。 用於重要且正式的公告。
與老師和組織者聊天。 人們經常在老師或助理看到問題之前就開始在聊天中互相幫助。
YouTrack。 向教師和助理提出問題和提交任務。 在這裡你可以提出私人問題並一對一討論解決方案:學生當然不能互相分享解決方案。

組織者與學生溝通並試圖快速解決問題。 Kristina Smolnikova:“如果有幾個學生問同樣的問題,這意味著這是一個常見問題,我們需要告訴每個人。”

助理如何提供協助

程式碼審查

該計畫的學生提交家庭作業,助理檢查他們的程式碼是否乾淨和最佳化。 上次大家就是這樣組織審核的。

Artemy Pestretsov 試圖在 12 小時內回答問題,因為學生提交問題的時間不同。 我閱讀程式碼,從標準、通用程式設計實踐的角度發現問題,深入細節,要求最佳化,建議哪些變數名稱需要修正。

「每個人編寫程式碼的方式都不同,人們有不同的經驗。 有同學第一次就拿來寫了。 我喜歡一切,它工作得很好,測試只需要 25 秒,因為一切都很完美。 碰巧你坐下來花了一個小時試圖理解為什麼一個人會寫這樣的程式碼。 這是一個絕對充分的學習過程。 當你在生活中進行程式碼審查時,就會發生這種情況。”

米哈伊爾試圖為每個學生獨立建立流程,這樣就不會出現「我已經向某人解釋過這一點了,你去問他」的情況。 他首先對問題進行了詳細的評論,然後學生提出了澄清問題並更新了解決方案。 經過不斷的接觸,他們取得了品質上令導師和學生都滿意的結果。

「在訓練的前一兩週,人們寫的程式碼不是很整潔。 需要仔細提醒他們Python和Java中都存在的標準,告訴他們自動程式碼分析器是否有明顯的錯誤和缺點,這樣以後他們就不會因此而分心,這樣就不會為整件事而煩惱。一個學期的事實是他的轉學操作不正確或逗號放錯了地方。”

給那些想要進行培訓代碼審查的人的提示

1. 如果學生寫了有問題的程式碼,不需要讓他們重做一次。 重要的是他要了解這段特定程式碼的問題所在。

2.不要對學生說謊。 如果無法理解問題,最好誠實地說「我不知道」。 Artemy:「我有一個學生對程式進行了更深入的研究,深入到硬體層面,然後再次上升,他和我不斷地乘坐這個抽象的電梯。 我必須記住一些事情,但很難立即表述出來。”

3. 不必關注學生是初學者這一事實:當一個人第一次做某事時,他會更認真地對待批評,根本不知道通常是如何做的,以及他取得了什麼成功以及他不做的事情。 最好只仔細講程式碼,不要講學生的缺點。

4. 學習如何以「教育」方式回答問題真是太棒了。 任務不是直接回答,而是確保學生真正理解並自己得出答案。 Artemy:「在 99% 的情況下,我可以立即回答學生的問題,但很少能立即寫出答案,因為我必須權衡很多。 我寫了五十行,擦掉,又寫了一遍。 我對課程的聲譽和學生的知識負責,這不是一件容易的事。 當學生說:「哦,我頓悟了!」時,一種非常酷的感覺就會出現。 我也想,“他頓悟了!”

5. 一定要細心,不要過度批評。 激勵,但不要太多,這樣學生就不會認為自己每件事都做得很好。 在這裡你必須學會有效地管理你的情緒水平。

6. 收集相同類型的一般評論和錯誤很有用,可以節省時間。 您可以記錄第一個此類訊息,然後只需複製並添加詳細資訊以回覆其他人對相同問題的回答。

7. 由於知識和經驗的差異,有些事情看起來很明顯,所以一開始助教不會在給學生的評論中解讀它們。 重新閱讀你所寫的內容並添加一些看似平庸的內容會很有幫助。 米哈伊爾:「在我看來,我幫忙檢查解決方案的時間越長,新課程的學生從一開始就更容易理解我的意思。 現在,我會閱讀程式碼的第一個註釋並說:“我應該更加小心、更加詳細。”

教學和協助都很棒

我們請這些人告訴我們他們在進行程式碼審查和與學生溝通時有哪些有用的經驗。

Artemy:「我學到的最重要的東西就是身為老師的耐心。 這是一項全新的技能,我正在掌握全新的非技術領域。 我認為當我在會議上發言、與同事交談或在集會上展示專案時,教學會非常有幫助。 我建議大家都去嘗試!”

Mikhail:「這段經歷讓我對別人寫程式的方式與我不同這一事實更加寬容。 尤其是當您剛開始尋找解決方案時。 我自己學習了 Python 和 Java 課程,並以不同的方式解決了類似的問題。 變數和函數的命名不同。 這些人的解決方案都有點不同,因為在程式設計中沒有標準的解決方案。 在這裡你需要一些耐心,以免說:“這是唯一的方法!” 這有助於後來在工作中討論具體決策的利弊,而不是討論不是我做出的事實的利弊。”

了解有關線上課程和校友評論的更多信息

來源: www.habr.com

添加評論