软件工程资料 - 优秀的大学怎么教程序开发和软件工程课
他山之石,可以攻玉
世界上很多大學都有不錯的教學方法, 例如我們曾經(jīng)的助教總結他在國外的學習經(jīng)歷,可以看出老師和學校對于如何教好課是花了心思, 有很多投入的。
? ? 一門課怎么上:?https://zhuanlan.zhihu.com/p/20610349
怎么設計長期好用的 教學系統(tǒng)
另外,在2012年,我們上軟件工程課的過程中,收集到交換到 UCSD 同學寫的這個博客,也貼在這里作為學習資料。?原網(wǎng)站 (http://www.arc-trooper.com)已經(jīng)不存在,這是一個備份。
----------------- 以下是轉載備份 ---------------------------
UCSD CS110 Final Presentation后的感想
Posted on?2012/12/06?by?admin?9項目源代碼?ecomstore@github?項目進行過程中的所有文檔現(xiàn)在仍在修訂,學期結束后會放上來
_____________________________
剛剛結束了在ucsd上的cse110 軟件工程的 final presentation。 感觸很多,想和大家分享一下。
首先介紹一下這門課的形式,Professor Gary Gillespie 是我們的lecturer, cse110的形式很特殊,Gary實際上以公司的形式來開設這門課程,cs110 fall 2012?Gary是公司的founder和ceo,他手下有兩個TA,他們分別是COO,Chief Operating Officer,首席運營官,一個CIO,Chief Information Officer。 還有三四個Tutor,他們是Executive Board Members。專門負責lab時的tutoring。
課程開始時,Gary向我們介紹了這門課的形式,所以學生組隊,8~9人的團隊,作為公司的一部分,這個學期的主題是電子商務,但沒有限定的方案或形式,所以團隊可以自己做決定,沒有要求實現(xiàn)技術,完全自己決定。
所有組員都有明確的角色分工
Project Manager
Subject Matter Expert: ? Researches the inner workings of online stores and is involved with how the business rules are integrated into the project.
Senior System Analyst: Coordinator of Use Cases, User Story, Requirements.
Software Architect: ? ? ? ?Coordinates design, selector of technologies.
Software Development Lead: Coordinates software development.
Algorithm Specialist: ? ? ?Designer of algorithms and module interfaces.
Database Specialist: ? ? ?Maintains database and related issues.
Quality Assurance Lead: Coordinates testing phase, ensures procedures followed.
User Interface Specialist: Focuses on the look and feel, and user experience.
每個人根據(jù)自己擅長的技術或興趣選擇職位,所有人都會sumbit code,但側重和工作量不同。
就這樣,一周這后,5個小組誕生了。所有的team每周需要參加周一的customer meeting,實際上就是每組展示每周的artifect,來模擬整個軟件開發(fā)過程,比如User Story,User Case,Database Design etc, 然后Gary逐一點評,每周三還有 Engineer All hand lab,每周都有一個學習主題,比如Version Control使用,html css,mvc design等等。每周各個team還有 team meeting 討論分工和進行code review,每周每個人要提交time card,來規(guī)劃每周的時間安排,每兩周還有peer review,給自己的組員打分,來評價每個人的貢獻,也會給自己打分,得分低的學生與自己給自己打得分和teammate給自己打分差距極大的學生,Gary會單獨發(fā)郵件溝通。經(jīng)過三個月的奮斗,終于到了最終presentation的時候。
這門課最后一共有41名學生,分為了5個小組,分別是
Team WIN ——World wide inventory management 我所在的團隊,Final Presentation 第二名,一共8個人,我的角色是Software Architect + Software Development Lead 這是我們最后的網(wǎng)站Michael Collins Jewelry Store?組長Cory在當?shù)氐囊患抑閷毜昙媛毠ぷ髁撕芏嗄?#xff0c;他現(xiàn)在的網(wǎng)站非常舊,Preview Version?而且基本沒有server side的支持,完全的靜態(tài)網(wǎng)頁,我們打算為他重新打造一個全新的系統(tǒng)。我們使用的Python Django, Mysql 和Bootstrap + Jquery
Team WTF —— Not what the fuck, is We Trader Fun 8人團隊 http://wetradefun.appspot.com/ (沒有完全向外界開放) WTF的點子我非常喜歡,他們決定做一個游戲交換的網(wǎng)站,有點像初中玩GBA那會兒去玉泉東換卡的意思,他們的網(wǎng)站使用了GiantBomb?一個Game Database 網(wǎng)站提供的api來獲得所有的游戲信息,你可以搜索所有的游戲信息,然后加入wishlist,然后你可以把你手頭閑置的游戲加入到offer list,當有其他人對你的游戲感興趣他們會給出offer,你則需要從眾多offer中選出一個最喜歡的,然后和他交換。 同樣使用的Python Django Mysql 和Bootstrap + Jquery
Team OCD —— Over Clocked Developers , 9人團隊 這是他們的最后網(wǎng)站BuyBox?Final Presentation第一名的團隊,他們開發(fā)了Buybox網(wǎng)站,類似于一個微型的二手市場,你可以將自己閑置的,想賣的東西發(fā)布到上面,感興趣的買家可以直接給你打款,最大的feature是和社交網(wǎng)絡,二維碼的結合。 用戶發(fā)布東西后,可以打印出帶有二維碼的傳單,在學校里散發(fā),當用戶掃描二維碼后,可以跳轉到buybox的網(wǎng)站,而且他們的結賬系統(tǒng)非常直接簡單,和itunes類似,首先設置后信用卡信息,然后每次決定購買時,一步了當,簡單明了,系統(tǒng)非常易于上手,前端的界面也是經(jīng)過細心雕琢,也適配移動終端。他們下一步打算在UCSD嘗試讓大家使用,很有可能作為創(chuàng)業(yè)的項目。 他們的團隊也是強手云集,Team member,product manager是HP的工程師,大四學生,一個ruby on rail高手,Quality Assurance Lead是管理科學專業(yè),cs minor,他策劃的所有商業(yè)方案,并打算明天以他們的網(wǎng)站去做business課程的final presentation。 他們的database specialist 和software architect分別是Carefusion 和 Northrop Grumman的軟件實習生,另外一名db specialist是graduate student,ruby高手。兩名女生是ui design,每個人都投入了大量的時間和精力在這個項目上,其中一個ui女生和我一開始上cse135課,本來我想和她組隊做cs135的項目,但后來她drop了,說要投入精力在她們的網(wǎng)站。 他們使用Ruby on Rails +Mysql + Bootstrap,使用Heroku作為hosting platform
Team WAIT – Wonderful Amazing Inventory Tracking, 他們也有一個真實客戶,其中一個組員的媽媽是一個賣眼鏡的公司的CIO,他們需要一個Inventory Tracking system來跟蹤所有的貨物,但因為他們使用的非常過時的數(shù)據(jù)庫,但希望逐步切換到新的技術,于是WAIT team創(chuàng)建了一個Inventory Tracking Website,幫助他們的客戶來做這個過渡,功能很強大,可以上傳excel表格,并轉換格式,呈現(xiàn)在網(wǎng)站上,并能在google map上跟蹤所有seller信息,他們的客戶非常滿意,并打算讓他們繼續(xù)做下去,他們很有可能把系統(tǒng)作為產(chǎn)品,買給這個公司。
用的技術同樣是Python Django + Mysql + Bootstrap,Jquery
Team SOL – Software Optimization Logistics 7人團隊,做的類似于OCD,也是一個小型的電商系統(tǒng),但沒有很多的創(chuàng)新點,也沒有很吸引眼球的feature,SOL Website?可以看到他們所有的Artifect,但網(wǎng)站的server?SOL Team?無法訪問。 他們最大的亮點是他們的Artifect,所有的文檔都是以網(wǎng)頁的形式發(fā)布到網(wǎng)上,他們的一個組員是php大牛,寫了一個工具來管理這些文檔,我是非常佩服。 他們用的技術是Jsp + Mysql + Bootstrap,Jquery
雖然最后大家投票,我們組排名第二,但我自己認為第一當之無愧是OCD,第二是WTF,第三是WAIT,我們排第四,因為論UI,我覺得我們做的一般,網(wǎng)站的功能也非常簡單,實現(xiàn)的也是中規(guī)中矩的小型電商網(wǎng)站,而WTF有非常好的商業(yè)方案和功能實現(xiàn),如果上線,感覺會發(fā)展很快。 WAIT沒有絢麗的UI,但很樸實,為它們的客戶提供最好的解決方案,專注解決問題。
在UCSD 的這個quarter感觸最深的就是這門課,和我在北郵上過的課徹底不同,Gary上課基本不怎么講太細的理論,他在Xerox和SAIC工作了有20多年,是一個Senior Software Engineer,UCSD的本科和研究生,退休后回到UCSD做全職Lecturer,他第一節(jié)課就說,
I hate teaching Software Engineering, Because you can’t learn it unless you actually do it, so I have no idea how to teach at all.
所以真正的課堂就比較奇葩,一般上來他就講他工作時的一些故事,講他身邊的奇葩工程師,特別二逼的manager,特別照顧他的mentor等等,然后就開始講Head First Design Pattern,用了三周時間過完了一本書,有用了兩周時間過完了Head First Software Development,上課基本沒有講義,直接維基百科,無比飄逸,quiz和midterm都很簡單,甚至允許你自己出題,如果題目出的好還給你加分,但真正學東西的是當你做project的時候,和所有隊友溝通,交流,分配任務。我的隊友Brian,他也是Software Development Lead,一個Chinese,但從來不說中文,開始的兩周基本不怎么參與開發(fā),第一次peer review結束后,被Gary單獨聯(lián)系后,開始輸出,但往往不能令人十分滿意的完成任務,總是給你殘缺的東西,然后自己去忙別的,我們的manager cory很負責,他是Cognitive Science的學生,修了Cs的minor,非常喜歡Game Industry,打算以后去暴雪工作做game desiger,Ryan是我們的UI Specialist,非常負責,獨自完成了很多design的任務,Josh是Quality Assurance Expert, 這個周末連續(xù)工作了兩天,測試網(wǎng)站,提出bug,編寫測試用例,非常認真,我從一開始就非常認真,投入了很多時間精力在項目上,基本每個周末都在lab里coding,我寫了80%的后端系統(tǒng),和很多前端的頁面,我的隊友也很信任我,認可我的貢獻,兩次peer review都給了我滿分,對于整個team,最大的問題是能夠輸出代碼的人太少,包括我也是參考著一本Python電子商務實戰(zhàn)的書在寫,我雖然學過一段時間python,在微軟實習的時候也做的web development,但因為對Django不熟,很難完全自己實現(xiàn)一個模塊,更何況我的隊友了,Steven更偏向硬件,而且手還骨折了,平時所有的文檔formatting都交給他,也很難輸出,樂哥修了四門課,也沒時間精力。好在最后系統(tǒng)成功上線,雖然在交付前有很多bug要調(diào),但畢竟是一個完整的項目,雖然沒有OCD的Buybox那么牛逼,但畢竟人家是全員參與,而且很多有經(jīng)驗的developer,我們能拿第二已經(jīng)很欣慰了。
昨天去聽了UCSD在Facebook的實習生的經(jīng)驗交流會,印象最深的就是Facebook不管你的學歷和學校或著gpa,他們找的是對互聯(lián)網(wǎng)有極高熱情且聰明的人,有了熱情和興趣,你便愿意投入時間和精力去做某件事,而聰明的人能更快的掌握工具,更短的學習周期和更好的學習效果,加快完成的時間
經(jīng)過一個學期的項目,有太多的東西要學,html css js還有后端的技術,包括數(shù)據(jù)庫,回國后要靜下心來認真學了。下周final week,快回國了! 爭取再找份實習 加油少年!
Posted in?Uncategorized |?9?Replies
----
回憶學習:
美國的大學教育和中國的區(qū)別很大,就計算機科學專業(yè)來說,來了以后能強烈的感受到這邊對實踐的重視,比如我這學期的java課,總共有180多學生,編程作業(yè)占了40%的分數(shù),每天機房都會有好幾個tutor和 Teaching Assistant 幫忙答疑解惑,可別小瞧這些 TA 和tutor,很多都是 Google 或者 Facebook的實習生,在 UCSD, ?TA 和tutor的制度非常完善,在全美也是數(shù)一數(shù)二的,前段時間有機會和老師聊了聊天,他說他們花了很多時間和精力在 tutor和 TA 計劃上,每年都有大量的優(yōu)秀高年級本科生被招募作為低年級學生的 TA 和tutor,他們每周有一定的work time,每個quarter會拿到computer science and engineering department給他們的工資,而且加州的這些大公司比如Facebook,Google,傾向于要UCSD有 TA 或者tutor經(jīng)歷的同學,因為他們了解UCSD的這個傳統(tǒng),tutor和 TA都是優(yōu)秀的同學,而且在tutoring的過程中,他們也學到了很多如何和人打交道,如何換位思考,這些都是在大公司的團隊工作時必不可少的。另外這邊的美國學生都很勤奮,努力,我的軟件工程課是一個團隊項目,我們的團隊有8名同學,絕大部分是美國學生,和他們做project的這三個月來感觸也很多,他們會為了一個界面的細節(jié)和你爭論到臉紅耳赤,也會因為自己的一個錯誤一再向你道歉,會為了趕進度在周末主動熬夜,有太多的細節(jié)和難忘的回憶。
總結
以上是生活随笔為你收集整理的软件工程资料 - 优秀的大学怎么教程序开发和软件工程课的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机应用基础教材6,全国2013年自考
- 下一篇: 如何在matlab里输入复杂公式_在MA