当前位置: 首页>留学申请>英国留学

留学申请

在美国读研期间的一些计算机课程作业

发布时间:2016-05-03

都说去美国读研压力大,很多学生凌晨两三点还在完成老师布置的作业,非常辛苦,而去美国大学读计算机的同学非常之多,下面我们一起来看看网友在美国读研期间的一些计算机课程作业,颇有些值得学习和借鉴的地方。


  1.面向对象课程作业,通过完整项目学习应用面向对象和设计模式

  第一学期有门课叫《Object-OrientedSoftware Development》,主要是讲面向对象和设计模式,为了帮助同学们更好的理解面向对象和设计模式,老师精心设计了一个股票交易的系统,用面向对象思想来设计实现,并且应用像FactoryFlyweightDataTransfer ObjectSingletonObserver等设计模式。当然如果你以为老师只是一个简单的需求,就指望学生们能设计出一个很好的架构并且还能应用各个设计模式,你就太高估学生们的水平了。考虑到同学们的水平参次不齐,所以老师采取了一些措施来保证最终作业质量:

  将学生分组,3个人一组,水平高的带着水平低的

  将作业分成4期,以保证每个阶段有检查点,不至于到期末突击还完不成任务。

  提供详细设计文档,细致到接口、类和方法,同学们只要按照说明实现方法即可,如下图所示:

  既然分成了四个阶段来完成,而且每个阶段都需要依赖前一个阶段的结果,那么怎么保证每个阶段的结果正确呢?老师帮助写了很多单元测试代码,要确认代码没有问题,先保证单元测试都能测试通过。

  Tradable tradable1 =null;

  Quote quote1 = null;

  System.out.println("1)Create and print the content of a valid Order using Tradable reference:");

  try {

  tradable1 = newOrder("USER1", "GE",PriceFactory.makeLimitPrice("$21.59"), 250, "BUY");

  System.out.println("Tradable'stoString: " + tradable1 + "\n");

  } catch (Exception e){

  System.out.println("Anunexpected exception occurred: " + e.getMessage());

  e.printStackTrace();

  }

  System.out.println("2)Create and print the content of a TradableDTO:");

  TradableDTO tDTO =new TradableDTO(tradable1.getProduct(), tradable1.getPrice(),tradable1.getOriginalVolume(), tradable1.getRemainingVolume(),

  tradable1.getCancelledVolume(),tradable1.getUser(), tradable1.getSide(), tradable1.isQuote(),tradable1.getId());

  System.out.println("TradableDTO'stoString: " + tDTO + "\n");... ...

  这样一个学期下来,一个股票交易系统就算是做好了,最终做出来效果还是挺不错的。

  另外,为了避免有些同学编程能力不足,或者前期发挥不好,老师还提供了额外的附加作业,这些作业可以提供附加分数,这样努力一点也能有个不错的分数。

  2程序语言概念作业,通过Git提交作业,详细的单元测试

  这学期选了一门课《PROGRAMLANGUAGE CONCEPTS》,讲各种程序语言概念的,编程语言以Scala为主,作业也是Scala语言,这门作业有几点设计的蛮好:

  统一使用git提交代码,代码托管在 Bitbucket 上面,开学初老师就让每个同学注册了一个Bitbucket账号,然后给同学们初始化好作业相关的Repository,后面的作业都通过BitBucket来提交

  每道题提供了详细的注释说明,什么该用什么不该用都写的很清楚

  提供完整单元测试代码供测试。为了确保程序正确,老师针对每个方法写了很多单元测试代码,基本上单元测试能通过就表示程序没什么问题。

  每节课开始前点评讲解上一次的作业。实际上能这么做的老师很少,但是对学生来讲,及时的反馈和点评上一次的作业非常有帮助,这样可以知道标准的做法是什么,自己为什么会错。

  3.iOS移动App开发,与时俱进,涵盖各个知识点,考试是自主开发一个完整的App

  这学期还选了一门iOS的课程,作为一个已经有多年iOS开发经验的人来说,这门课对我没什么难度,从老师的课程内容和作业设置来看,老师对iOSswift语言的发展跟进非常及时,所有的内容都基于最新的iOS 9Swift2.0展开,作业设置也比较合理。从简单的HelloWorld到稍微复杂一点的计算器,再到复杂的TableView,最后考试是自主开发一个完整的App,综合运用前面所学的知识。

  每一次作业老师的要求都很明确,包括:

  ·截止日期和提交注意事项

  ·作业的目标

  ·详细的需求说明

  ·难点提示

  在作业的设计上,比较注意难易度的梯度,前后作业的关系,一学期的作业安排如下:

  Hello World项目,没什么难度,只要输出一个HelloWorld即可,重点是搭建iOS开发所需要的环境

  使用Playground写几个简单的Swift算法,熟悉Swift语言

  实现一个简易的计算器,只要求实现加减法,进一步了解Swift语言,学会查文档,使用基本控件

  简易电视遥控器界面,相对复杂的界面,需要和数据进行绑定

  购物清单,学习文本输入框的使用

  基于第四次作业升级,实现DVR播放器界面,还要能在两个界面之间切换。主要是熟悉界面动画,应用对话框

  实现对遥控器数据的配置,同时整合电视遥控器和DVR遥控器。熟悉UITabController的使用,以及多界面之间的数据共享

  实现一个列表详情的App,应用动态列表和导航

  大作业,等于期末考试,自主命题,但是要求应用到所学的知识。

  如果要对这些作业做个简单的总结,我觉得主要还是在以下几个方面:

  1要求明确,目标清晰

  以iOS作业为例,每次作业都会清楚的说明提交的要求,作业的目标,详细的需求,还有难点的提示。

  2难度适中

  比如面向对象作业,虽然是一个很复杂的系统,但是通过组队和详细设计文档,还是能保证同学们一起完成这些项目。像iOS的期末大作业,也可以让能力比较强的同学有发挥的机会。

  3及时反馈

  有些作业,老师会提供单元测试代码,我觉得这是一个非常好的反馈方式,通过单元测试,同学们可以养成良好的喜欢,另外也不至于写出来的代码有太大偏差。另外像程序语言概念这门课老师,每节课都会讲解点评上一堂课的作业,这样可以及时的直到问题所在,及时改正。

  4严格要求

  在美国,对于抄袭是0容忍的,经常能听到有同学作弊被开除的新闻,所以基本上大家都不会有这样的想法。另外对于规定好的截止日期,如果没有按时交,当次作业的分数就会是0分。

  同时,有些课程的老师还会提供一些附加题,让犯了错误的同学也有弥补的机会。

 

在线咨询