(转)日行千里,不止于足下——软件工程实践教学 - 构建之法

2023-11-02 15:10

本文主要是介绍(转)日行千里,不止于足下——软件工程实践教学 - 构建之法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:福州⼤学 汪璟玢⽼师

汪老师:每次都向前推进一点点,哪怕只有一点点,也好过什么都不做。

​邹老师:对,几个学期下来,就已经超过那些“空想”的团队很远了。坚持下去!

汪老师:团队Git现场编程实战。

邹老师:这个效果很好,建议在更早的时间让学生实践。

汪老师:敢于选实践的同学差不多理论班级三分一(今年理论人数暴多是意外)。在理论课中有的知识点讲完,习惯性的说:“选实践的同学就有体会啦~”

邹老师:在企业面试的时候就更有体会啦!

日行千里,不止于足下

不觉中,软件工程实践课采用《构建之法》提倡的“做中学”方法已经有7个年头,师生交流的平台由博客园,更换至CSDN教学社区也是第二年。相比于去年对CSDN教学社区的不熟练,今年我们教学团队对教学社区了解更多,感谢CSDN技术团队对我们提出各种教学需求的配合,还提供了一系列的鼓励和资助,这里一并感谢!

本轮教学一点总结:
 

一、坚持结合时事,设计系列从浅入深的作业


这几年我们延续构建四次连续性强、难度逐级递增的时事类编程作业,每次实践作业所锻炼的专业能力各不相同,但是将几次作业前后贯穿起来,就能够全面提升学生解决复杂工程问题的能力:

  1. 个人作业:要求学生在教师提供某时事数据的前提下,完成文件读入和数据显示,目的在于编码练习和对GitCode熟悉和使用;
  2. 结对作业初级:设计并实现某时事背景可视化原型设计,目的在于训练原型工具选择能力、自学能力和设计能力;
  3. 结对作业进阶:实现结对作业初级部分(给定)原型功能,目的在于训练结对合作能力、GitCode协作调试技术和代码编程能力;
  4. GitCode实战作业:团队在一天内实现一个时事背景相关的小系统,并完成文档撰写,目的在于训练团队合作能力、GitCode联调能力和代码编程能力。

今年我们结合的是澳网赛事。
第一次作业的问题很简单,针对助教提供的澳网数据文件,设计读写程序,并将读到的结果显示出来。这个简单的背景,训练学生对问题的分析能力、设计能力。作业中还设计了进阶的要求:对已完成的程序进行性能分析,检查在高压环境下程序的性能,并提出优化方案。这个要求训练了学生的优化设计能力,同时也让学生提前了解单元测试相关的内容,为和后续课程学习做好铺垫。此外,本次作业要求以博客方式发布,训练了学生沟通写作能力和对GitCode环境的使用。
第二次作业要求同学们结对,在协作的前提下,完成澳网赛事信息发布网站的原型设计。本次作业问题比第一次复杂,要求学生运用所学的需求分析知识,自学原型工具,在实践过程中体会需求表达的作用。同时训练了学生的分析问题能力、设计能力和初步的团队协作能力
第三次作业是对前一次的进阶,通过本次作业,让学生完成从产品设计到产品实现的转换。重点训练学生的协作能力、沟通能力、分析问题能力和设计能力
第四次作业任务比起前三次更为综合,要求团队(本次作业之前,同学们已经组成项目开发团队)在一天内开发一个澳网竞猜平台。通过这次强度较大的协作开发,要求团队成员密切协作,共同努力完成目标。这有助于增强团队的凝聚力和合作能力。通过设定明确的时间目标,团队被迫在有限的时间内完成特定任务,从而避免拖延和无效的时间管理,训练项目管理能力。同样还训练了问题分析能力、设计能力。

二、延续学长助教机制,保障助教团队建设


本轮教学的助教团队依然来自前一轮教学中优秀、主动报名参与的学生。我们认为这个机制是比较符合学校校情,同时学长了解同学们会遇到的困难,容易与学生产生共情,学生也会比较愿意找学长问问题。但是如果全部都是本校学长作为助教,也会有可能产生讲情现象,难免影响评分的客观性。本轮教学补充了一些来自外校的研究生助教,来消除这方面的隐患。从实施的效果上看,二者相辅相成:本校学长助教熟悉教师的教学节奏和同学们的困难之处,能够对老师和同学的要求快速呼应;来自外校的研究生助教能够很好的把握评价尺度,做到公平客观。希望下一轮教学,依然能够以此方式组建助教团队。

三、历次作业中涉及各个课程目标的分值,应作出适当调整


有多次作业中均涉及沟通和协作能力方面的分值,从这几轮教学结果上看,应有所调整,适当降低,以突出对学生分析和设计能力的评价。在下一轮教学中,我们将做一些探索。

四、团队规模的思考


这两轮教学,平均团队人数基本在10人,这样就会导致团队内部成员贡献度相差无几,难以有效区分成员的真实贡献:例如一个10人团队,平均贡献度为10%。某成员做事较少,组长给定了一个较低的贡献度3%,一位贡献较多成员给定了15%。从结果上看,二者的分值无法拉开很大差距--这样对于实际付出较多时间的学生来说是不公平的。当然,如果团队人数能减少到5人,那么在平均贡献度20%的情况下,多做者有可能拿到30%的贡献度,少作者可能依然只能拿到3%贡献度,那么二者的差距将达到27%!可见,控制团队人数是比较有效的手段。但是在目前班级总人数较多的情况下,势必造成小组数量太多,造成助教工作量激增。因此团队人数应控制在一个什么数量比较合理,在下一轮教学中,我们将进行探索。

五、保持开放


本学期初一场席卷世界的ChatGPT讨论就在构建之法群里展开讨论,邹欣老师推荐文章引发了同学们的思考。在小组选题中,有的小组敏锐地捕获到这个契机,提出了结合ChatGPT的选题YACW;有的同学把自己操作ChatGPT的心得写成技术博客......软件工程这个学科的特点使得软件工程师不能停滞不前、不能闭门造车,要训练同学们开放的心态,对新知识、新技术、新事物关注学习的心态。此外,他山之石可以攻玉,其他院校的经验也值得我们学习。来自北航大二学生对于第一单元作业的总结很值得思索,教师团队及时推荐给同学们,引导大家讨论。
本学期恰逢疫情放开后,时隔6年,邹欣老师一行到走进福州大学,给福大学子做了题为CSDN进福大--AI大潮下的软件教育与开发讲座:

引发同学们思索在AI浪潮下自己的学习方法、未来工作定位。如此,训练学生养成一个开放心态、虚心学习的心态,将对他们的未来成长大有裨益。

六、本学期获奖者

领骑者奖品

获奖的同学们!

第一次领骑者:222000434杨蕊蘭 、222000322许影杰、222000234张程越、222000323岳晓涵、222000332吴笛

第二次领骑者:222000329甘佳欣、222000407胡彦杰、222000201鲍仁俊、222000321熊中伟、222000433罗彤

第三次领骑者:222000131魏诗卉、222000331林玥利、062000224刘泓、222000334郑慧铃、222000228黄雨洁

CSDN大礼包!

熊中伟同学总成绩第一,获得大礼包!~

感谢

感谢本学期兢兢业业、辛苦付出的助教团队张富源、张思锐、张书旖、吴雨薇、郭渊伟。时光荏苒,转瞬间我们一同踏上软件工程实践之旅的征程已至终点。在这段不平凡的时光里,我们一同探索、奋斗,汗水和智慧交织,铸就了珍贵的回忆。这门课程不仅仅是知识的传递,更是思维的启迪,激发了你们对编码世界的无限热爱和探索精神。从最初的迷茫和摸索,到如今的自信和成长,你们展现出了不懈的努力和坚韧的毅力,以及在解决问题时的锐利思考和团队协作的智慧。

在软件工程的实践课程中,我们仿佛踏上了一段精彩而征程。从课程的一开始,我们秉持着“越努力,越幸运”的信念,一同踏上了知识的探索之旅。正如“学有所获,感悟满载”,我们在这段旅程中不仅积累了丰富的知识与经验,更是领悟到了知识的真正价值。每一次的编码、每一次的调试,都是你们向目标迈进的证明。从最初的一无所知到如今的信心满满,我们跨足了“The End, The Beginning”的分界线,这不是结束,而是新的起点。这段旅程虽然暂时落下帷幕,却正如“日行千里,不止于足下”,是我们追求卓越的开端。愿你们在未来的道路上,继续勇往直前,创造属于自己的辉煌!

本学期教学安排和优秀作业

序号起止时间实践习题覆盖课程目标优秀作业博客
11.14-2.16准备篇--技术路线1帅帅喵 、222000234张程越、 222000332昊笛
22.17-3.3个人热身--文件读取1、2、3222000434杨蕊蘭、 222000132许依红、 222000234张程越、 222000332昊笛
33.4-3.10结对作业第一次--原型设计2、3、5、6222000322许影杰、 222000334郑慧铃、 222000332吴笛 、222000434杨蕊蘭
43.11-3.16团队作业第一次—种子队选拔和团队展示1、7从0到1队、 深藏blue
53.17-3.24结对作业第二次——编码实现2、4、5、6222000434杨蕊蘭、 222000329甘佳欣
63.26-3.31团队作业第二次--需求分析2、5、6、7从0到1队、 机房捍卫者队
74.2-4.7个人作业--软件评测4、5222000228黄雨洁 、Mark Polo
84.9-4.14团队作业第三次—概要设计和数据库设计3、4、5、6、7从0到1队、机房捍卫者队
94.22-4.24团队作业第四次—团队协作编程实战总结2、3、4、5、6机房捍卫者队、 深藏blue
104.22-5.5团队作业第五次—站立式会议+alpha冲刺3、6、7青屿送词队、 从0到1队
115.30-6.16团队作业第六次—Beta冲刺+事后诸葛亮4、6、7机房捍卫者队、青屿送词队
126.17-6.21个人作业—个人总结+项目总结1、4、5052006133熊鹏程、062000224刘泓、222000201鲍仁俊

往届的教学安排和总结:

2022年春软件工程实践课程安排  总结
2021年春软件工程实践课程安排  总结
2020年春软件工程实践课程安排  总结
2019年春软件工程实践课程安排  总结
2018年秋软件工程实践课程安排  总结
2017年秋软件工程实践课程安排  总结

汪老师负责的CSDN软工教学社区

https://bbs.csdn.net/forums/weixin_53785144-01

汪老师的教学博客(博客园)

https://www.cnblogs.com/cocoSE/

历届优秀助教的博客

2019春 软件工程实践 大史
2019春 软件工程实践 Eventide
2019春 软件工程实践 sinceway
2019秋 软件工程实践 衡与墨
2021春 软件工程实践 Grey Zeng
2021春 软件工程实践 Kofyou

历届个人小黄衫得主

2021春W班

不到65kg不改名  /  吴铠嘉

​​

王炜嘉

​​

 WiLLyy

​​

Aurora

​​

张思萍

​​

 CLH029

​​

 潘紫盈

​​

YukioLee

​​

2020春W班

theTuring

​​

sillyby

​​

潘晨宇

​​

hxd1017

​​

herokilito

​​

cy221701116

​​

ybn-juan

​​

  viridianfairy

​​

2019年春软件工程

衡与墨

​​

XRK

​​

chenyuu

​​

陈迎仁

​​

汪老师所在班级-班级博客

  • 2021春软件工程实践|W班

  • 2020春|W班

  • 2019秋福大软件工程实践Z班

  • 构建之法助教园地

  • 软件工程1916|W

  • 高级软件工程2018

  • 福州大学软件工程1816 | W班

  • 北航暑期软工培训

  • 高级软件工程2017

  • 福州大学软工1715 | W

这篇关于(转)日行千里,不止于足下——软件工程实践教学 - 构建之法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/331461

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用C++实现单链表的操作与实践

《使用C++实现单链表的操作与实践》在程序设计中,链表是一种常见的数据结构,特别是在动态数据管理、频繁插入和删除元素的场景中,链表相比于数组,具有更高的灵活性和高效性,尤其是在需要频繁修改数据结构的应... 目录一、单链表的基本概念二、单链表类的设计1. 节点的定义2. 链表的类定义三、单链表的操作实现四、

nginx-rtmp-module构建流媒体直播服务器实战指南

《nginx-rtmp-module构建流媒体直播服务器实战指南》本文主要介绍了nginx-rtmp-module构建流媒体直播服务器实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. RTMP协议介绍与应用RTMP协议的原理RTMP协议的应用RTMP与现代流媒体技术的关系2

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬