12925 Programmering Principper og Implementering (PoPI)

2020/2021

Students are preferred from DTU Environment, other DTU departments and other danish universities, in that order.

This course is not an introduction to programming. Students should have some experience in programming.
Kursusinformation
Principles of Programming and implementation (PoPI)
Engelsk
5
Ph.d., Generelt servicekursus (generiske færdigheder)
Kurset udbydes som enkeltfag
Efterår
Campus Lyngby
- Lectures 10 hours
- Tutorials 20 hours
- Reading 30 hours
- Assignments 70 - 90 hours
13-uger
Aftales med underviser
Bedømmelse af opgave(r)/rapport(er)
Active participation in lectures and group work. Written assignments (including software development). All assignments are issued and submitted via CampusNet. Feebback is provided for the major programming assignment, if requested.
Alle hjælpemidler er tilladt
bestået/ikke bestået , intern bedømmelse
12915
PoPI is the larger version of PoP (12915). A student may take only one of the two courses. Please read the course descriptions for both courses and choose the version that suits you best.
Minimum 4 Maksimum: 10
Hugo Maxwell Connery , Tlf. (+45) 4525 1555
Hjalte Jomo Danielsen Sørup , Lyngby Campus, Bygning 115, Tlf. (+45) 4525 1590 , hjds@env.dtu.dk
12 Institut for Vand og Miljøteknologi
01 Institut for Matematik og Computer Science
I studieplanlæggeren
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