Software Development for Students

2021 01 04 head

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 the distributed source code management system. It is supported by all major development IDE and continuous integration environments.

First-year undergraduates shall master the basic git commands to write their semester projects.

Second-year sophomores shall master the Git commands used to work in teams. Pull requests are a standard approach to review team colleague works and to 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.

Since JDK 16, Java provides Algebraic Data Types with records and sealed classes. Records implement Product Types. Sealed classes implement Tagged Unions, also called sum types.

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.

Technical Excellence

The DevOps and software craftsmanship movement strongly promotes technical excellence and intrinsic quality in software development.

720

Students shall be fluent with

  • Static code analysis. IntelliJ IDEA provides an analysis function for static code analysis. The IDE environment is free for students.

  • Unit tests and integration tests Use the seminal libraries JUnit5, Mockito, and AssertJ

  • Continuous integration pipeline uses the CI pipeline of your product management tool; either GitLab, GitHub, Bitbucket, or Azure DevOps.

Documentation

You should only check text artifacts into a Git repository. Modern approaches with Markdown and Asciidoc syntax promote this axiom.

PlantUML is a text-based diagramming approach. Major diagram types are supported. ALl UML diagram types can be described with the tool. 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 planned their projects with a vision, a roadmap, epics, and sprints.

Gitlab as a Student’s Tool

2021 01 04 gitlab

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 learning 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 in Gitlab. The development history over a project or a semester is 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.