General course objectives
The aim of the course is to convey the basic concepts of
programming, including imperative and object-oriented programming
as well as fundamental constructs of functional programming like
lambda-expressions, and to enable the student to apply these
concepts with relevant software technologies.
Learning objectives
A student who has met the objectives of the course will be able to:
- Describe and apply the basic concepts that are common to all
imperative programming languages
- Transform an informal problem description into an unambiguous
specification implementable in a programming language
- Explain and apply concepts of procedures, scopes and
bindings
- Explain and apply object-oriented programming concepts,
including polymorphism, inheritance, encapsulation and
reflections
- Choose, evaluate, apply and design suitable data types and data
structures
- Compare different implementations and justify their
correctness
- Explain and apply programming techniques, including recursion,
and relate them to their execution
- Apply relevant software technologies and tools for the
development, documentation, testing and deployment of programs
- Describe and apply modern programming paradigms such as
event-driven and graphical environments
- Explain and apply basic software design patterns
- Design, implement, document and evaluate a software solution of
moderate size in a programming language
- Use relevant technical literature in Danish and
English
Content
The course will introduce algorithmic problem solving and thinking
in a way that is mostly independent of the programming language.
Concrete programming paradigms in object-oriented and imperative
programming and software design patterns will be taught primarily
in the Java programming language. Moreover, the Python programming
language will be introduced.
The following elements will be covered:
basic programming constructs (loops, branching statements etc);
input and output; data types, primitive and referenced; bindings;
values, operators and expressions; classes, objects, fields,
methods; design of classes, hierarchies, inheritance, reflection;
abstraction (abstract and generic classes, interfaces); basic
elements of functional programming (lambda-expressions); recursion;
mental model of execution of programming languages; justification
of correctness of programs; use of libraries; command-line scripts;
error/exception handling; debugging, version control,
documentation, simple software design patterns; graphical user
interfaces; selected advanced topics.
Finally, roughly one 4-hour module of the course will deal with
study-related activities for the students on the BSc Software
Technology line that ensure the transition from pupil to student,
e.g. study techniques and study plans.
Remarks
Part of the course teaches core competences in Software Technology
and covers elements from the former course type "Engineering
works" on the study line.
Last updated
02. maj, 2024