Agile Object-oriented Software Development
Overall Course Objectives
The aim of the course is to convey the basic concepts of object-oriented programming and to enable the student to apply these concepts using common object-oriented programming languages. The student will be able to read program code and analyze the behavior of the program. In addition, the student will be able to apply contemporary agile software development practices in the context of smaller software development projects both extending existing software and developing new functionality. A focus will be put on quality assurance like automated testing and continuous integration. Moreover the student will learn to work in teams, present the work, and document it. The student will also learn to work with contemporary software development tools (e.g., IDEs, etc.)
See course description in Danish
Learning Objectives
- Explain the principles of object-oriented programming languages
- Develop software using the object-oriented principles of the introduced programming language to handle encapsulation, abstraction, inheritance, and polymorphism
- Design software using the concepts of user stories and behavior driven development
- Apply the concepts of automated testing, refactoring, and reuse of existing code and libraries
- Explain the significance of systematic debugging and be able to apply it
- Apply the concepts of version control and continuous integration
- Recognize and be able to apply a few, simple design patterns
- Explain the advantages of a selected software architecture
- Complete a multi-week software project in a team applying pair programming and covering user stories, running software, tests, and documentation
- Concisely present project iteration results (i.e., running software and other artifacts)
- Write a clear and well-structured report documenting all the core aspects of a software development project
- Manage the development of a software product in an agile team
Course Content
The course introduces a commonly used object-oriented programming language, and applies agile development methods covering the following topics:
The topics presented are:
▪ Types, primitive and referenced
▪ Basic programming constructs (loops, branching statements, etc.)
▪ Values, operators and expressions
▪ Classes, objects, fields and methods
▪ Use of libraries
▪ Design of classes, hierarchies, inheritance
▪ Abstraction (abstract classes, interfaces)
▪ Error/exception handling
▪ Simple design patterns and basic software architectures
▪ Pair programming
▪ User stories, behavior driven development, unit testing,
▪ Debugging, refactoring
▪ Version control, continuous integration
▪ Use of development tools (IDE, etc)
Recommended prerequisites
02002/02003/02631, Experience in procedural programming
Teaching Method
Lectures and exercise classes. The exercise classes involve solving smaller exercises as well as the development of a software system in teams of 4-6 students. The project work is documented by running software, tests, and reports that are included in the overall assessment of the course.