軟件工程資料 - 優秀的大學怎麼教程序開發和軟件工程課

他山之石,能夠攻玉php

世界上不少大學都有不錯的教學方法, 例如咱們曾經的助教總結他在國外的學習經歷,能夠看出老師和學校對於如何教好課是花了心思, 有不少投入的。css

      一門課怎麼上: https://zhuanlan.zhihu.com/p/20610349html

   怎麼設計長期好用的 教學系統前端

 

 

另外,在2012年,咱們上軟件工程課的過程當中,收集到交換到 UCSD 同窗寫的這個博客,也貼在這裏做爲學習資料。 原網站 (http://www.arc-trooper.com)已經不存在,這是一個備份。java

----------------- 如下是轉載備份 ---------------------------python

UCSD CS110 Final Presentation後的感想

項目源代碼 ecomstore@github 項目進行過程當中的全部文檔如今仍在修訂,學期結束後會放上來git

_____________________________github

剛剛結束了在ucsd上的cse110 軟件工程的 final presentation。 感觸不少,想和你們分享一下。web

首先介紹一下這門課的形式,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。sql

課程開始時,Gary向咱們介紹了這門課的形式,因此學生組隊,8~9人的團隊,做爲公司的一部分,這個學期的主題是電子商務,但沒有限定的方案或形式,因此團隊能夠本身作決定,沒有要求實現技術,徹底本身決定。

全部組員都有明確的角色分工

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.

 

每一個人根據本身擅長的技術或興趣選擇職位,全部人都會sumbit code,但側重和工做量不一樣。

就這樣,一週這後,5個小組誕生了。全部的team每週須要參加週一的customer meeting,實際上就是每組展現每週的artifect,來模擬整個軟件開發過程,好比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,來規劃每週的時間安排,每兩週還有peer review,給本身的組員打分,來評價每一個人的貢獻,也會給本身打分,得分低的學生與本身給本身打得分和teammate給本身打分差距極大的學生,Gary會單獨發郵件溝通。通過三個月的奮鬥,終於到了最終presentation的時候。

 

這門課最後一共有41名學生,分爲了5個小組,分別是

Team WIN ——World wide inventory management 我所在的團隊,Final Presentation 第二名,一共8我的,個人角色是Software Architect + Software Development Lead 這是咱們最後的網站Michael Collins Jewelry Store 組長Cory在當地的一家珠寶店兼職工做了不少年,他如今的網站很是舊,Preview Version 並且基本沒有server side的支持,徹底的靜態網頁,咱們打算爲他從新打造一個全新的系統。咱們使用的Python Django, Mysql 和Bootstrap + Jquery

Team WTF —— Not what the fuck, is We Trader Fun 8人團隊 http://wetradefun.appspot.com/ (沒有徹底向外界開放) WTF的點子我很是喜歡,他們決定作一個遊戲交換的網站,有點像初中玩GBA那會兒去玉泉東換卡的意思,他們的網站使用了GiantBomb 一個Game Database 網站提供的api來得到全部的遊戲信息,你能夠搜索全部的遊戲信息,而後加入wishlist,而後你能夠把你手頭閒置的遊戲加入到offer list,當有其餘人對你的遊戲感興趣他們會給出offer,你則須要從衆多offer中選出一個最喜歡的,而後和他交換。 一樣使用的Python Django Mysql 和Bootstrap + Jquery

Team OCD —— Over Clocked Developers , 9人團隊 這是他們的最後網站BuyBox Final Presentation第一名的團隊,他們開發了Buybox網站,相似於一個微型的二手市場,你能夠將本身閒置的,想賣的東西發佈到上面,感興趣的買家能夠直接給你打款,最大的feature是和社交網絡,二維碼的結合。 用戶發佈東西后,能夠打印出帶有二維碼的傳單,在學校裏散發,當用戶掃描二維碼後,能夠跳轉到buybox的網站,並且他們的結帳系統很是直接簡單,和itunes相似,首先設置後信用卡信息,而後每次決定購買時,一步了當,簡單明瞭,系統很是易於上手,前端的界面也是通過細心雕琢,也適配移動終端。他們下一步打算在UCSD嘗試讓你們使用,頗有可能做爲創業的項目。 他們的團隊也是強手雲集,Team member,product manager是HP的工程師,大四學生,一個ruby on rail高手,Quality Assurance Lead是管理科學專業,cs minor,他策劃的全部商業方案,並打算明天以他們的網站去作business課程的final presentation。 他們的database specialist 和software architect分別是Carefusion 和 Northrop Grumman的軟件實習生,另一名db specialist是graduate student,ruby高手。兩名女生是ui design,每一個人都投入了大量的時間和精力在這個項目上,其中一個ui女生和我一開始上cse135課,原本我想和她組隊作cs135的項目,但後來她drop了,說要投入精力在她們的網站。 他們使用Ruby on Rails +Mysql + Bootstrap,使用Heroku做爲hosting platform

Team WAIT – Wonderful Amazing Inventory Tracking, 他們也有一個真實客戶,其中一個組員的媽媽是一個賣眼鏡的公司的CIO,他們須要一個Inventory Tracking system來跟蹤全部的貨物,但由於他們使用的很是過期的數據庫,但但願逐步切換到新的技術,因而WAIT team建立了一個Inventory Tracking Website,幫助他們的客戶來作這個過渡,功能很強大,能夠上傳excel表格,並轉換格式,呈如今網站上,並能在google map上跟蹤全部seller信息,他們的客戶很是滿意,並打算讓他們繼續作下去,他們頗有可能把系統做爲產品,買給這個公司。

用的技術一樣是Python Django + Mysql + Bootstrap,Jquery

Team SOL – Software Optimization Logistics 7人團隊,作的相似於OCD,也是一個小型的電商系統,但沒有不少的創新點,也沒有很吸引眼球的feature,SOL Website 能夠看到他們全部的Artifect,但網站的server SOL Team 沒法訪問。 他們最大的亮點是他們的Artifect,全部的文檔都是以網頁的形式發佈到網上,他們的一個組員是php大牛,寫了一個工具來管理這些文檔,我是很是佩服。 他們用的技術是Jsp + Mysql + Bootstrap,Jquery

雖然最後你們投票,咱們組排名第二,但我本身認爲第一當之無愧是OCD,第二是WTF,第三是WAIT,咱們排第四,由於論UI,我以爲咱們作的通常,網站的功能也很是簡單,實現的也是中規中矩的小型電商網站,而WTF有很是好的商業方案和功能實現,若是上線,感受會發展很快。 WAIT沒有絢麗的UI,但很樸實,爲它們的客戶提供最好的解決方案,專一解決問題。

在UCSD 的這個quarter感觸最深的就是這門課,和我在北郵上過的課完全不一樣,Gary上課基本不怎麼講太細的理論,他在Xerox和SAIC工做了有20多年,是一個Senior Software Engineer,UCSD的本科和研究生,退休後回到UCSD作全職Lecturer,他第一節課就說,

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,但歷來不說中文,開始的兩週基本不怎麼參與開發,第一次peer review結束後,被Gary單獨聯繫後,開始輸出,但每每不能使人十分滿意的完成任務,老是給你殘缺的東西,而後本身去忙別的,咱們的manager cory很負責,他是Cognitive Science的學生,修了Cs的minor,很是喜歡Game Industry,打算之後去暴雪工做作game desiger,Ryan是咱們的UI Specialist,很是負責,獨自完成了不少design的任務,Josh是Quality Assurance Expert, 這個週末連續工做了兩天,測試網站,提出bug,編寫測試用例,很是認真,我從一開始就很是認真,投入了不少時間精力在項目上,基本每一個週末都在lab裏coding,我寫了80%的後端系統,和不少前端的頁面,個人隊友也很信任我,承認個人貢獻,兩次peer review都給了我滿分,對於整個team,最大的問題是可以輸出代碼的人太少,包括我也是參考着一本Python電子商務實戰的書在寫,我雖然學過一段時間python,在微軟實習的時候也作的web development,但由於對Django不熟,很難徹底本身實現一個模塊,更況且個人隊友了,Steven更偏向硬件,並且手還骨折了,平時全部的文檔formatting都交給他,也很難輸出,樂哥修了四門課,也沒時間精力。好在最後系統成功上線,雖然在交付前有不少bug要調,但畢竟是一個完整的項目,雖然沒有OCD的Buybox那麼牛逼,但畢竟人家是全員參與,並且不少有經驗的developer,咱們能拿第二已經很欣慰了。

昨天去聽了UCSD在Facebook的實習生的經驗交流會,印象最深的就是Facebook無論你的學歷和學校或着gpa,他們找的是對互聯網有極高熱情且聰明的人,有了熱情和興趣,你便願意投入時間和精力去作某件事,而聰明的人能更快的掌握工具,更短的學習週期和更好的學習效果,加快完成的時間

通過一個學期的項目,有太多的東西要學,html css js還有後端的技術,包括數據庫,回國後要靜下心來認真學了。下週final week,快回國了! 爭取再找份實習 加油少年!

Posted in Uncategorized 9 Replies

----

回憶學習:

美國的大學教育和中國的區別很大,就計算機科學專業來講,來了之後能強烈的感覺到這邊對實踐的重視,好比我這學期的java課,總共有180多學生,編程做業佔了40%的分數,天天機房都會有好幾個tutor和 Teaching Assistant 幫忙答疑解惑,可別小瞧這些 TA 和tutor,不少都是 Google 或者 Facebook的實習生,在 UCSD,  TA 和tutor的制度很是完善,在全美也是首屈一指的,前段時間有機會和老師聊了聊天,他說他們花了不少時間和精力在 tutor和 TA 計劃上,每一年都有大量的優秀高年級本科生被招募做爲低年級學生的 TA 和tutor,他們每週有必定的work time,每一個quarter會拿到computer science and engineering department給他們的工資,並且加州的這些大公司好比Facebook,Google,傾向於要UCSD有 TA 或者tutor經歷的同窗,由於他們瞭解UCSD的這個傳統,tutor和 TA都是優秀的同窗,並且在tutoring的過程當中,他們也學到了不少如何和人打交道,如何換位思考,這些都是在大公司的團隊工做時必不可少的。另外這邊的美國學生都很勤奮,努力,個人軟件工程課是一個團隊項目,咱們的團隊有8名同窗,絕大部分是美國學生,和他們作project的這三個月來感觸也不少,他們會爲了一個界面的細節和你爭論到臉紅耳赤,也會由於本身的一個錯誤一再向你道歉,會爲了趕進度在週末主動熬夜,有太多的細節和難忘的回憶。

相關文章
相關標籤/搜索