Page 1 of 1

Module Code - Title:

EE6161 - ADVANCED PROGRAMMING

Year Last Offered:

2025/6

Hours Per Week:

Lecture

2

Lab

2

Tutorial

1

Other

0

Private

5

Credits

6

Grading Type:

N

Prerequisite Modules:

Rationale and Purpose of the Module:

This is an advanced programming module that focuses on problem solving and modern, practical programming methods and tools. This module covers advanced features of program design and analysis, group programming and large project implementation. It also provides students with an understanding of time and memory complexity of algorithms and with skills to implement and use generic dynamic data structures.

Syllabus:

- Using a high-level programming language to develop and solve advanced engineering problems. - The use of build automation tools such as make, cmake, ant, maven or gradle to maintain large scale projects. - Using version control systems to facilitate collaboration among teams to solve large engineering problems, including: - Maintaining complete history of changes by individual developers. - Using branching and merging to create parallel versions of the codebase for independent development without changing the main codebase. - Systematic program construction: specification, development and testing of applications. - Advanced structured error handling techniques. - Algorithm performance analysis to facilitate selection of most suitable candidate from multiple algorithms to solve a problem with a given set of constraints. - Specification and implementation of generic dynamic data structures. - Investigating the use of user-defined data types and dynamic data structures to efficiently solve complex problems.

Learning Outcomes:

Cognitive (Knowledge, Understanding, Application, Analysis, Evaluation, Synthesis)

On successful completion of this module, students will be able to: 1. Write efficient programs that solve advanced engineering problems and adhere to good software design principles. 2. Setup and use a version control system to facilitate teamwork on shared source code, e.g. create repositories, update local working copies and perform branch and merge operations. 3. Understand software specifications to implement code that conforms to the specifications and to coding standards. 4. Design, build, and test advanced programs in a high-level programming language using build automation tools. 5. Explain the use of big-O notation to describe the amount of work done by an algorithm and to determine the bounds on time and memory complexity of algorithms. 6. Describe operations of generic dynamic data structures such as linked lists, stacks, and queues, and implement them in a high-level programming language.

Affective (Attitudes and Values)

On successful completion of this module, students will be able to value collaborative work and resolve issues within teams and group management.

Psychomotor (Physical Skills)

N/A

How the Module will be Taught and what will be the Learning Experiences of the Students:

The module will be taught via formal lectures and computer lab sessions. The theory will be presented in lectures, and students will learn to apply the concepts discussed in the lectures in the lab sessions. Both, the theoretical content and the applied laboratory work of the module are designed to: • Develop students' fundamental understanding of advanced programming techniques. • Expand students' experience of practical programming methods and tools. • Enhance students' agility in responding to open-ended engineering problems. • Develop students' communication, collaboration and problem-solving skills. The main assessments are the final exam and two projects in which the students will employ advanced features of program design and analysis.

Research Findings Incorporated in to the Syllabus (If Relevant):

Prime Texts:

Orhan Gazi (2024) Modern C++ Programming: Including the recent standards C++11, C++17, C++20, C++23 , Independently published
Narasimha Karumanchi (2016) Data Structures and Algorithms Made Easy: Data Structures and Algorithmic Puzzles, 5th ed. , CareerMonk Publications

Other Relevant Texts:

Anna Skoulikari (2023) Learning Git: A Hands-On and Visual Guide to the Basics of Git , O'Reilly Media

Programme(s) in which this Module is Offered:

MECYSETFA - CYBER SECURITY
MEEDCOTFA - EDGE COMPUTING
PGEDGCTFA - EDGE COMPUTING

Semester(s) Module is Offered:

Autumn

Module Leader:

Reiner.Dojen@ul.ie