Lifecycle in CS1: Requirements, Domain Analysis, and Implementation.

Annual Conference on Innovation and Technology in Computer Science Education (ITiCSE)(2022)

引用 1|浏览1
暂无评分
摘要
In practice, programmers start with informal requirements proposed by a customer, make the requirements precise, and implement them in a program that meets the customers needs. It is difficult for a CS1 course to convey a sense of this journey to students, since they need to understand the notional machine, technological artifacts, and the informal to formal transition at the same time. In this paper we show how to sequence the teaching of programming ideas in such a way that in a short two-month course, novice students learn to develop simple programming projects from requirements in English to a working program. We start by showing that programs are an extension of school algebra using Pugofer, a pedagogical Haskell-like language. Then we present list comprehensions, which lets us create simple programs with lists and tuples as handy "databases". Next we teach requirements analysis for information processing situations such as library management, and create programs that represent domain concepts using data, and behaviors using functions and comprehensions. Students follow this process in their own projects. We end by teaching recursion, motivating it as a way to implement comprehensions. We have taught courses in this style three times; each time students have delivered projects as well as standard CS1 exams, and rated the course highly. It has been easy to move to imperative programming in later courses. We believe that our approach can be readily replicated, giving students the benefit of experiencing key elements of the software lifecycle early in their CS education.
更多
查看译文
关键词
CS1, introductory programming, requirements elicitation, domain analysis, functional programming, software lifecycle
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要