Module Descriptors
JAVA PROGRAMMING (EFREI)
COMP40021
Key Facts
School of Digital, Technologies and Arts
Level 4
20 credits
Contact
Leader: Graham Mansfield
Hours of Study
Scheduled Learning and Teaching Activities: 35
Independent Study Hours: 70
Total Learning Hours: 105
Assessment
  • A portfolio-based exam - 2 hours weighted at 100%
Module Details
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.
MODULE TEXTS
Horstmann, C. (2019) Core Java Volume 1—Fundamentals. 11th edition. Pearson.
MODULE RESOURCES
Microsoft Visio, or some other UML diagramming software that can save diagrams as PDF
Java SE Developer Kit
A Java IDE, such as NetBeans