|
|
Module code: PIB-PR3 |
|
2V+2P (4 hours per week) |
5 |
Semester: 3 |
Mandatory course: yes |
Language of instruction:
German |
Assessment:
Project work
[updated 24.02.2018]
|
PIB-PR3 (P221-0033) Applied Informatics, Bachelor, ASPO 01.10.2022
, semester 3, mandatory course
|
60 class hours (= 45 clock hours) over a 15-week period. The total student study time is 150 hours (equivalent to 5 ECTS credits). There are therefore 105 hours available for class preparation and follow-up work and exam preparation.
|
Recommended prerequisites (modules):
PIB-PR1 Programming 1 PIB-PR2 Programming 2
[updated 13.10.2024]
|
Recommended as prerequisite for:
PIB-ASE Automated Software Development PIB-SES PIB-WEB Principles of Web Development
[updated 11.10.2024]
|
Module coordinator:
Prof. Dr.-Ing. Martin Burger |
Lecturer: Prof. Dr.-Ing. Martin Burger
[updated 28.09.2016]
|
Learning outcomes:
After successfully completing this module students will be able to: implement modern programming concepts to improve the efficiency and readability of their software. - apply the principles of the Clean Code to ensure the readability and maintainability of their code. - design object-oriented software solutions using advanced techniques and methods to implement scalable and maintainable systems. - integrate advanced libraries and frameworks into their software projects to extend their functionality. - use logging techniques to efficiently identify and correct errors in their software. - implement test automation and embed it in continuous integration to continuously ensure the quality and stability of their software. - analyze and refactor existing software in order to improve its structure and efficiency. - evaluate the quality of their software using specified test methods and make adjustments based on the results. - use modern tools for code generation and apply AI-based approaches to programming support in order to automate repetitive tasks. - regularly solve programming tasks to demonstrate their problem-solving skills and efficient application of programming concepts. - plan and implement projects in teams using agile practices to manage complex software projects.
[updated 13.11.2024]
|
Module content:
The focus will be on the application of advanced programming concepts, the improvement of software quality through refactoring and the use of modern tools and technologies in software development. The following topics will be taught based on the Java programming language and other relevant tools and consolidated through practical exercises: Advanced object-oriented programming: - Java records and pattern matching - Design patterns such as singleton, factory, observer Clean code and software quality: - Principles of clean code, including naming conventions, comments in code, method structure and simple design Refactoring and code improvements: - Refactoring to improve readability and maintainability - Support through IDEs (e.g. IntelliJ IDEA) Test automation and continuous integration: - Unit and integration tests with JUnit - Continuous integration with Maven and GitLab/Github on a shared branch Libraries and frameworks: - Google Guava for extended functionalities and data structures - jOOQ for type-safe and fluent-style SQL queries Coding katas and programming puzzles: - Periodic coding katas to deepen your programming skills - Java challenges as programming puzzles Generating program code with modern tools: - Generating code to automate recurring tasks with modern IDEs - AI-supported code generation for the creation of boilerplate code (e.g. GitHub Copilot) Logging and error diagnostics: - Logging techniques and frameworks for error diagnosis (such as SLF4J and Logback) - Using logging for diagnostics and monitoring in production systems, taking logging levels and performance aspects into account Version control and collaborative development: - Git basics: central concepts, basic commands, workflow basics - Joint work on a branch in conjunction with continuous integration Project work: - Team project lasting several weeks that integrates and deepens the content taught
[updated 13.11.2024]
|
Teaching methods/Media:
- Transparencies - Projector - Blackboard - Course-specific website
[updated 13.11.2024]
|
Recommended or required reading:
- Bloch, J. (2017). Effective Java (3rd Edition). Addison-Wesley Professional - Farley, D. (2010). Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley Professional. - Farley, D. (2021). Modern Software Engineering: Doing What Works to Build Better Software Faster. Addison-Wesley Professional. - Freeman, E. (2021). Entwurfsmuster von Kopf bis Fuß. dpunkt. - Inden, M. (2020). Java Challenge. dpunkt. - Martin, R. C. (2008). Clean Code: A Handbook of Agile Software Craftsmanship. Pearson. - Siessegger, N. (2024). Git – kurz & gut. dpunkt. - Ullenboom, C. (2023). Java ist auch eine Insel: Einführung, Ausbildung, Praxis. Rheinwerk.
[updated 13.11.2024]
|
Module offered in:
WS 2024/25,
WS 2023/24,
WS 2022/23,
WS 2021/22,
WS 2020/21,
...
|