MODULE LEARNING OUTCOMES
1. Design object-oriented applications with the UML, employing core object-oriented programming principles
2. Write object-oriented applications with Java, using a suitable IDE, employing core object-oriented programming principles
MODULE ADDITIONAL ASSESSMENT DETAILS
The exam has two parts:
Questions assessing understanding of the theoretical concepts covered in the lectures (50%)
Questions based on the portfolio of work developed in the weekly practical sessions (50%)
MODULE INDICATIVE CONTENT
Design and write Classes exhibiting:
Encapsulation, Inheritance and Polymorphism
Static and non-static fields, methods and classes
Mutability and immutability
Singleton design pattern
Advanced Java Class Design
Override hashCode(), equals(), and toString() methods from Object class
Abstract classes and methods
“final” keyword
inner classes (static inner class, local class, nested class, and anonymous inner class)
Enumerated types
Lambda expressions
Generics and Collections
Create and use a generic class
Collections (ArrayList, TreeSet, TreeMap, and ArrayDeque objects)
Use java.util.Comparator and java.lang.Comparable interfaces
Collection streams
Filter a collection by using lambda expressions
Iterate using forEach() methods of Streams and List
Stream interface and Stream pipeline
Lambda Built-in Functional Interfaces
Use the built-in interfaces included in the java.util.function package such as Predicate, Consumer, Function, and Supplier
Java Stream API
Develop code to extract data from an object using peek() and map() methods including primitive versions of the map() method
Search for data by using search methods of the Stream classes including findFirst, findAny, anyMatch, allMatch, noneMatch
Sort a collection using Stream API
flatMap() methods in the Stream API
Exceptions
try-catch statements, including catch, multi-catch, and finally clauses
throw statements
Autoclose resources with a try-with-resources statement
Create custom exceptions and Auto-closeable resources
Java I/O Fundamentals
Read and write data from the console
BufferedReader, BufferedWriter, File, FileReader, FileWriter, FileInputStream, FileOutputStream, ObjectOutputStream, ObjectInputStream, and PrintWriter in the java.io package.
Java Marker Interfaces
Serializable and Cloneable
Java Concurrency
Create worker threads using Runnable, Thread, Callable and use an ExecutorService to concurrently execute tasks
“synchronized” keyword and java.util.concurrent.atomic package to control the order of thread execution
Parallel Fork/Join Framework
Use parallel streams including reduction, decomposition, merging processes, pipelines and performance.
Database Applications with JDBC
Core interfaces of the JDBC API, including Driver, Connection, Statement, and ResultSet
Connect to a database using the DriverManager class
Submit SQL commands to the database, including table creation, queries, insertions, updates and deletions
WEB DESCRIPTOR
On this module, you will learn about Java, which is one of the most wide-used object-oriented programming languages. As well as improving your ability to design and write object-oriented programs, you will learn about some of Java’s advanced programming concepts such as generics, streams, lambda expressions, concurrency and database usage.
MODULE LEARNING STRATEGIES
Lectures will present new concepts and tutorials will provide opportunity for practical application of these concepts, supported by a tutor.