软件工程资料 - 优秀的大学怎么教程序开发和软件工程课

他山之石,可以攻玉

世界上很多大学都有不错的教学方法, 例如我们曾经的助教总结他在国外的学习经历,可以看出老师和学校对于如何教好课是花了心思, 有很多投入的。

      一门课怎么上: https://zhuanlan.zhihu.com/p/20610349

   怎么设计长期好用的 教学系统

另外,在2012年,我们上软件工程课的过程中,收集到交换到 UCSD 同学写的这个博客,也贴在这里作为学习资料。 原网站 (http://www.arc-trooper.com)已经不存在,这是一个备份。

----------------- 以下是转载备份 ---------------------------

UCSD CS110 Final Presentation后的感想

项目源代码 ecomstore@github 项目进行过程中的所有文档现在仍在修订,学期结束后会放上来

_____________________________

刚刚结束了在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人的团队,作为公司的一部分,这个学期的主题是电子商务,但没有限定的方案或形式,所以团队可以自己做决定,没有要求实现技术,完全自己决定。

所有组员都有明确的角色分工

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的这三个月来感触也很多,他们会为了一个界面的细节和你争论到脸红耳赤,也会因为自己的一个错误一再向你道歉,会为了赶进度在周末主动熬夜,有太多的细节和难忘的回忆。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第二届构建之法论坛预告(草案)

(草案) 时间:2018年7月初 (暂定 7/9 - 7/11) 地点: 北京航空航天大学 活动:为期三天的软件工程教案设计培训和软件专业教育方法的讨论 时间内容工具备注第一天上午 1. 论坛主题演讲 “构建之法教学改进” 构建之法的教学是如何演进到目前的形态的&#x…

AI应用开发实战系列之一: 从零开始配置环境

AI应用开发实战 - 从零开始配置环境 与本篇配套的视频教程请访问:https://www.bilibili.com/video/av24421492/ 零、前提条件 一台能联网的电脑,使用win10 64位操作系统请确保鼠标、键盘、显示器都是好的 建议和反馈,请发送到 https://g…

usb连接不上 艾德克斯电源_第十二届(深圳)新能源汽车核心电源技术研讨会成功举办...

2019年4月26日,由大比特主办的第十二届(深圳)新能源汽车核心电源技术研讨会在深圳登喜路国际大酒店成功举办。本次会议受到了法雷奥、长安铁雪龙、比亚迪、蔚来汽车、麦格米特、科陆电子、欣锐、英威腾、晶福源、英可瑞、瀚美特、航嘉驰源、核达中远通、永联、优优绿…

AI应用开发实战系列之二:从零开始搭建macOS开发环境

AI应用开发实战 - 从零开始搭建macOS开发环境 本视频配套的视频教程请访问:https://www.bilibili.com/video/av24368929/ 零、前提条件 一台能联网的电脑,使用macOS操作系统请确保鼠标、键盘、显示器都是好的 建议和反馈,请发送到 https…

安卓能硬改的手机机型_手机后盖材质,金属比塑料的好,玻璃比金属的好,是这样么?...

从2000年至今,18年手机发生了巨大变化到现在,人们不再唯性能至上屏幕、拍照、材质、工艺等等也成了人们选购手机的标准手机后盖材质的发展史很好的见证了人们喜好的变化接下来我们来看手机后盖材质的演变史从手机的创造到手机的普及作为一个材料人我们经…

AI应用开发实战系列之三:手写识别应用入门

AI应用开发实战 - 手写识别应用入门 手写体识别的应用已经非常流行了,如输入法,图片中的文字识别等。但对于大多数开发人员来说,如何实现这样的一个应用,还是会感觉无从下手。本文从简单的MNIST训练出来的模型开始,和…

重力加速度换算_中考物理重难点汇总——公式换算大全

初中物理中最重要的部分就是公式了,在这之中公式的换算可以说是一个难点,也是一个重点。力学部分一、速度公式火车过桥(洞)时通过的路程s=L桥+L车声音在空气中的传播速度为340m/s 光在空气中的传播速度为3108m/s二、密度公式(ρ水…

[人工智能教程] 人工智能暑期课实践项目建议

哈工大人工智能暑期课实践项目建议 这个博客介绍了暑期课实践作业的建议。 时间:7/10 - 7/22. 一周上课, 一周项目实践。 要求:项目实践的过程请用公开的博客记录。 项目的源代码请放到 github 中。 每4 ~ 5 人一个小组,从下…

新手一小时就写出人工智能应用 - 看图识熊

来不及了,先上车: 人工智能开发案例 熊的分类 如何安装必要的工具并配置环境呢,请看这个详细的解说 今后会有更详细的文字版在这个专题出现。 如果有对这个教程有疑问,请在这里留言。

c++ 线性回归_模型之母:简单线性回归的代码实现

模型之母:简单线性回归的代码实现关于作者:饼干同学,某人工智能公司交付开发工程师/建模科学家。专注于AI工程化及场景落地,希望和大家分享成长中的专业知识与思考感悟。0x00 前言 在《模型之母:简单线性回归&最小…

AI应用开发实战系列之四 - 定制化视觉服务的使用

AI应用开发实战 - 定制化视觉服务的使用 本篇教程的目标是学会使用定制化视觉服务,并能在UWP应用中集成定制化视觉服务模型。 前一篇:AI应用开发实战 - 手写识别应用入门 建议和反馈,请发送到 https://github.com/Microsoft/vs-tools-for-…

server sql 众数_sql 语句系列(众数中位数与百分比)[八百章之第十五章]

众数众数就是出现最多的那个数。select sal,count(*) as cntfrom empwhere DEPTNO20group by sal通过分组把他们的行数计算出来。那么最关键的部分在于,你如何知道最大值。是的我们可以查出当前最大值,然后再取出最大值的sal。但是这肯定要用到两个临时视…

【干货】快速部署微软开源GPU管理利器: OpenPAI

介绍 不管是机器学习的老手,还是入门的新人,都应该装备上尽可能强大的算力。除此之外,还要压榨出硬件的所有潜力来加快模型训练。OpenPAI作为GPU管理的利器,不管是一块GPU,还是上千块GPU,都能够做好调度&a…

python调用ansysworkbench_Workbench通过Python设定材料参数

微信公众号:CAE技术分享以下一段代码是在Workbench中通过Python设定材料的弹性模量和泊松比参数:# encoding: utf-8# Release 16.0SetScriptVersion(Version"16.0.361")template1 GetTemplate(TemplateName"EngData")system1 temp…

现代软件工程 结对/团队作业 - 汉字的 2048 + 俄罗斯方块

一个很有趣的软件工程/编程作业,如果把汉字构成的规律运用在 2048 俄罗斯方块这样的游戏中,会有什么效果呢? (链接1, 链接2) 既然是软件工程的作业, 那就要体现出一些工程的特性: 作业要求: 1) 学生自行…

invoke 按钮点击_h5+ app内点击按钮实现复制功能 实现方法

在项目中由于要实现点击按钮复制功能,我用的是H5APP,实现代码如下(包括安卓IOS):/*** //参数copy是要复制的文本内容* tip 复制成功后的提示语,可空*/function copy_fun(copy,tips) {if(!tips){tips"已成功复制到剪贴板"…

机器学习平台建设

本文从机器学习平台的架构开始,再到具体的功能,然后从需求的角度带给读者思考,找到合适的机器学习平台建设之路。最后,推荐了微软开源开放的机器学习平台OpenPAI,是可私有部署的机器学习训练平台。 本文不少要点都可以…

型管件的作用_管道工程基础 - 管件和管道附件的布置规定

概述1.1 管件的用途1.2 管件的种类根据管件的端部连接形式可将管件分为对焊连接管件、承插焊连接管件、螺纹连接管件、法兰连接管件以及其它管件。管件和管道附件的布置2.1管件的布置(1)弯头宜选用曲率半径等于1.5倍公称直径的长半径弯头;输送气固、液固两相流物料的…

现代软件工程 作业汇总

文档属于这个专栏: ​​​​​​现代软件工程讲义 目录_SoftwareTeacher的博客-CSDN博客 备份:现代软件工程课程 参考:各个学校的编程/软工作业列表 ------- 软件工程的作业 ------- 很多老师反映软件工程的作业题不好出,学生做的…

现代软件工程 作业 第一周博客作业

(软件工程作业汇总) 第一周的博客作业 (这是历届学生的练习中, 从各个老师的作业中汇集而来,特别是北航的作业,东北师大的作业) 1. 介绍自己,建博客 在 http://www.csdn.net 建账号。关注老师和助教,关注一些和你一起…