非計(jì)算機(jī)專業(yè)的學(xué)生有哪些有趣的項(xiàng)目?
這學(xué)期我在教一個(gè)非專業(yè)的本科生編程入門(mén)(Python),我正在為我的學(xué)生尋找一些有趣的項(xiàng)目,這些項(xiàng)目很吸引人,但對(duì)他們來(lái)說(shuō)不是太難。這是我第一次學(xué)習(xí)這門(mén)課程
解答動(dòng)態(tài)
這是一個(gè)概念,但在視覺(jué)反饋下效果更好。
模擬大流行。 A大流行需要一個(gè)有居民的世界,他們可以處于幾個(gè)狀態(tài)中的一個(gè),比如健康、生?⑺勞觥4罅饜寫(xiě)踴疾【用翊サ澆】檔摹傲誥印本用瘛?“死區(qū)”阻止傳播。你也可以設(shè)置障礙物來(lái)模擬海洋等。人們可以康復(fù)或不康復(fù),也可以再感染或不感染。大流行可以“跳躍”來(lái)模擬空中旅行等。
這種東西可以高度參數(shù)化感染率和其他一切。
二維數(shù)組可以代表世界,你可以“附加”;以各種方式模擬球體、圓環(huán)體或m?bius條帶的邊。
模擬通過(guò)迭代進(jìn)行。
如果你想把整個(gè)事情看作MVC,我所描述的是模型部分,在任何情況下,它通常于視圖和。
這個(gè)想法是從一本書(shū)中偷來(lái)的,多態(tài),但是上面有足夠的內(nèi)容來(lái)構(gòu)建它。另一個(gè)有趣的游戲是《紐約時(shí)報(bào)》的“拼寫(xiě)比賽”(https://www.nytimes.com/puzzles/spelling-bee). 您提供了一個(gè)包含單詞的文件。學(xué)生程序讀取文件并選擇符合規(guī)則的單詞。里程碑來(lái)自里德學(xué)院過(guò)去的一個(gè)項(xiàng)目。
打印所有可以用固定字符串拼寫(xiě)的單詞(例如“AZDIRWY”)。第一個(gè)字母是必需的信件提示用戶輸入一個(gè)字符串并打印一個(gè)單詞列表或?qū)⒃撟址鳛槊钚袇?shù)。生成每個(gè)單詞的分?jǐn)?shù)和總數(shù)得分。生成在紙上繪制字符串的圖形(六個(gè)六邊形包含可選字母,圍繞一個(gè)帶有必需的字母),以及words. 列表,您可以選擇稍微不同的方向,讓python程序生成HTML輸出并在瀏覽器中查看結(jié)果。這說(shuō)明了動(dòng)態(tài)生成的HTML.
另一種變體是預(yù)處理“dictionary”,刪除所有太短或包含七個(gè)以上不同字符的單詞。然后創(chuàng)建多個(gè)文件,每個(gè)可能的開(kāi)頭字母對(duì)應(yīng)一個(gè)。你現(xiàn)在已經(jīng)減少了搜索空間。
Python turtle 與他們的專業(yè)相關(guān)如果你能找到相關(guān)的內(nèi)容elseimport turtle#這個(gè)模塊允許一些視覺(jué)輸出,可以很有趣,并提供很好的反??br/>Jupiter notebooks/google colab notebook. 它允許你使用markdown創(chuàng)建頁(yè)面(與本網(wǎng)站相同),并合并python代碼、表和圖表。表格可以輸入或輸出,圖表可以輸出,還有其他的輸入,如滑塊。這對(duì)任何一個(gè)有科學(xué)興趣的人來(lái)說(shuō)都是好的,因?yàn)樗麄兛梢岳^續(xù)在他們的專業(yè)中使用它。
語(yǔ)言分析/文本生成 編寫(xiě)一個(gè)程序,以這種風(fēng)格創(chuàng)作作品。你可以用一個(gè)2階段的馬爾可夫鏈(什么?)。您只需生成一個(gè)包含下一個(gè)單詞概率的表。e、 g.對(duì)于短短語(yǔ)“貓坐在墊子上”,貓和墊子的概率都是0.5;。有足夠長(zhǎng)的訓(xùn)練文本,你可以讓它生成自己的文本。
你必須為它們編寫(xiě)程序,或者至少部分地。你寫(xiě)的東西必須有效,但不能完整,這樣他們才能添加到其中。但現(xiàn)在我又偏離了另一個(gè)問(wèn)題的答案。在我所在的學(xué)校,我們(通常)將課程的最終成果帶向不同的方向:選擇,兩人一組(或三人一組)。
學(xué)生在谷歌文檔中寫(xiě)2到3個(gè)想法(“建議”),然后,他們彼此交談,尋找合適的項(xiàng)目。
然后,他們寫(xiě)下簡(jiǎn)短的建議,并將任務(wù)分為“最低可行產(chǎn)品的必備品”、“重要”和“最好擁有”;。多年來(lái),我們看到一些學(xué)生完全迷失在野草中,于是我們加入了這一步驟。我們把他們稱為“字體顏色”學(xué)生,我們發(fā)現(xiàn),把這個(gè)列表放在前面可以讓我們指向它,讓學(xué)生們轉(zhuǎn)向項(xiàng)目中最重要的部分。
他們有幾個(gè)星期的時(shí)間工作,老師們?cè)诮淌依锼奶幾邉?dòng),提供支持,然后他們做最后的陳述。
最終的產(chǎn)品在成績(jī)中所占的比例并不大,因?yàn)橄喈?dāng)多的項(xiàng)目并沒(méi)有完全結(jié)合在一起。我們認(rèn)為這在發(fā)展上是合適的;學(xué)生們?cè)诤饬克麄冊(cè)趦芍軆?nèi)能完成多少事情以及事情需要多長(zhǎng)時(shí)間方面很差。免費(fèi)項(xiàng)目也迫使學(xué)生探索新的途徑,我們不想懲罰這種探索,因?yàn)閷W(xué)習(xí)如何圍繞新的圖書(shū)館和新的挑戰(zhàn)來(lái)思考是很困難的,也是非常重要的。
相反,學(xué)生們會(huì)做一個(gè)關(guān)于他們想要生產(chǎn)什么和使用什么圖書(shū)館的演示,然后他們演示什么他們一直在思考什么進(jìn)展順利,什么本可以做得更好。就我個(gè)人而言,我還要求學(xué)生在他們的代碼中向我們展示一件有趣的事情,盡管我的同事不這么做。不管怎樣,演講都很有趣,一些項(xiàng)目總是給人留下深刻印象。以一種愉快、令人振奮的語(yǔ)氣結(jié)束課程是一種有趣的方式。
并不是說(shuō)學(xué)生應(yīng)該花多少時(shí)間在他們的項(xiàng)目上,例如,作為一個(gè)練習(xí)/實(shí)驗(yàn)課,或者一個(gè)(可能是多個(gè))星期的項(xiàng)目上。如果目標(biāo)是較短的,我建議從“這是問(wèn)題x,我們開(kāi)發(fā)技術(shù)y”的教學(xué)資源中尋找靈感。尋找可以簡(jiǎn)化與會(huì)者日常工作的項(xiàng)目。靈感的來(lái)源可以是
al Sweigart的自動(dòng)化Python的枯燥的東西(注意,這只是一個(gè)系列的一部分);例如讓Python讀/寫(xiě).csv、電子表格、word或.pdf文件;爬網(wǎng)網(wǎng)站;開(kāi)始使用regexes
Ken Youens Clark的微型Python項(xiàng)目(他的一個(gè)播放列表)。最初基于一門(mén)面向生物科學(xué)參與者的課程,背景中的主題是如何將書(shū)寫(xiě)腳本(his)形式化新建.py)一勞永逸,包括自動(dòng)質(zhì)量控制(Makefile和pytest)
youtube上的高級(jí)教程示例,例如用戶sentdex的Python Programming for Finance,或Derek Bana的Master Statistics上面的python
列表不可能詳盡無(wú)遺。
作為一個(gè)非CS成年人,當(dāng)我學(xué)習(xí)一門(mén)新語(yǔ)言時(shí),我喜歡編寫(xiě)程序來(lái)解決一些項(xiàng)目問(wèn)題。堅(jiān)持用數(shù)字較小的問(wèn)題,它們對(duì)非數(shù)學(xué)家來(lái)說(shuō)并不難。對(duì)我來(lái)說(shuō),這些問(wèn)題很有趣。問(wèn)題中給出了足夠的信息,以確保非數(shù)學(xué)家理解目標(biāo)。祝你好運(yùn)!
對(duì)于必要的決策方面,我個(gè)人發(fā)現(xiàn)讓人們感興趣的最好方法之一是讓他們編寫(xiě)玩游戲的程序(而不是編寫(xiě)游戲本身,但是寫(xiě)一個(gè)能代替人類玩游戲的程序,這就要求他們分析思考游戲是怎么玩的,分析性思維是學(xué)習(xí)擅長(zhǎng)編程的最重要的東西之一。
紙牌游戲二十一(21點(diǎn)/浮筒/vingtun)是一個(gè)簡(jiǎn)單起點(diǎn)的例子,因?yàn)椋鹤袷匾?guī)則很簡(jiǎn)單,即使是對(duì)一個(gè)從未聽(tīng)說(shuō)過(guò)這個(gè)游戲的人來(lái)說(shuō),也能在五分鐘內(nèi)輕松地解釋清楚在那之前生成的程序往往非常緊湊,運(yùn)行速度也非?欤ㄟ@意味著您可以將每個(gè)學(xué)生的程序運(yùn)行數(shù)十萬(wàn)次,以便更好地了解它的執(zhí)行情況)。實(shí)際上,用幾十行代碼就可以寫(xiě)出21種基本的人工智能,一個(gè)簡(jiǎn)單但近乎最優(yōu)的策略對(duì)大多數(shù)人來(lái)說(shuō)都是直觀的(即,一直拿新牌,直到你達(dá)到或超過(guò)一個(gè)特定的值(大多數(shù)人傾向于選擇18歲左右),然后通過(guò)。一個(gè)真正的最佳策略需要實(shí)際評(píng)估其他玩家擁有什么,并計(jì)算出拿一張新牌的概率,從而使你超過(guò)21歲游戲。紙牌游戲往往能很好地實(shí)現(xiàn)這一點(diǎn),因?yàn)樗鼈兤仁箤W(xué)生考慮基本概率以使他們的課程取得好成績(jī),但通常也需要比概率更多的優(yōu)化策略。
通過(guò)一些額外的準(zhǔn)備工作,你甚至可以將其設(shè)置為“錦標(biāo)賽”類型的東西(理想情況下不影響成績(jī),因?yàn)檫@給那些有能力想出真正最佳策略的人帶來(lái)了一點(diǎn)不公平的優(yōu)勢(shì),以此來(lái)鼓勵(lì)班上那些喜歡競(jìng)爭(zhēng)的人- End
免責(zé)聲明:
本頁(yè)內(nèi)容僅代表作者本人意見(jiàn),若因此產(chǎn)生任何糾紛由作者本人負(fù)責(zé),概與琴島網(wǎng)公司無(wú)關(guān)。本頁(yè)內(nèi)容僅供參考,請(qǐng)您根據(jù)自身實(shí)際情況謹(jǐn)慎操作。尤其涉及您或第三方利益等事項(xiàng),請(qǐng)咨詢專業(yè)人士處理。