cs@cs.ucy.ac.cy | +357-22-892700

| | | | MyCS Portal |

Undergraduate Programme Courses Description

Undergraduate Programme Courses Description

CS 111 Discrete Structures in Computer Science and Computation

Foundations: sets and functions. Logic: Propositional Logic, basics of Predicate Logic. Mathematical reasoning: methods of proof, induction. Counting: basics of counting, pigeonhole principle, permutations and combinations. Relations: properties and applications, equivalence relations, partial orders. Graphs: basic concepts.

CS 121 Digital Systems

Principles of design and construction of digital electronic systems and computers. Representation of data with binary sequences. Data storage and processing by electronic digital circuits. Consolidation of theoretical knowledge through practical exercises in the design and construction of digital circuits in the laboratory for Digital Systems Design and Microprocessors.

CS 131 Programming Principles I

Presentation of the software development process and introduction to the basic principles of programming and program design using the C language. Global overview of the C language with emphasis on data types, control structures, data structures, functions and modular programming.

CS 132 Programming Principles II

Advanced programming techniques and methodologies based on the C language. Topics include static and dynamic memory management, file management, pointers, recursion, dynamic data structures and C preprocessor. Introduction to the object-oriented programming model through the C++ language with emphasis on objects, abstraction and encapsulation, methods, classes and class inheritance.

CS 202 Explorations into Computer Science

Weekly lecturers/seminars that cover a broad spectrum of Computer Science and its basic areas, starting from its birth and reaching its modern evolutions. Revolutionary ideas for the foundation and development of Computer Science.

CS 211 Theory of Computation and Complexity

Formal methods of computation based on machines, grammars and languages: finite automata vs. regular languages; pushdown automata vs. contextfree grammars; Turing machines vs. unrestricted grammars. Models of computation equivalent to Turing machines and Church's Thesis. Computability and Uncomputability. Introduction to Theory of Computational Complexity with emphasis on the Theory of NP-completeness.

CS 221 Computer Organization and Assembly Language Programming

Introduction to computer organization and architecture. Types of instructions, coding of instructions, Arithmetic and Logic Unit. Basic principles of the organization of the main functional units of a computer system at machine level: Central Processing Unit (CPU), memory, and Input/Output. Interfacing CPU and peripheral units. Programming in assembly language for MIPS R2000/R3000 and Intel Pentium.

CS 222 Operating Systems

Introduction, history and evolution of operating systems. General structure, operations and characteristics of an operating system. Concurrency. Process management. Scheduling and dispatch. Real and virtual memory management. I/O management and disk scheduling. File management. Protection, security and reliability.

CS 231 Data Structures and Algorithms

Study of data structures for the organization and efficient processing of data. Linear and non-linear data structures. Hashing techniques. Issues of memory management. Sorting Algorithms. Graph Algorithms. Introduction to algorithm design techniques. Analysis of the average and worst-case complexity of algorithms.

CS 233 Object-Oriented Programming

Development of object-oriented way of thinking and capabilities to apply it to solving complex problems. Principles of object-oriented programming and implementation using the language JAVA. Problem-solving and programming using object-oriented methodologies. Introduction to Object-Orientation. Objects and classes. Abstraction and Information Hiding. Libraries. bject-oriented design. Inhertance Polymorphism. Interfaces. Inner classes in Java. Exceptions. Input / Output.

CS 241 Systems Analysis and Design

Study of the theory and the methodologies which have been developed over the years in the area of systems, with the objective to introduce techniques and methodologies for systems analysis and design of Information Systems. Special attention to the study of "Information Society" and its effect in system development and maintenance.

CS 323 Theory and Practice of Compilers

Fundamental principles of compiler design. Relation of translators to formal languages and automata theory. Lexical, syntactic and semantic analysis, code generation and optimization, etc. Practical exercises using lex and yacc.

CS 324 Communications and Networks

Data and computer communication fundamentals. Protocols and local and wide area networks. Open systems such as the Internet. TCP/IP protocol suite: Application Layer and protocols; Transport Layer; Network Layer and routing; Link Layer. Introduction to network and protocol erformance evaluation.

CS 342 Databases

The main objective of this undergraduate course is to provide an in-depth understanding of concepts related to the design and utilization of a database management system. Students will get a deeper understanding byimplementing these concepts in a commercial database management system. The course is organized in four parts: i) Introduction and Conceptual Modeling using the ER Model, ii) Relational Model and Relational Algebra, iii) Structured Query Language III, and iv) Database Design Theory and Methodology.

CS 361 Software Engineering

The main objective is the familiarization with and assimilation of the methodologies, models and tools used to develop quality software systems. Familiarity with software systems design and prototyping. Content: Methods, tools, and procedures for the development and maintenance of large-scale software systems within specified quality and cost constraints. Life-cycle models, specification techniques, software development methodologies, verification and validation, CASE, and other tools. Prototyping (HTML, CSS). Project planning and management. Software system modeling (UML). Practical experience with CASE tools for modeling data and procedures.

CS 362 Software Engineering II

Objectives: Familiarization and understanding of advanced principles, concepts and practices of software engineering. A number of contemporary areas of software engineering will be covered. This course further serves as a “roadmap” for advanced electives and graduate courses in software engineering. Content: Agile software development. Model driven engineering. Legacy systems. Sociotechnical systems. Software reuse. Component Based systems. Distributed software engineering. Service oriented architectures. Embedded software. Aspect oriented software engineering.

CS 363 Professional Practice in Software Engineering

The main objective is embedding and practical application of the theoretical approaches and methodologies of Software Engineering to the development of a product-software system that serves the needs of an organization belonging to the local market. Content: Undertake and carrying out to completion of a significant software project by small student groups (of about 4-6 students each). All phases in the development of software. Some of the specific projects come from the industrial sector.

CS 370 Systems Programming

Introduction to the state-of-the-art uniprocessor, high performance computer architecture. Emphasis on quantitative analysis and cost/performance trade-offs in the design of the basic units of a processor: instruction set, pipelining, memory system and input/output systems. Qualitative analysis of real machines and their performance data.

CS 371 Systems Programming

Objectives: The main objective of this undergraduate course is to allow students develop complex system-level software in the C programming language while gaining an intimate understanding of the UNIX operating system (and all OS that belong to this family, such as Linux, the BSDs, and even Mac OS X). Topics covered will include the user/kernel interface, fundamental concepts of UNIX, user authentication, basic and advanced I/O, fileystems, signals, process relationships, and interprocess communication. Fundamental concepts of software development and maintenance on UNIX systems will also be covered. The students are expected to have a good working knowledge of the C programming language and a good working knowledge of fundamental Operating System Concepts. Contents: Main concepts of System Programming, Introductory and Advanced UNIX commands, System utilities and stream editors (awk,sed), Advanced Shell programming with an emphasis on Bash, Low-Level I/O in C, Files and Filesystem, Processes: Environment, Control and Signals, Interprocess Communication (IPC) with an emphasis on Pipes and Named Pipes (FIFO) in C, XSI IPC (Semaphores, Shared Memory and Message Queues) in C, Network IPC (TCP Sockets) and the client/server model in C, Multithreading in C, Performance evaluation (profiling). Issues in system security and system engineering, Systems Programming in Windows (threads, processes, IPC, sockets and Powershell programming), Scripting Languages: Perl, PHP, Python, TCL/TK.

CS 372 Parallel Processing

The entire spectrum of parallel machines as appearing in Flynn’s classification: SISD, SIMD, MISD, MIMD. The main approaches for design and operation of multiprocessor systems. Conventional and non-conventional machines (Data-flow and reduction). Parallel programming approaches: (1) Automatic-parallelizing compilers, (2) Extending serial languages with parallelizing constructs, (3) parallel languages for Functional Programming. Special emphasis on parallel architectures and parallel programming.

CS 375 Advanced Networks

Objectives: Extension of the basic knowledge about Computer Networks regarding architectures, techniques and protocols Multimedia and Multiservice Networks. Familiarization with the state-of-the-art in Computer Networking, and the main research activities in the area of High-Speed Multimedia and Multiservice Networks. Content: Introduction to computer networks and the Internet. The IPv6 Internet protocol. Multicast routing. The TCP protocol. Congestion control. Performance analysis. Multimedia networking applications. Real-time services and protocols. Quality of Service (QoS). QoS routing. MPLS Traffic engineering. Mobile and wireless networks. Issues in security for computer networks. Content: Introduction to Computer Networks and the Internet, Network Layer - IPv6, Routing - Multicast Routing, TCP, Congestion Control, Performance Analysis, Multimedia Networking Applications. Realtime services and protocols, Quality of Service, MPLS, Traffic Engineering, QoS Routing, Mobile and Wireless Networks, Issues in Security for Computer Networks.

CS 411 Semantics of Programming Languages

Basic types of semantics of programming languages: procedural, declarative and axiomatic. Relations among these basic types. Formal concepts of semantics and their applications to common programming languages. Introduction to Field Theory and Information Systems within the framework of semantics of programming languages.

CS 412 Logic in Computer Sciences

Objectives: The main objective of the course is to prepare students for using logic as a formal tool in Computer Science. Furthermore, it aims to develop and cultivate formal and syllogistic reasoning and provide a thorough introduction to computational logic and its applications in Computer Science. Content: Propositional Logic Syntax, Semantics, Normal Forms, Decision Procedures, Proof Theory, Compactness and Resolution. Predicate Logic: Syntax and Semantics, Proof Theory Soundness and Completeness and Resolution. Logic Programming. Programming Language Semantics and Verification. Linear and Branching Temporal Logics: Syntax, Semantics, and model-checking algorithms.

CS 413 Computational Geometry

Convex hull in the plane: basic properties and algorithms from computing it. Arrangements of line segments: computing intersections, representing subdivisions, computing an overlay. Arrangements of lines: incremental construction algorithm. The Art Gallery Problem: partition into monotone polygons, monotone polygon triangulation, simple polygon triangulation. Geometric searching: kd-trees, range trees, fractional cascading. Point location: basic properties of the trapezoid map, algorithm for constructing map and search structure, point location algorithm. Voronoi diagram: basic properties and algorithms for computing it. Delaunay triangulation: basic properties, incremental algorithm.

CS 420 High-Speed Multimedia and Multiservice Networks

Introduction to computer networks and the Internet. The IPv6 Internet protocol. Multicast routing. The TCP protocol. Congestion control. Performance analysis. Multimedia networking applications. Real-time services and protocols. Quality of Service (QoS). QoS routing. MPLS Traffic engineering. Mobile and wireless networks. Issues in security for computer networks.

CS 421 Computer Architecture

Introduction to the state-of-the-art uniprocessor, high performance computer architecture. Emphasis on quantitative analysis and cost/performance trade-offs in the design of the basic units of a processor: instruction set, pipelining, memory system and input/output systems. Qualitative analysis of real machines and their performance data.

CS 422 Multimedia, Hypermedia and Cyberspace

Introduction to multimedia, hypermedia and the development of applications for telecooperation systems via computers. User interfaces, methods of communication and cooperation among the users, design of shared workspace, combining information. Emphasis on applications built on top of Internet and the World Wide Web.

CS 423 Microprocessor Systems

Microprocessor organization and Assembly Language Programming. Design of microprocessor based systems. Memory. Input/Output. Interrupts. Bus interfacing.

CS 424 Digital Signal Processing

Discrete signals and systems, sampling of signals, frequency analysis of discrete systems and signals, z-transform, Fourier-Transform, Discrete Fourier Transform, and Fast Fourier Transform, digital filters, application examples.

CS 425 Internet Technologies

Topics of Internet and World-Wide Web technologies, with an emphasis on WWW applications and Internet programming. The foundations of WWW applications including hypertext, navigation in hyperspace, hypertext usability, information overload, markup languages and methodologies of WWW application design. System issues related to Internet programming and performance: protocols, servers, WWW interactivity, Internet-based distributed systems.

CS 426 Computer Graphics

Scene construction, scene hierarchies, camera specification, projections of primitives, clipping, visible surface determination, polygon rasterisation (z-buffer), texture mapping, local and global llumination, shadows, ray tracing, radiosity, realtime acceleration techniques.

CS 427 Parallel Processing: Architectures and Languages

The entire spectrum of parallel machines as appearing in Flynn's classification: SISD, SIMD, MISD, MIMD. The main approaches for design and operation of multiprocessor systems. Conventional and non-conventional machines (Data-flow and reduction). Parallel programming approaches: (1) Automatic-parallelizing compilers, (2) Extending serial languages with parallelizing constructs, (3) parallel languages for Functional Programming. Special emphasis on parallel architectures and parallel programming.

CS 428 System Programming

Basic concepts of system programming. Shell programming (ksh/csh/bsh). Use of utilities (awk, sed, perl) and graphical tools (TCL/TK). Files and file-systems. Processes, threads and process synchronization. Network programming (socket programming) and the client-server model. Graphics programming (Xwindows).

CS 429 Context-Aware Pervasive Systems

Objectives: Introduction to Internet and the World-Wide Web Technologies. Emphasis in given on programming of Internet Systems and Services. Content: Software infrastructure for pervasive computing that can support the integration between the physical space and virtual computing space. Sensors and sensor networks that can capture and disseminate context information. Context-aware applications that use context information to create intelligent everyday objects and applications. Embedding computing into everyday objects. Security and privacy to protect access to user context information. Spontaneous interaction where appliances and services can seamlessly interact and interoperate with each other.

CS 431 Synthesis of Parallel Algorithms

Introduction to parallel computing. Complexity and efficiency measurements of parallel algorithms. Parallel computing models. Basic techniques for the design of parallel algorithms. Efficient parallel algorithms in Combinatorics, Graph Theory, and Matrix Theory. Complexity analysis of algorithms on the Parallel Random Access Machine (PRAM). Comparison between various models of computation. Advanced topics (fault-tolerance, atomicity, synchronization, computational limitations of PRAM).

CS 432 Distributed Algorithms

Formal models of distributed computing: shared memory versus message passing, determinism versus randomization, concepts of synchronism, asynchrony and real-time. Design and analysis of distributed algorithms and impossibility/improbability results for fundamental problems such as mutual exclusion, consensus, synchronization, leader election, construction of minimum spanning trees. Fault tolerance: Byzantine generals, wait-free algorithms, fault degrees. Formal methods for proving correctness of distributed algorithms. Advanced topics. Special emphasis throughout the course on lower and upper bounds on time and memory.

CS 433 Constraint Programming and Satisfaction

Definition of constraint satisfaction problems. Constraint representation and complexity. Various forms of consistency. Backtracking and look-ahead techniques. Intelligent backtracking and condition for solution finding without backtracking. Heuristic and local methods for solution searching. Available commercial products. Study of problems from different application domains, their modeling and the complexity of various algorithms solving them.

CS 434 Logic Programming and Artificial Intelligence

Basic principles of Logic Programming and implementation using the language Prolog. Relation of Logic Programming to modern considerations regarding Artificial Intelligence. Solving application problems drawn from the fields of Artificial Intelligence and Databases, making use of Logic Programming and Constraint Logic Programming.

CS 435 Human Computer Interaction

Analysis of the human as a computer system user (knowledge models, graphical animation, cognitive models). Interactive technologies (input-output devices, window environments, systems for collaborative support, virtual reality). Methodologies for the design of interactive systems.

CS 436 Algorithms and Complexity

Topics in the design and analysis of efficient algorithms and their complexity. General techniques of algorithmic design (e.g. divide-and-conquer, backtracking, dynamic programming). Significant algorithms in Graph Theory, Algebra, Geometry, Number Theory, Combinatorics and Game Theory. Randomized algorithms. Approximation algorithms. Online algorithms. Lower bounds. Fast Fourier Transform. Advanced topics (such as sorting networks, cryptographic algorithms).

CS 441 Advanced Topics in Software Engineering

Introduction. History and revolution of software systems and software engineering. Fundamental issues on components. Components vs. objects. Component interface, Patterns and software architectures. Basic principles of component programming. Coordination programming. Software composition. Middleware platforms and standards.

CS 442 Informational Learning Systems

Introduction to Pattern Recognition, Perceptron, Multilayered Neural Networks, Recurrent Neural Networks, Reinforcement Learning, Hopfield Networks & Boltzmann Machines, Support Vector Machines, Radial Basis Functions, Self Organizing Maps, Genetic Algorithms. Studies of the basic methods of Machine Learning, including classical statistical methods such as Bayes rule, discriminant and cluster analysis; artificial neural network methods such as supervised and unsupervised networks; other knowledge representation techniques like genetic algorithms.

CS 443 Artificial Intelligence and Expert Systems

Artificial Intelligence from the perspective of problem solving through search and the use of heuristics, knowledge representation and reasoning C basic concepts, predicate logic, associative networks, frams, production rules. Information Systems that represent expert knowledge as a main application area of techniques of Artificial Intelligence. "Embodiment" of specialized knowledge in Expert Systems with high level of competence. Applications of the Expert Systems Technology in various disciplines, such as Engineering, Medicine, Finance, etc. Appreciation of the nature of human expertise and the technology of Expert Systems.

CS 444 Computational Intelligent Systems

Evolutionary Computing. Genetic Algorithms. Artificial Neural Networks. Fuzzy Systems. Artificial Life. Development and Implementation of Computational Intelligence Systems.

CS 445 Digital Image Processing

Binary Image Representation. Image Histogram and Point Operations. Discrete Fourier Transform. Linear Image Filtering. Non Linear Image Filtering Pipeling. Image Compression. Image Analysis I. Image Analysis II. Digital Video Processing.

CS 446 Advanced Database Systems

The main objective of this undergraduate course is to provide an in-depth understanding of Database Management Systems. In particular, students will be exposed to the internal structures and algorithms of a relational database system. Students will get a deeper understanding by implementing components of the Minibase database system in the C++ language. Minibase is a database management system intended for educational use that includes a parser, optimizer, buffer pool manager, storage mechanisms (heap files, secondary indexes based on B+ Trees), and a disk space management system. The course is organized in four parts: i) Storage and Indexing, ii) Query Optimization, iii) Transaction Management and iv) Advanced Topics (Distributed Databases and XML Data Management).

CS 447 Artificial Intelligence

Problem solving techniques in Artificial Intelligence. Formal methods of knowledge representation. Specific application areas such as multi-agent systems, robotics, expert systems, machine learning and natural language processing. Problems of current focus and investigation in Artificial Intelligence. Links between Artificial Intelligence and other fields of Computer Science such as Distributed Systems, Databases and Multimedia.

CS 448 Intelligent Agents and Multi-Agent Systems

Introduction to Distributed Artificial Intelligence (DAI). Intelligent Agents (basic concepts, applications). Software Agents (main types, applications). Agent Societies. Distributed Programming of Actions. Formalisms in DAI: representation and reasoning based on Logic. Industrial and practical applications of DAI.

CS 449 E-Business / E-Commerce

In-depth study of the technologies used for e-Business/e-Commerce. Fundamentals of the Internet and WWW technologies protocols such as TCP/IP, HTTP, HTML. Study of the different operational models and strategies of e-Commerce and practical experience with systems such as Javascript, Java, DHTML, ASP, PHP, Websphere, and NET. Study of e-Government that covers electronic transactions between Public authorities and Citizen/business. System security such as access security and cryptographic security, electronic signature and electronic payments.

CS 450 Computational Biology

Application of analytic methods from Statistics, Mathematics and Computer Science to biological data so as to extract useful knowledge. Introduction to Bioinformatics. Pairwise sequence alignment and multiple sequence alignment algorithms. Statistical significance of alignment results. Phylogenetic prediction. Database searching for similar sequences, efficiency of relevant algorithms. Protein classification and structure prediction. Statistical analysis of DNA microarray experimental data.

CS 451 Data Mining on the Web

Objectives: Introduction to data mining, Clustering, Classification, Association Rules, Link Analysis, Web communities, Web Personalization. Content: Data mining on the Web refers to the automatic discovery of interesting and useful patterns from the data associated with the usage, content, and the linkage structure of Web resources. It has quickly become one of the most popular areas in computing and information systems because of its direct applications in e-commerce, information retrieval/filtering, Web personalization, and recommender systems. The primary focus of this course is on examining techniques from data mining to extract useful knowledge from Web data. This course will be focused on a detailed overview of the data mining process and techniques, specifically those that are most relevant to Web mining. Several topics will be covered such as Map-Reduce framework, Web data clustering, classification, association rules, recommendation systems, link analysis, social networks and Web advertising.

CS 461 Validation, Verification and Quality of Software

The main objective is teaching and assimilation of basic and specialized concepts on software validation and verification. Acquisition of knowledge for designing and implementing different types of audits and debugging procedures. Deepening in concepts and practices for ensuring quality in software systems. Content: Basic concepts and terminology for validation and verification, reviews, inspections, control (parts, system combination, regression, acceptance, coverage criteria), control of specific categories of software systems, analyzing problems and documentation. Basic principles of quality factors and quality characteristics of software, methodologies, tools, quality procedures, quality standards, models and quality metrics, quality software production process, quality plan, organize quality assurance process, quality assessment process.

CS 462 Analysis, Modelling and Design of Software

The main objective is deepening in fundamental concepts of software analysis, modelling and design. Design of effective, efficient and competitive software products. Training in software architectures, notations, standards and methods. Content: Fundamental concepts of software modeling (principles, conditions, properties), modeling languages​​, virtual models, model types. Early analysis (consistency, sufficiency, accuracy, quality). The role of models in the development and the connection with software development methodologies. Model-driven engineering. The role of software architecture in the software development lifecycle (user needs, design, implementation). The architectural design of a software system. Architectural representation.

CS 463 Software Reuse

The main objective is understanding the usefulness of software reuse. Deepening in the different levels of reuse and understanding the differences between them. Use of software components in practice. Content: Levels of reuse. Component-based development and composition. Best practices for reuse. Evolution of reuse. Software repositories. Search and retrieval. Design patterns. Object-oriented programming standards. Open source software. Open source licensing and legal issues. Organization policies and open-source based development. Outsourcing.

CS 470 Design of Embedded Systems

A review of embedded system processors. Organization of embedded systems: CPUs, RAM, ROM, buses, peripherals, sensors, actuators, interfacing. Examples of widely used processors buses and peripherals. Interfacing with peripherals: sampling, interrupts, advantages and disadvantages. Process distribution between hardware and software. Tools for the development of embedded systems and real time operating systems. Hands on experience with the development and implementation of embedded systems.

CS 475 Network and Information Security

Objectives: Introduction to network and information security principles, understanding of basic areas in Cryptography, Authentication and Confidentiality. Gain of knowledge in methods for the evaluation of Software, Applications and Systems with respect to security. Application of tools for the protection of networks, applications and information. Content: Introduction to Security Threats and Attacks, Cryptographic Techniques (encryption, cryptanalysis, authentication, confidentiality), identification and authentication (Kerberos, PKI), Internet Application security protocols ((PGP, SSL/TLS), Network security (Firewalls, IDS), Defending against threats on endsystems, Checking of networks and applications for vulnerabilities, Other issues in network and information security (privacy, ethics, legal framework).

CS 476 Wireless Networks

Objectives: The objective of this course is to introduce students into wireless mobile/local/cellular networks with an emphasis on the fundamental concepts and principles of the technology which are important for the design, application, evaluation and development of these systems. The course will also cover new architectures and topologies, existing and proposed standards as well as open research issues. Content: Wireless environment, Interference and other problems in wireless communications, Architectures and technologies of wireless networks and wireless communication, Wireless Local Area Networks (WLAN), Mobility Management Protocols at the Network layer and at higher layers (transport, application), New network technologies (ad-hoc, sensor, vehicular networks), Open research issues and challenges.