在如今這個時代,在不少領域中,編程能力已經逐漸成爲一項很是重要的基本能力,編程教學也已經愈來愈廣泛。許多專業將程序設計課程做爲大學一年級的必修課,甚至青少年教育目前也在掀起一股學習編程的浪潮。面試
然而,對於第一次接觸編程的同窗,如何讓他們更快速的入門仍然是一個須要編程教育者去思考的問題。許多同窗在接觸編程初期,因爲編程經驗不足,常常會出現各類各樣的問題,而這些問題很難直接反映在代碼編譯或運行的輸出結果中,致使一部分同窗在學習初期學習進度遲緩,編程學習熱情也不足。若是能有一個智能的平臺,它能幫助編程初學者(或者是某種新語言的初學者)更快地去跨越學習初期的種種障礙,那麼對於編程教育者和編程學習者來講,都能起到很是大的幫助,而咱們這個項目就是但願去實現這樣的一個AI Coach。算法
場景 | 毫無編程經驗的家庭主婦 |
---|---|
編程知識與能力 | 歷來沒有接觸過 |
動機 | 平時比較空,沒什麼事情作 |
目的 | 但願能會一些基本的編程語言和編程思惟,能寫一些簡單基礎的程序 |
困難 | 一點基礎都沒有,看網上的編程課程看不懂 |
用戶偏好 | 但願簡單一點,學的時候能跟得上 |
用戶比例 | 約佔人羣的30% |
典型場景 | 登錄AI Coach網站,根據本身的能力圖與計算機水平來選擇合適的題目,天天花一些時間來完成題目,學到相應的一部分知識 |
場景 | 當代大學生 |
---|---|
編程知識與能力 | 學過若干門編程語言,有必定的基礎 |
動機 | 要學習新的語言 |
目的 | 但願能儘快學會一門新語言以運用 |
困難 | 對新語言語法不熟悉,容易將新舊語言弄叉 |
用戶偏好 | 但願能快速上手,越快越好 |
用戶比例 | 約佔人羣的70% |
典型場景 | 登錄AI Coach網站,根據本身的實際需求來選擇要學的語言,而且一天能夠花大量時間來快速學習,以求達到速成效果 |
一些網絡上對於編程難的廣泛描述:編程
能夠基本分析出目前學習編程問題:後端
目前的同類競爭產品分析:網絡
例子 | 優勢 | 缺點 | |
---|---|---|---|
網上課程 | https://courses.edx.org/courses/HarveyMuddX/CS002x/1T2015/course/ https://code.org/ | 和學校是課程差很少相似。可是設置更加先進。同時還配有練習題,能讓學生熟練。 | 與學校上課的缺點相似,教師和助教有限,並不能一對一輔助學生理解bug中晦澀難懂的信息。 |
OJ | http://acm.pku.edu.cn/JudgeOnline/ https://leetcode-cn.com/problemset/all/ | 可能是針對面試人羣和acm選手。提供大量算法題目,功能實現正確且複雜度在規定範圍內的代碼能夠經過試題。可以達到練習的目的 | 這些題目是針對有較強編程基礎的學生的。對於變成自學的編程小白基本沒法下手。 |
網上自學教程 | https://www.liaoxuefeng.com/wiki/1016959663602400 https://www.runoob.com/ | 知識描述詳細易懂,有的教程還配有習題。 | 習題量不足,不足以使初學者上手一門語言。同時沒法實時跟進學習者的進度。Debug信息初學者沒法理解的問題仍是沒有得以解決。 |
針對以上的現狀和各種產品的優缺點,咱們產品的優點在於:編程語言
1, 給用戶提供友好的debug提示函數
咱們的AI coach有如下幾大關鍵特性,旨在解決當前編程教學行業的一些痛點:單元測試
智能化的交互方式:對編程小白來說,從頭寫一個完整的程序是一個費時費力而收效甚微的工做。AI coach經過給從題庫中選取的代碼段智能挖空,能對使用者進行有針對性的訓練,能在短期內幫助使用者學習、強化編程。學習
人性化的編程指導:不少編程入門者或者某種語言的初學者,在編寫代碼時會遇到各類各樣的syntax error或者runtime error, 而他們獲得的提示信息卻比較晦澀難懂或不夠智能精確。AI coach可以爲編程者對錯誤進行智能分析,準肯定位錯誤,且提供更爲人性化的天然語言提示。測試
個性化的學習跟蹤:不少編程小白對本身當前的編程水平並不能有全局的認知,這讓他們在學習過程當中感到很迷茫。AI coach爲用戶提供了個性化的學習進度的跟蹤,經過對於用戶在編程知識的不一樣方面的分析,刻畫用戶畫像,並提供個性化的學習曲線,協助用戶對本身編程能力進行評估,以便安排後續的學習。
友好的分類與搜索:不少入門者想作針對性練習時,面對茫茫題海感到無從下手。AI coach一方面提供了與高校教學接軌的題庫分類,方便校內使用者進行課後的對應強化訓練。另外一方面,咱們提供了支持天然語言的搜索,爲但願對某種能力進行練習卻沒法準確描述函數名或功能名的用戶提供了優秀的使用體驗。