Overordnede kursusmål
The course covers:
• the process of programming
• principles that guide computer programming practice
• a collection of core concepts which are essential in modern
programming languages, such as object orientation, call by
value/call by reference, abstract data types
• the value of shared libraries, and how to create and use one
• the importance of interface definitions
• the utility of the command-line itself as a useful tool and
interface
• an introduction to the use of the High Performance Computing
infrastructure at DTU
• the use of git as a version control, software distribution and
collaboration system
The principles and concepts are computer language independent. To
highlight them, two languages are studied, the GNU/Linux
command-line job control language, Bourne Again SHell (bash), and
the general purpose Python language. In association with bash the
most commonly used command-line tools to the GNU/Linux operating
systems are introduced. For python, the standard library is
examined, and the use of conda as a third party library package
management system is introduced.
Course participants are encouraged to reflect on the course's
core concepts as they implement some software which will directly
help them in their research. The course instructors offer
assistance in scoping and designing this "Useful Project"
for each participant, if desired. 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.
Læringsmål
En studerende, der fuldt ud har opfyldt kursets mål, vil kunne:
- be confident in building software tools to assist them in their
research
- 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 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
Kursusindhold
All materials are made available via DTU's elearning
infrastructure.
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
15. februar, 2019