Introduction to Programming 2

Course unit fact file
Unit code COMP16412
Credits 10
Unit level Level 1
Teaching period(s) Semester 2
Offered by Department of Computer Science

Overview

This unit teaches students how to design and build software using object-oriented programming principles in Java. The course begins with programming fundamentals-how to structure code, make decisions, and repeat operations-before introducing the core concept of organising programmes around "objects" with their own data and behaviours. Students learn how to create blueprints for these objects, how to build relationships between different types of objects, and how to design code that can be easily modified and extended over time. As the course progresses, students work with Java's built-in tools for organising and managing collections of data, such as lists, queues, and maps, and learn to choose the right tool for different programming challenges. The latter portions cover modern Java features that make code more concise and expressive, as well as techniques for processing data efficiently using contemporary programming styles.

Beyond technical programming skills, this unit emphasises responsible and sustainable software development practices that are increasingly critical in the technology industry. Students examine real-world concerns, including software security and accessibility, reading current research on topics such as whether Al coding assistants lead developers to write less secure code, and how to design software that works well for users with diverse needs and abilities. The course addresses sustainability by teaching students to write efficient code that uses computational resources wisely,to design software architectures using diagrams that remain maintainable overrather than requiring costly rewrites. Students also learn to build graphical applications with interactive user interfaces and to handle multiple simultaneous operations within their programmes. Throughout the unit, students develop professional skills such as reading technical documentation, understanding visual software diagrams, writing clear code documentation, testing their code to prevent errors, and working on large projects-preparing them for collaborative software development in both academic and professional contexts. 

Pre/co-requisites

Unit title Unit code Requirement type Description
Introduction to Programming 1 COMP16321 Co-Requisite Compulsory

COMP16321 is a co-requisite which means it must be taken with this unit.

Aims

To specify, design, test, develop, deploy, debug and run programmes of a significant complexity using an object-oriented language (here, Java 21) and identify the strengths and weaknesses of the paradigm and the language. 

Learning outcomes

ILO 1: Evaluate and select appropriate data structures (ArrayList, Stack, Queue, Set, Map) and algorithms (sorting, searching, recursion) for specific programming contexts, justifying choices based on efficiency and suitability

ILO 2: Use Java types (primitive and reference), appropiate data structures, and core language features such as generics, collections, exception and error handling, file I/O operations.

ILO 3: Synthesise programming knowledge in order to implement new requirments on-the-fly in large projects.

ILO 4: Read and interpret technical documentation (Java API documentation, UML diagrams, academic papers                  new programming concepts) and apply them effectively independently or in small workshop groups.

ILO 5: Explain fundamental object oriented programming concepts including classess, objects, polymorphism, abstraction, and interfaces.

ILO 6: Use theoretical skills to work on a code base of significant complexity following a list of requirements and architecture akin to stakeholder requirements in industry.

ILO 7: Critically analyse research papers on the impact of AI on programming and learning, developing accessible and secure software, and generating sustainable software to reduce cost of maintenance of code bases.

Syllabus

This unit teaches students how to design and build software using object-oriented programming principles in Java. The course begins with programming fundamentals-how to structure code, make decisions, and repeat operations-before introducing the core concept of organising programmes around "objects" with their own data and behaviours. Students learn how to create blueprints for these objects, how to build relationships between different types of objects, and how to design code that can be easily modified and extended over time. As the course progresses, students work with Java's built-in tools for organising and managing collections of data, such as lists, queues, and maps, and learn to choose the right tool for different programming challenges. The latter portions cover modern Java features that make code more concise and expressive, as well as techniques for processing data efficiently using contemporary programming styles.

Beyond technical programming skills, this unit emphasises responsible and sustainable software development practices that are increasingly critical in the technology industry. Students examine real-world concerns, including software security and accessibility, reading current research on topics such as whether Al coding assistants lead developers to write less secure code, and how to design software that works well for users with diverse needs and abilities. The course addresses sustainability by teaching students to write efficient code that uses computational resources wisely,to design software architectures using diagrams that remain maintainable overrather than requiring costly rewrites. Students also learn to build graphical applications with interactive user interfaces and to handle multiple simultaneous operations within their programmes. Throughout the unit, students develop professional skills such as reading technical documentation, understanding visual software diagrams, writing clear code documentation, testing their code to prevent errors, and working on large projects-preparing them for collaborative software development in both academic and professional contexts. 

Teaching and learning methods

Asynchronous independent study material (e.g. videos, reading, online quizzes and formative coursework), group-based workshops, practical lab sessions, Q&A sessions. Activities are supported by academics and GTAs both in-person and through online forums.

Assessment methods

Method Weight
Written exam 50%
Practical skills assessment 50%

Feedback methods


Practical exam (Invigilated programming): 50%

Written Exam (Theoretical): 50%

 

Recommended reading

  1. Charatan, Quentin, author. (2019). Java in two semesters: featuring JavaFX. Springer. ISBN: 9783319994208 

Study hours

Scheduled activity hours
Lectures 12
Practical classes & workshops 36
Independent study hours
Independent study 52

Teaching staff

Staff member Role
Efthymios-Christos Kotselidis Unit coordinator