- Applying the core concepts of imperative programming, such as variables, data types, structured programming statements, recursion, lists, arrays, methods, parameters and exceptions.
- Applying the core concepts of object-orientation, such as object, class, value, type, object reference, interface, specialisation / inheritance, and composition.
- Implementing interactive applications using the Model/View/Controller pattern.
- Applying basic synchronisation mechanisms, such as monitors, locks and wait sets, to the problems of concurrent threads (race-conditions).
- Implementing client-server programs using basic network mechanisms such as Java sockets.
- Applying the basic concepts and techniques of security engineering to address the challenges of producing secure software.
- Implementing software of average size (10-20 classes) in Java by using the core concepts of imperative programming and object-orientation.
- Documenting software of average size (10-20 classes) by defining preconditions, postconditions and (class) invariants. Defining and performing a test plan for software of average size (10-20 classes) with appropriate test coverage.
Following this Learning Unit requires following also the Academic Skills Unit.|
Students from AT who are doing the module as an Elective can register for the mandatory courses System Design (4 EC) and Programming (8EC) and have to follow both courses. It is not allowed to follow only one of the courses. Students who are doing this module as a minor will be enrolled via de Minor coordinator.
Assumed previous knowledge
|Proficiency in Functional Programming (content offered in Module 1 provides the minimum requirements)||Required materials|
|David J. Eck. Introduction to Programming Using Java. Version 8.1, July 2019. Available for free at: http://math.hws.edu/javanotes/|
|The manual of the module contains all exercises. The manual also points to books and alternative online material. The manual is available on Canvas.|
|Chapter 5 from Ross Anderson, Security Engineering.Wiley, 2nd edition, 2008. Available for free at: http://www.cl.cam.ac.uk/~rja14/book.html|
|C.S. Horstmann and G. Cornell, Core Java, volume I: Fundamentals. Prentice Hall, 9th edition, 2012.|
|C.S. Horstmann and G. Cornell, Core Java, volume II: Advanced Features. Prentice Hall, 9th edition, 2012.|