Courses

Undregraduate


  • ACSC423 - Ubiquitous Computing: The aim of this course is to provide students with the theoretical and practical knowledge that is necessary to enable them to participate in the design and deployment of mobile and ubiquitous computing solutions in a wide range of applications and environments. This course will also introduce the fundamental principles of Smartphone programming. In particular, development of Android applications.

  • ACSC299 - Visual Programming (Visual C# & Android): The course provides an introduction to Human-Computer Interaction (HCI). HCI is concerned with understanding, designing, implementing and evaluating user-interfaces so that they better support users in carrying out their tasks. On completing the course you will have knowledge of the theoretical foundations of designing for interaction between humans and computers. The course offers practical experience in implementing and evaluating graphical user interfaces in both desktop and mobile phone environments. This course also introduce the fundamental principles of event-driven programming and programming using a visual environment through the use of the Visual C# programming language and Android.

  • ACSC359 - Software Methodology (Java, MS SQL, JDBC): The main objective of this course is to introduce engineering students to software methodology, i.e. the tasks of software development, Requirements Engineering, Design, Process Models, Project Management as well as Object-Oriented Programming and Databases. By the end of the course students should be able to design and implement elementary projects using Java, MS SQL and JDBC.

  • ACSC404 - Web-Enabled Applications: The aim of this module is to familiarise students to the complexity and dynamics of developing web-enabled applications as well as with the acquisition of practical skills in the construction of such software. Upon successful completion of the course, students will be able to: Identify the elements of web enabled applications and types of e-commerce systems and recognize their impact. Demonstrate how multi-tier architectures can be employed for developing web enabled applications. Design multi-tiered web applications and develop them programmatically using technologies such as JSP, JavaBeans and Servlets. Experiment with concepts such as session tracking, object persistence/lifetime, collaboration with client-side objects (AJAX) and backend connectivity and evaluate and select appropriate solutions according for problems faced. Discuss the challenges of data inter-exchange over the Internet and understand the role of web services in web-based applications and construct and incorporate such services. Describe how web applications can be developed under the agile paradigm and discuss advantages and disadvantag

  • ACSC183 - Programming Principles II (C++): The main objective of this course is to understand the use of structures and arrays and apply them to construct and manipulate programmatically composite data types. Develop programs that read and write from/to files and can handle strings. Show the ability to use pointers and dynamic data types in programming exercises. Be able to design medium size programs using a modular approach and command the use of functions for developing algorithmic units and their communication through parameter passing and function returns. Appreciate the benefits and core concepts of object oriented C++ programming and develop simple programs using object-oriented terminology.

  • ACSC288 - DATA STRUCTURES: The aim of this module is to provide students with an in-depth understanding of the importance of data structures in the development of programs as well as strong familiarity with the development and usage of such concepts. The module will focus on the acquisition of practical programming skills using low-level concepts as well as conceptual understanding of how such choices affect program performance. An introduction to algorithmic complexity is also provided. Upon successful completion of the course students will be able to: Recognize the limitations of static data structures; compare and discuss the differences in memory allocation of static and dynamic data and construct programs that can handle, create, manipulate, and destroy dynamic data. Demonstrate the ability to implement linear abstract data types such as lists (single/double linked, circular), stacks and queues programmatically. Identify how such structures can be applied in Computer Science, distinguish the use of each and effectively employ them. Explain how tree data structures can be implemented, discriminate between the different tree types (generic, binary) and identify where they can be used. Evaluate tree traversal methods and be able of designing and constructing core tree operations using recursive functions. Examine implementation approaches for special tree structures such as priority queues. Define and describe data structure classes available in the standard template library, employ them for solving relevant problems and develop the necessary conceptual understanding that would help them adapt to similar programmatic environments (e.g. Collections in Java). Recognize the importance of algorithmic complexity, as well as understand complexity of basic algorithms and the concept of big O notation. Select, experiment, and programmatically develop appropriate data structures and algorithms for searching and sorting problems and judge the advantages. The above will be applied in practice using the C++ programming language.

  • ACSC476 - INTERNET TECHNOLOGIES: The aim of the course is to introduce leading technologies prevailing today in the Internet. The course will start with a brief revision on web content definition and programming on the client side using the full set of technologies: HTML, CSS, JavaScript and Libraries (e.g., jQuery). Based on this review the comparison of client-side with server-side programming will be presented, which will follow up with in-depth introduction of Hypertext Preprocessor (PHP). PHP is a server-side scripting language designed for highly-interactive and dynamic web development, but also used as a general-purpose programming language. PHP-based data management (e.g., sessions) and PHP to MySQL database connectivity and management will be also presented. The impact of the Model View Controller (MVC) pattern on server-side web programming and PHP will be also presented. Finally, the students will learn about the impact of XML in the shift towards Web 2.0 and the technologies (AJAX, JSON) that are available today, they are widely used and largely replace it. Upon successful completion of the course, students will be able to: Describe and explain how client-side technologies are combined and used to define web pages content and design, as well as program interactive features. Design and construct client-side web programs using the full set of client-side technologies: HTML, CSS, JavaScript and Libraries (e.g., jQuery). Evaluate the differences between client-side and server-side programming, be familiar with the dominant technologies that support each type and argue on the efficiency/effectiveness of each on various scenarios. Introduce and describe Hypertext Preprocessor (PHP), one of the most popular server-side programming languages for implementing dynamic web pages. Develop dynamic server-side web programs using the PHP technology, including web forms, session data management and MySQL database management. Argue on the impact of the Model View Controller (MVC) pattern on server-side web programming and apply it to construct powerful web applications. Discuss the impact of XML, JSON and AJAX technologies in the web evolution, and evaluate and critique the emergence of the Semantic Web and Web APIs.

  • ACSC131 - Internet Technologies - new BSc course structure: The aim of the course is to introduce students to the dominant technologies prevailing today in the Internet including application layer protocols, web content development and client-side scripting. The course will also introduce students to the impact of JavaScript and the development of cutting-edge technologies, powerful libraries and front-end web development frameworks: jQuery, AJAX, Bootstrap and HTML5. Upon successful completion of the course students will be able to: Describe and explain how various protocols operate and discuss their key characteristics with respect to their actual usage in the Internet. Learn to use Hyper Text Markup Language (HTML) for web content definition of static websites and describe and explain the evolution of HTML. Discuss the importance of web design, use Cascading Style Sheets (CSS) for web pages design and discern between web content and web design activities. Design and develop high-quality static websites using together HTML and CSS. Evaluate the differences between markup languages and scripting languages. Argue on the impact of client-side web scripting paradigms and learn how they can be used to construct elementary web applications. Develop client-side web programs by employing web scripting technologies such as JavaScript for user interaction and processing user input from forms. Discuss the impact of client-side technologies in the development of the web and learn how to use widely-used and well-known JavaScript and CSS libraries. Discuss and evaluate the impact of HTML5 on web development and exhibit the ability to utilize HTML5 constructs in web pages, especially for graphics.

  • ACSC155 - Systems Analysis: The aim of this subject is to introduce students to the fundamentals of Systems Analysis and Design. Students are introduced to the basics surrounding the activities of a system analyst and introduces the three main methodologies of the systems development life cycle (SDLC), agile approaches, and object-oriented analysis. The subject emphasizes the use of systematic and structured methodologies for performing information requirements analysis. Students are introduced to the details of the analysis process and data flows as well as structured and semi-structured decisions. The subject concludes with the essentials of system design.

  • ACSC384 - Advanced Database Systems: The course considers the concepts of modern database systems. Teaches the theory and application of advanced database systems, the supporting mechanisms of the DBMS, and the underlying theory of the database transactions in terms of Atomicity, Consistency, Isolation, and Durability (ACID). Implements practical applications of modern database systems, including the Model-View-Controller (MVC) architecture. Discusses alternative database systems, such as distributed databases and introduces Big Data

  • ACSC271 - Operating Systems: The course considers the concepts of modern operating systems. Teaches abstracts of processes, CPU scheduling, memory management, file systems, and security. Implements applications based on UNIX (commands, syntax, programming). Discusses alternative operating systems, such as Solaris, Linux, Windows 7, 8, and 10 with practical exercises on Linux OS and Windows.

  • ACSC223 - Database Management: The module aims to provide students with a thorough introduction to designing and using database systems within the context of data representation, and in particular the relational model. Students are introduced to both theoretical elements of data analysis including relational algebra, entity relationship modelling, normalization and integrity issues as well as practical aspects such as database modelling and implementation, SQL statements and system performance.

  • ACSC372 - Systems Programming: The course introduces Computer Science and Engineering students to UNIX fundamentals of an Operating System and expands knowledge using UNIX variants command line tools, shells, and extends C programming language to design and implement programs with interprocess communication using the network interface. The role of the C programming language as the language used for developing the UNIX operating system is emphasised through practical work carried out.

  • ACSC554 - Data Mining and Big Data Analytics: The aim of the this course is to provide students with a holistic approach to Big Data, the data model for Big Data, and examine the nature and requirements of a Big Data components, as well as Big Data as a platform. The course will introduce students to Data Mining and focus on intelligent data analysis. The major principles, terminology, problem types and research topics of Data Mining are addressed. The course will examine the main ideas behind some of the leading Machine Learning techniques being used in practical Data Mining and the issues that should be considered in their application. In addition, the course will consist of hands-on approach on Big data and experimentation on real life problems and data to promote the development of critical thinking on the proper application of Data Mining techniques.

  • ACOE399 - Computer Engineering Practice: The course aims to introduce computer engineering students to the more practical and technical aspects of computer engineering with the opportunity of spending some time in outside the university environment to practice and apply existing knowledge of computer engineering.

  • AENG224 - Technical Report Writing: The subject aims to guide students into writing different reports by following appropriate styles. Also the subject provides information to students to decide and use different methodologies that will enable them to find and combine information on a particular area. Furthermore students will be able to develop different technical reports and academic papers of professional standards.

Postgraduate


  • WSS551 - Interactive Design for Web Systems: The aim of this course is to provide an overview of concepts on Human Computer Interfaces design in making more comprehensive and user-friendly computer-based systems. The course will allow students to understand the theoretical dimension of human factors in the acceptance of computer interfaces and identify the impact of usable interfaces in the performance of Mobile and Web systems. The course enables students to identify techniques and practice in various platforms and toolkits for interface design, analysis and evaluation as well as develop creative skills in designing competitive user interfaces in web and mobile systems. Particular emphasis is given to extend students critical awareness of the issues and challenges associated to ubiquitous computing and augmented reality.

  • WSS503 - Ubiquitous Computing (Android): The aim of this course is to provide students with critical understanding of the technology, issues and challenges of smartphones and next generation mobile systems. The course will enable students to practice in various platforms and toolkits to develop skills in designing mobile applications, especially on Android, Windows Phone, iOS and Blackberry operating systems, and enhance students understanding of the mobile systems business aspect. Particular emphasis is given to extend students critical awareness of the issues and challenges associated with distributed, peer-to-peer and client/server architectures on mobile systems.

  • WSS502 - Web Engineering: The aim of this course is to provide students with critical understanding on how to productively engineer Web Applications. The course addresses the concepts, methods, technologies and tools for developing Web applications. Topics covered include evolution of the Internet and the Web, Web technologies and the basic models and architectures in a Web environment. It kicks-off with a theoretical examination of web engineering and its phases. It proceeds to introduce client-side technologies and server-side technologies that support the development of static web sites, dynamic web applications and rich internet applications. It concludes with an overview of cutting-edge concepts, technologies and frameworks that support full stack web development. The course has a theoretical underpinning, but focuses mostly on practical examples on how to engineer Web applications using the introduced implementation methods, techniques and tools.

  • WSS523 - Software Reuse: The aim of this course is to provide students with critical understanding of the technology, issues and challenges of software reuse at various levels. Specific focus in the course is dedicated to software reuse in web-based systems accessible via mobile devices. The course will enable students to practice software reuse at various levels, with different programming languages and on different platforms. In specific, the use of Java and HTML5 technologies will provide the capability to experience and practice software reuse on both desktop and mobile platforms, as well as at different levels such as object-oriented programming, component-based software development, middleware-based development, WS*-stack services, REST services and model-driven engineering. Finally, management of code repositories is introduced at the last week. In overall, the objective of the course is to enhance critical awareness, promote practical thinking and reasoning to solve practical problems through the reuse of software systems. Upon successful completion of the course, students will be able to: Understand the concepts, principles and methods of software reuse. Familiarise and understand the different levels of software reuse. Make proper use of ready-made software components in practice. Gain theoretical knowledge and analytical skills to develop applications by employing reuse methods at code, component, design and models levels. Learn how to reuse Java and Web components. Distribute effectively the results of their work to other developers using software repositories.