AIS1002

Object-oriented programming and algorithms

Last taught 2023

Spring

Ålesund

Norwegian

Overview

8 candidates

Average grade

D

2.00

0.10

Pass rate

100%

20 points

Grade distribution
Average over time
Pass rate over time

About this course

Content

The course consists of two main topics: object-oriented programming and algorithms and data structures.

Object-oriented programming covers the following:

  • Basic object-oriented program design and object-oriented programming
  • Basic concepts related to object-oriented programming (classes, class hierarchy, objects, encapsulation)
  • Introduction to modelling and design
  • Cooperation between objects
  • Introduction to integrated development environments (IDEs), debugging, unit testing, and version control

Algorithms and data structures covers the following:

  • Basic techniques and algorithms (e.g., recursion, sorting, search, hashing, graph algorithms, other well-known algorithms)
  • Basic data structures (a selection from table, array, list, queue, stack, tree, graph)
  • Introduction to complexity theory (O-notation, time and memory complexity)

Note that the topics may not be taught sequentially but may be interleaved.

The amount of in-depth study of each topic may vary each year. Other topics may also be presented. More details on the curriculum will provided during the start of semester.

Learning outcomes

Knowledge

  • The candidate can explain simple concepts within object-oriented programming such as encapsulation, modularisation, and cooperative objects
  • The candidate can formulate principles for good design of code (coupling/cohesion), layered architecture, code quality and good coding style, and why this is important in software design
  • The candidate can explain typical disciplines in software development (life cycle of a program) on a high level
  • The candidate can model class diagrams consisting of several classes with aggregation and composition, given a particular problem
  • The candidate can identify and compare basic algorithms, e.g., for sorting, search, and graphs
  • The candidate can describe and explain various basic data structures (e.g., array, table, linked list, queue, stack, tree, graph)
  • The candidate can explain the concept of recursion/recursive method in problem solving and programming
  • The candidate can classify and compare simple algorithms complexity on a high level

Skills:

  • The candidate can apply a basic object-oriented mindset for analysis and problem solving
  • The candidate can configure simple programming environments for development, testing, and running object-oriented programs
  • The candidate can construct structured, clear and well-documented programs based on principles for good code design
  • The candidate can apply classes (including from libraries), control structures and cooperation between objects, as well as navigate in API documentation
  • The candidate can use an integrated development environment (IDE), debugger, unit tests, and version control
  • The candidate can use basic algorithms for solving practical programming problems efficiently
  • The candidate has some experience with advanced data structures, in particular trees and graphs

General competence

  • The candidate can use computational thinking and cybernetics systems thinking for solving engineering problems and for breaking larger problems into smaller ones that can be solved separately and joined together as more complex systems.
  • The candidate can discuss ethical aspects of the use of algorithms for automated decision-making.

Teaching methods

Learning activities generally include a mix of lectures, tutorials and practical lab/project work. A constructivist approach for learning is endorsed, with focus on problem solving and practical application of theory.