AIS1003
Object-oriented programming for cyber-physical systems
Autumn
Ålesund
Norwegian
About this course
Content
The course contains a selection of the following topics, with focus on application toward cyber-physical systems:
- Basic object-oriented programming and design.
- Basic concepts related to object-oriented programming (classes, class hierarchy, objects, encapsulation, polymorphism etc.).
- Code modularisation and re-use.
- Introduction to build systems, integrated development environments (IDEs), debugging, unit-testing and version-control.
- Introduction to basic data structures (e.g., arrays, lists, hash-maps, trees)
- Memory and error management.
More details on the curriculum will provided during the start of semester.
Learning outcomes
The following learning outcomes are formulated with application toward cyber-physical systems in mind.
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), code quality and coding style, and why this is important in software design.
- The candidate can write cross-platform, testable and re-usable code.
- The candidate can identify and use basic data structures to best solve a given problem.
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, well-behaved 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) proficiently.
- The candidate can use a debugger for examining code during run-time and write unit tests.
- The candidate can model and implement elements of a typical cyber-physical systems using object-oriented concepts.
General competence
- The candidate can communicate and discuss code solutions and explain how a program behaves.
- The candidate can find and apply tools and documentation related to the programming language and the standard library.
- The candidate is aware of programming aspects that can affect information security.
- The candidate can transfer object-oriented concepts to other languages.
- 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.
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.