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

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

相关文章

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

一文详解如何从零构建Spring Boot Starter并实现整合

《一文详解如何从零构建SpringBootStarter并实现整合》SpringBoot是一个开源的Java基础框架,用于创建独立、生产级的基于Spring框架的应用程序,:本文主要介绍如何从... 目录一、Spring Boot Starter的核心价值二、Starter项目创建全流程2.1 项目初始化(

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

使用Python和python-pptx构建Markdown到PowerPoint转换器

《使用Python和python-pptx构建Markdown到PowerPoint转换器》在这篇博客中,我们将深入分析一个使用Python开发的应用程序,该程序可以将Markdown文件转换为Pow... 目录引言应用概述代码结构与分析1. 类定义与初始化2. 事件处理3. Markdown 处理4. 转

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定