AIS1002
Object-oriented programming and algorithms
Last taught 2023
Spring
Ålesund
Norwegian
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.