Print materials
In addition to this Course Guide, the course has the following important components. Please ensure that you have all of these materials available.
Study units
There are ten study units in COMP S311 Advanced Java Programming and Mobile Application Development. Each unit consists of between three and four weeks' worth of part-time work. The study units outline the key concepts of each section, summarize key issues, explain the relevant theories and practices, and comment on related readings. There are self-contained learning materials and/or guided textbook readings on a number of topics. Each unit contains self-tests and activities to reinforce your assimilation of the issues under discussion.
Unit 1 Exceptions, lambdas and streams
This unit describes evolving Java language syntax and libraries which make your programming work easier, more concise, and more powerful. You will first learn the use of exceptions to handle errors in a robust way, and new syntax for catching multiple types of exceptions and automatic closing of resources. You will then study lambda expressions for representing code blocks concisely, replacing many uses of anonymous inner classes, and streamlining the functional programming style in Java code. Finally, you will learn how to use the stream library to manipulate groups of objects as a pipeline of operations, optionally and easily in parallel.
Unit 2 Concurrency and multithreading
This unit covers multithreading, which exploits the multi-core capability of modern computers. You will learn how to create and manipulate threads to implement concurrent Java applications, and how to resolve common synchronization issues. Data structures with built-in support for concurrency and efficient thread management by thread pools are explained and illustrated in Java programs.
Unit 3 Developing networked applications
This unit explains how to implement networking in Java applications using sockets, datagrams, and over the Web. In particular, you will acquire knowledge of Java socket and stream libraries for connection-oriented communication between clients and servers, datagram sockets and datagram packets for connectionless communications, and the URL framework for accessing Web resources.
Unit 4 Database programming and JSP
This unit introduces database and Web programming, two essential topics in Java enterprise application development. For database programming, you will learn how to use Java Database Connectivity, or JDBC, in Java applications to connect a database server for retrieving and updating data. You will also learn about Web application development using JavaServer Pages, or JSP, for providing dynamic responses to client requests from Web browsers.
Unit 5 Security in Java applications
This unit discusses security measures in the Java platform and libraries for securing data in Java applications. You will learn how class loaders validate the integrity of Java class files, and how security managers check permissions and control what operations are allowed. In addition, you will learn the use of digital signature in Java applications to ensure data has not been altered, and has really come from its claimed author. Encryption is also explained, and Java programs are illustrated to guarantee that confidential information can only be viewed by its intended users.
Unit 6 Foundations of Android programming
This unit provides a foundation for developing Android applications. You will first study the concepts behind the Android platform, and the essential tools for Android programming. You will then learn the structure and life cycle of Android applications, and how they are managed by and interact with the host device. A number of important issues are also covered in the unit, including user interface programming, security considerations, and application deployment.
Unit 7 Developing Android applications
This unit explores a number of APIs that are useful in developing Android applications. You will learn more advanced user interface components, the use of intents for inter-activity communication, and libraries of concurrency, networking, and location-based services with illustrative examples. The unit also explains the security and permission settings for using some of these libraries. Finally, issues related to optimizing Android applications will be discussed.
Unit 8 Data access, services and receivers
This unit teaches you how to use various forms of data access in Android apps — files, shared preferences, and databases. In addition, you will learn three types of application components: content providers for sharing data between applications, services for background operations, and receivers for handling broadcast messages from the Android system.
Unit 9 Enhancing application design
This unit focuses on design and visual aspects of Android applications. In this unit, you will learn the use of style and theme resources to maintain the consistent appearance of user interface components. In addition, you will study the implementation of navigation between screens of an application, graphics and drawing, animations, media playback, and device vibration.
Unit 10 Building an Android messaging app
This unit takes you through the development of a simple yet complete messaging application by applying the tools and techniques presented in the previous units. The unit examines the application's requirements, overall design, design and implementation of the database, the server and the Android app. Possible enhancements are also discussed to conclude the unit.
Custom textbook
A custom textbook is required for COMP S311 and will be provided to you. The contents of the textbook are extracted from the following books:
- Horstmann, C S (2019) Core Java Volume I Fundamentals, 11th edn, Prentice Hall.
- Horstmann, C S (2019) Core Java Volume II Advanced Features, 11th edn, Prentice Hall.
Online and multimedia materials
Online resources
You may be required to refer to the Online Learning Environment (OLE).
Equipment required
You are expected to have the following minimum equipment. However, this list should be taken with a pinch of salt. Today's computers run multiple processes concurrently, so the actual minimum hardware requirement depends very much on what software has been installed or is running in the background. It is quite possible for a particular computer to run better than another computer of a higher specification.
Hardware
- PC with Intel i5 (or equivalent) quad-core processor or above
- 4GB RAM minimum, 8GB RAM recommended
- 4GB of free disk space
- Internet access
- Video display resolution at 1280 × 800 or higher
Software
- Microsoft Windows 7/8/10, Mac OS X 10.10 to 10.13, or Linux GNOME/KDE desktop
- Recent versions of Chrome, Firefox, Edge/Internet Explorer or compatible
- Java 8, NetBeans, Android Studio, and other tools (as instructed in the course materials)
Note that if you choose to use Mac or Linux, you may not be able to get platform-specific help from your tutor.
Up-to-date URLs to download the software will be provided on the course website.
Assignment File
You can access the assignment file on the OLE. The nature of the assignments is described in the 'Assignments' section below.
Presentation Schedule
The presentation schedule is available on the OLE. It gives the dates for completing assignments, and attending tutorials and surgeries.