Hold Ctrl-tasten nede. Trykk på + for å forstørre eller - for å forminske.


Advanced programming

This is the study programme for 2019/2020. It is subject to change.

Students will learn to use advanced programming in a strongly typed, objected oriented programming language. Best coding practices and testing.

Learning outcome

  • Use of strongly typed programming language such as Java
  • Objected oriented programming and polymorphism
  • Design patterns
  • Best coding practices
  • Concurrency
  • Testing, debugging, version control, code review

  • Be capable of designing and developing complex software systems.
  • Know how to apply design patterns, use tools for debugging and testing

General competence:
  • Capable of developing advanced computer programs


  • Introduction to the Java. Quick review of the syntax of the language for data types, methods, classes and objects
  • More in-depth about encapsulation and object-oriented programming.
  • Polymorphism in highly typed languages, including interfaces and abstract classes
  • Design Patterns
  • Generics
  • Concurrency
  • Use of compilers, build tools and debugging tools
  • Use Version control (git), code review in teams
  • Clean code, error handling, Unit Testing/TDD, debugging and profliling tools
  • Introduction to functional programming (Java8/scala)

Required prerequisite knowledge

ING100 Introductory course for engineers - Computer science and electrical engineering

Recommended previous knowledge

DAT110 Introduction to Programming


Written and oral exam
Weight Duration Marks Aid
Written exam3/54 hoursA - F
Programming project and oral test2/5 A - F
Project consisting one large assignment. The project is to be performed in a group. The grade for the project will be based on the submitted program code and an individual oral examination of the submitted program code. Both parts must be done before final grade is given. Each group member can receive a different grade based on their performance during the oral examination.
If a student fails the projectwork , she/he have to take this part again next time the subject is lectured.

Coursework requirements

3 compulsory lab assignments
Three mandatory individual lab exercises (programming exercises). Pass/Fail. All programming exercises must be passed to attend for the written exam and lab exam. Approval may take place through the Autograder system for automated evaluation, followed by in-lab approval.
Completion of mandatory lab assignments are to be made at the times and in the groups that are assigned. Absence due to illness or for other reasons must be communicated as soon as possible to the laboratory personnel. One cannot expect that provisions for completion of the lab assignments at other times are made unless prior arrangements with the laboratory personnel have been agreed upon.
Failure to complete the assigned labs on time or not having them approved will result in barring from taking the exam of the course.

Course teacher(s)

Course coordinator
Vinay Jayarama Setty
Course teacher
Glenn Frode Henriksen
Head of Department
Tom Ryen

Method of work

Lectures and group exercises. Programming tasks must be done in groups of 2-3 students. 4 hours lectures and 4 hours exercise per week.

Overlapping courses

Course Reduction (SP)
Advanced programming (BID100_1) 5
Software Engineering (DAT210_1) 10

Open to

Bachelor studies at the Faculty of Science and Technology.

Course assessment

Form/oral discussion.


For Java basics: Head First Java, 2nd Edition by Kathy Sierra and Bert Bates Publisher: O'Reilly Media, Inc. ISBN: 9780596009205

For best coding practices: Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin. Prentice Hall, ISBN: 9780136083238

Domain-Driven Design: Tackling Complexity in the Heart of Software 1st Edition by Eric Evans ISBN-13: 978-0321125217

This is the study programme for 2019/2020. It is subject to change.

Sist oppdatert: 27.05.2020