Overordnede kursusmål
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
• 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
• encapsulation and interface design
• the git version control system
• the GNU/Linux command-line and the relationship between the
command-line and the kernel
• introduction to using the High Performance Computing
infrastructure at DTU
• copyright and licensing.
During the process of these abstract and/or theoretical topics, two
programming languages are studied and used.
• The Bourne Again Shell (bash): a process invocation and control
language which acts as the underlying command-line interface to
modern GNU/Linux systems.
• The general purpose Python programming language.
The introduction to the HPC is provided by the people who maintain
it from DTU Computing Centre, who run it. This introduction is
associated with the studying of bash.
Students need to submit a "Useful Project". The Useful
Project can be anything that the student wishes, but must be
approved by a course lecturer so that it satisfies the points for
the course. It is suggested that the student build something that
will directly assist them in their Ph.D research. Python is
suggested as a language for the Useful Project, but any language
may be chosen.
Guidance is provided to students for their Useful Project. This can
be from architectural design, to solving small challenges.
Students need to use git to submit their Useful Project project.
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 understand the difference between functional programming and
object oriented design
- to be confident in producing small python and/or bash scripts,
including package encapsulation
- to be able to understand resource trade offs: speed vs minimal
resource usage
- to have a fundamental understanding of exactly what happens
when you enter a single command in bash on GNU/Linux
- understand the value of version control systems and to have
obtained basic proficiency in the git version control system
- understand how to use gitlab and/or github as a git
collaboration and distribution platform
- understand how to submit a job to the HPC
- be confident in building software tools to assist them in their
research
Kursusindhold
All materials are made available via CampusNet. The materials are
all from 12915 and:
• Git (the version control system)
• HPC
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.
Sidst opdateret
12. maj, 2020