Software Development for Students
Software Development for Students
Computer science students shall achieve technical excellence when reaching bachelor level. They should be proficient with industry good practices. Students understand the theory and principles behind these practices. Experience with one of the best of breed tools enforces learning and automatism.
The focus of a technical university is to teach the concepts and methods. The tools are used to practice and to increase student learning.
Source Code Version Management with Git
Git is the standard tool for distributed source code management system. It is supported by all major development IDE and continuous integration environments.
First year students shall master the basic git commands to write their semester projects.
Second year students shall master the git commands used to work in teams. Pull requests are a standard approach to review team colleague works and consolidate new functions into the application.
Modern Java Software Development
Java is the preferred programming language for the majority of teaching institutions around the world. The programming language has evolved the last ten years. Students should learn the current way of writing code in Java.
The actual Java approach is to use streams and renounce in most cases to use instructions such as for or while loops or conditional if statements. Delegation and lambda constructs often replace inheritance design.
The IntelliJ IDEA IDE is now the industrial standard for the Java and often Python world. The IDEA environment promotes the use of modern Java constructs. Currently, constructs such as records, sealed classes, closeable resources, switch instructions as expressions are new approaches to write legible Java code. Concepts such as Optional, Streams, immutable objects, and unchecked expressions promote more functional programming styles.
Gradle is our preferred build tool for Java projects. The approach is straight forward.
The DevOps and software craftsmanship movement strongly promote technical excellence and intrinsic quality in software development.
Students shall be fluent with
- Static code analysis. Intellij IDEA provides an analyze function for static code analysis. The IDE is free for students.
- Unit tests and integration tests Use the seminal libraries JUnit5, Mockito, and AssertJ
- Continuous integration pipeline Use the CI pipeline of your product management tool; either GitLab, GitHub, Bitbucket, or Azure DevOps.
PlantUML is a text based diagramming approach. All major syntax and in particular all UML diagram types are supported. Asciidoc has native support for diagrams in general and PlantUMl in particular. Asciidoc supports additional diagrams and diagramming tools such as Mermaid.
Agile and Scrum
Agile and Scrum are the standard methods to develop software products in the industry. All students shall excel in agile development approaches. Scrum is the most used approach and should be taught to all computer science students.
Students shall understand the agile concepts and main constructs. When working in a Scrum environment, they have used the backlog, issues, stories, definition of done. They have planed their projects with a vision, a roadmap, epics, and sprints.
Gitlab as a Student’s Tool
Gitlab is an integrated solution for software development in teams and DevOps approaches. It is the official tool provided in our Computer Science Department.
Students learn computer science principles and hands-on how to develop software applications. They will use their learnings to develop commercial software components when working after the completion of their studies.
Gitlab as a Lecturer’s Tool
All the source code and artifacts of a student class are available on Gitlab. The development history over a project or a semester are visible in Git. The lecturers can access the artifacts or use scripts to extract the data necessary to set the grades for the students. The grading process can be standardized. The decision process is part of the gitlab data and is auditable.
The student series is a set of blogs showing how to use central tools for modern software development.