随着时间的推移,将软件工程作为编程进行教学

M. Hofbauer, Christoph Bachhuber, Christopher B. Kuhn, E. Steinbach
{"title":"随着时间的推移,将软件工程作为编程进行教学","authors":"M. Hofbauer, Christoph Bachhuber, Christopher B. Kuhn, E. Steinbach","doi":"10.1145/3528231.3528353","DOIUrl":null,"url":null,"abstract":"Programming and software engineering differ by the aspect of time and scale. Going beyond just implementing software that fulfills requirements, software engineering also means writing code that can be maintained by multiple contributors over months, years or even decades. Due to the limited time of university projects, students mainly learn to focus on writing software that works once. In in-dustry, software lifetime is longer and the aspect of time becomes highly relevant. Professional software must be readable and modular to be maintainable. In this paper, we present an experience report on a novel university course in software engineering. The course teaches the concepts of unit testing, refactoring, and automation tools to novices with basic programming experience. We present those concepts for the example of C++,but they are applicable to any programming language. Our goal is to teach students the key con-cepts of software engineering early on, giving them the opportunity to benefit from these concepts in their further projects. We present these concepts in five plenary lectures with live coding sessions, and then student teams apply the concepts in five practical homework as-signments. All assignments contribute to a single project maintained and improved by the student groups for the duration of the course. Additionally, we present a teaching tool framework that can be used to automate tasks for student project management and examinations. Finally, we discuss the lessons learned from conducting this course for the first time. We believe this course is a valuable step towards including essential software engineering skills in the education of science and engineering students.","PeriodicalId":296945,"journal":{"name":"2022 IEEE/ACM 4th International Workshop on Software Engineering Education for the Next Generation (SEENG)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"3","resultStr":"{\"title\":\"Teaching Software Engineering As Programming Over Time\",\"authors\":\"M. Hofbauer, Christoph Bachhuber, Christopher B. Kuhn, E. Steinbach\",\"doi\":\"10.1145/3528231.3528353\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Programming and software engineering differ by the aspect of time and scale. Going beyond just implementing software that fulfills requirements, software engineering also means writing code that can be maintained by multiple contributors over months, years or even decades. Due to the limited time of university projects, students mainly learn to focus on writing software that works once. In in-dustry, software lifetime is longer and the aspect of time becomes highly relevant. Professional software must be readable and modular to be maintainable. In this paper, we present an experience report on a novel university course in software engineering. The course teaches the concepts of unit testing, refactoring, and automation tools to novices with basic programming experience. We present those concepts for the example of C++,but they are applicable to any programming language. Our goal is to teach students the key con-cepts of software engineering early on, giving them the opportunity to benefit from these concepts in their further projects. We present these concepts in five plenary lectures with live coding sessions, and then student teams apply the concepts in five practical homework as-signments. All assignments contribute to a single project maintained and improved by the student groups for the duration of the course. Additionally, we present a teaching tool framework that can be used to automate tasks for student project management and examinations. Finally, we discuss the lessons learned from conducting this course for the first time. We believe this course is a valuable step towards including essential software engineering skills in the education of science and engineering students.\",\"PeriodicalId\":296945,\"journal\":{\"name\":\"2022 IEEE/ACM 4th International Workshop on Software Engineering Education for the Next Generation (SEENG)\",\"volume\":\"1 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2022-05-01\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"3\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"2022 IEEE/ACM 4th International Workshop on Software Engineering Education for the Next Generation (SEENG)\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/3528231.3528353\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"2022 IEEE/ACM 4th International Workshop on Software Engineering Education for the Next Generation (SEENG)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/3528231.3528353","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 3

摘要

编程和软件工程在时间和规模方面有所不同。除了实现满足需求的软件之外,软件工程还意味着编写可以由多个贡献者在数月、数年甚至数十年时间内维护的代码。由于大学项目的时间有限,学生主要学习专注于编写一次工作的软件。在工业中,软件的生命周期更长,时间方面变得高度相关。专业软件必须是可读的和模块化的维护。在本文中,我们提出了一种新的大学软件工程课程的经验报告。本课程向具有基本编程经验的新手教授单元测试、重构和自动化工具的概念。我们以c++为例介绍这些概念,但它们适用于任何编程语言。我们的目标是尽早教授学生软件工程的关键概念,让他们有机会在未来的项目中受益于这些概念。我们将在五次全体讲座中介绍这些概念,并进行现场编程,然后学生团队将这些概念应用于五次实际作业中。所有作业都是一个项目,由学生小组在课程期间进行维护和改进。此外,我们提出了一个教学工具框架,可用于学生项目管理和考试的自动化任务。最后,我们讨论的教训,从进行这门课程的第一次。我们相信这门课程是在理工科学生的教育中包含基本软件工程技能的有价值的一步。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
Teaching Software Engineering As Programming Over Time
Programming and software engineering differ by the aspect of time and scale. Going beyond just implementing software that fulfills requirements, software engineering also means writing code that can be maintained by multiple contributors over months, years or even decades. Due to the limited time of university projects, students mainly learn to focus on writing software that works once. In in-dustry, software lifetime is longer and the aspect of time becomes highly relevant. Professional software must be readable and modular to be maintainable. In this paper, we present an experience report on a novel university course in software engineering. The course teaches the concepts of unit testing, refactoring, and automation tools to novices with basic programming experience. We present those concepts for the example of C++,but they are applicable to any programming language. Our goal is to teach students the key con-cepts of software engineering early on, giving them the opportunity to benefit from these concepts in their further projects. We present these concepts in five plenary lectures with live coding sessions, and then student teams apply the concepts in five practical homework as-signments. All assignments contribute to a single project maintained and improved by the student groups for the duration of the course. Additionally, we present a teaching tool framework that can be used to automate tasks for student project management and examinations. Finally, we discuss the lessons learned from conducting this course for the first time. We believe this course is a valuable step towards including essential software engineering skills in the education of science and engineering students.
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信