The course presents and offers for discussion the following topics:
• an overview of the process of programming independently of the
language or system that one uses to program: requirements
gathering, requirements analysis, high level desgin,
prototyping, implementation, testing, documentation, deployment,
deployment validation, bug fixing and enhancements.
• the historical, linear and more modern cyclical models of
progress in software Development
• a collection of principles that can be applied when programming
• the two dominant paradigms of programming, functional and object
oriented are presented and discussed.
• encapsulation and interface design
• version control systems and their purpose, both for programming
and other activitites
• copyright and licensing.
During the process of these abstract and/or theoretical topics, two
programming languages and one version control system are studied
and used.
The Bourne Again Shell (bash) is a process invocation and control
language which acts as the underlying command-line interface to
modern GNU/Linux systems. This is studied and used for the minor
project. Its use on DTU Compute's High Performance Computing
(HPC) systems is explored with a focus on large scale processing
for research purposes. A lecture on job submission and control for
the HPC is provided by a lecturer from DTU Compute.
The Python (general) programming language is studied and used for
the major project. This may also be coupled to the HPC environment.
The git version control system is studied and used during the major
project.
Both the minor and major projects are to be defined by the students
as tools that will be helpful to them in their ongoing research
(from whatever field).
Læringsmål:
En studerende, der fuldt ud har opfyldt kursets mål, vil kunne:
to have understood some core principles of programming,
particularly 'Laziness is a Virtue'
to have gained a 'bird's eye' view of the process
of programming
to understand what 'from the outside in' means as a
programming practice
to understand what encapsulation is, and the value that it
offers
to be able to select between a functional or object oriented
paradigm according to what you wish to build and/or share
to have contributed towards the construction of a shared
library or other programming output that has direct value to your
group
to understand the value of version control systems
to understand the difference between a copyright and a license,
and how that relates to publishing software
to be confident in producing small python and bash scripts,
including package encapsulation
to be able to use basic features of bash for job control
to have obtained basic proficiency in the git version control
system
Kursusindhold:
All materials are made available via CampusNet. The materials are
categorised as:
• Core (theory)
• Python (the language)
• Bash (the language)
• Git (the version control system)
Bemærkninger:
Lecture material must be read before the lecture. Lecture periods
provide a brief overview of the content and offer the opportunity
for
discussion.