Calendrical calculations
Agile Software Development: Principles, Patterns, and Practices
Agile Software Development: Principles, Patterns, and Practices
Designing Pascal Solutions: Case Studies Using Data Structures
Designing Pascal Solutions: Case Studies Using Data Structures
Concrete Mathematics: A Foundation for Computer Science
Concrete Mathematics: A Foundation for Computer Science
On varying perspectives of problem decomposition
SIGCSE '02 Proceedings of the 33rd SIGCSE technical symposium on Computer science education
Head First Design Patterns
Is abstraction the key to computing?
Communications of the ACM
Reflections on teaching abstraction and other soft ideas
ACM SIGCSE Bulletin
A systematic approach to teaching abstraction and mathematical modeling
Proceedings of the 17th ACM annual conference on Innovation and technology in computer science education
Hi-index | 0.00 |
This paper discusses a learning exercise we use in our beginning programming classes to introduce students to the concepts of abstraction and decomposition. The assignment is to write a perpetual calendar generation program: given a month and a year the program will display the correct monthly calendar. The learning goals of the exercise include how to decompose a large problem into smaller pieces and how to specify what each piece needs to do. This exercise helps students learn the process of incremental and iterative development. More than the actual solution, the value of this exercise is in the several themes of software development that are discussed during its development. We have successfully used this assignment for several years in a variety of CS1/CS2 programming environments (Pascal, C, Java and .net) and also as a Java servlet based web application exercise. Over this period, the case-study has received very favorable feedback from students as to its interestingness and pedagogical value.