Content Editor

​​​​​
Bachelor of Science (BS) in Computer Science and Engineering (CSE)

Mission

The Bachelor of Science (BS) in Computer Science and Engineering (CSE) program provides students with a thorough base in computer science and engineering, merging theoretical knowledge and practical applications in computing and engineering fields. Graduates will gain the expertise needed to create, produce, and implement advanced systems using modern technologies in software development, hardware design, and systems engineering fields. Students will develop robust quantitative reasoning abilities and use fundamental ideas like abstraction, modularity, data structures, algorithms, computability, logic, and calculus to successfully address intricate issues. The curriculum extends beyond software development, focusing on the engineering processes involved in the structured and disciplined creation of modern hardware systems. This includes an emphasis on hardware-software integration, system architecture, and performance optimization, ensuring that students can deliver scalable and maintainable engineering solutions. Additionally, the program's course content follows the guidelines established by the Association for Computing Machinery (ACM) for knowledge domains and educational achievements, while also matching the criteria for the Accreditation Board for Engineering and Technology (ABET) accreditation. This alignment ensures that students possess a strong set of skills in both software and hardware engineering, preparing them for a prosperous career in the ever-changing technology and engineering fields.

Learning Outcomes

Students who complete the BS in CSE program will be able to:

  1. Analyze a complex computing problem and apply principles of computing and other relevant disciplines to identify solutions.
  2. Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.
  3. Identify, formulate, and solve complex engineering problems efficiently by applying principles of engineering, science, and mathematics.
  4. Evaluate and adopt ethical standards and sustainability practices in the design and deployment of computing and computer engineering systems.
  5. Manage software and engineering projects by applying leadership, critical thinking, and decision-making skills in real-world, complex environments.
  6. Communicate effectively both orally and in writing, particularly in documenting and presenting systems design and software solutions.

Program Requirements

For successful completion of the BS in CSE degree, students must complete all components of the program, which carry a total of 246 ECTS over 8 terms (4 years). The program consists of:

PROGRAM REQUIREMENTS ECTS
Compulsory Core CSE Courses 96 ECTS
Core CSE Electives 30 ECTS
General/Technical Electives 12 ECTS
Required MATH and STAT Courses 18 ECTS
General Education Courses 90 ECTS
Total ECTS 246

Courses and Course Descriptions

Below you will find a complete list of the courses and the course descriptions. In addition, you can find a sample study plan here.


Compulsory Core Computer Science and Engineering Courses

CSEN 100 Introduction to Computer Science and Engineering 6 ECTS

This course aims to provide students with a foundational understanding of computer science and engineering principles. It introduces essential concepts such as algorithms, data structures, computer hardware, software engineering, programming and networks. The course is designed to equip students with the analytical skills necessary to solve computational problems and the knowledge to understand the basic structure and function of computers.

CSEN 101 Introduction to Programming 6 ECTS

This course is designed for students with no prior exposure to computer science or programming. It aims to help students, regardless of their major, to feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals. To this end, it provides students with a brief introduction to many topics in computer science so they will have an idea of what is possible when they need to think about how to use computation to accomplish some goals later in their career. The course will use the Python programming language.

CSEN 112L Programming Laboratory 3 ECTS

This lab course is designed to introduce students to the Java programming language. The lab builds on students’ existing knowledge of programming from Python and focuses on core Java concepts such as object-oriented programming (OOP), data structures, and exception handling. The course includes hands-on programming exercises and projects that aim to develop a solid foundation in Java while reinforcing good programming practices. 
Pre-/corequisite: CSEN 101.

CSEN 111 Discrete Math 6 ECTS

This course will introduce students to discrete structures, focusing on those relevant to computer science. Topics covered include Logic and Proofs; Sets, Relations, Functions, Sequences; Growth of Functions; Basic Algorithms and their complexities; Induction and Recursion; Counting Principles.

CSEN 201 Object Oriented Programming 6 ECTS

This course consolidates algorithm design and programming techniques, with an emphasis on abstract data types. The course introduces students to the design, analysis, and implementation of data structures as well as some of the key algorithms operating them. Topics include lists, stacks, queues, deques, sets/maps, search trees (binary search trees and AVL trees), heaps/priority queues (heap sort), hash tables, and graphs (breadth-first search and depth-first search). 
Pre/Co-requisite: CSEN 112L.

CSEN 203 Digital Systems Design 6 ECTS

This course introduces the basic principles and practices of combinational and sequential design of digital systems: binary codes, Boolean algebra, combinational circuits design, combinational and sequential building blocks, and design of finite state machines. The course introduces the Hardware Description Language, VHDL; students design and implement two projects using VHDL, one for a combinational circuit and another one for a sequential circuit.

CSEN 203L Digital Systems Design Laboratory 3 ECTS

This course provides practical experience designing, implementing, and testing digital circuits and systems in this course. Basic logic gates, combinational and sequential circuits, and programmable logic devices like FPGAs will all be covered in the course curriculum. The course employs hardware description languages (HDLs) to teach students about the practical elements of designing digital systems. After completing several lab exercises, students will develop and construct a digital system as their final project. 
Pre/Co-requisite: CSEN 203.

CSEN 211 Computer Organization and Design 6 ECTS

This course covers the fundamentals of computer architecture with a focus on single-core processor design. Topics include: digital logic design, combinational and sequential logic, hardware for computer arithmetic, floating point arithmetic, assembly programming, instruction set architecture, datapath design, pipelining and pipeline hazards, memory organization, cache design, and virtual memory.

CSEN 214 Algorithms and Data Structures 6 ECTS

This course introduces systematic methods for the design and (asymptotic) analysis of advanced algorithms and data structures. Topics include searching, sorting, order statistics, divide-and-conquer algorithms, greedy algorithms, dynamic programming, multi-threaded algorithms, matrix algorithms, as well as (advanced) graph algorithms. Several data structures are also studied, e.g., red-black trees and binomial heaps.

CSEN 301 Operating Systems 6 ECTS

This course provides an introduction to the fundamentals of operating system function, design, and implementation. It contains a theory component about the concepts and principles that underlie modern operating systems, and a practice component to relate theoretical principles with operating system implementation. The course is divided into three major parts. The first part of the course discusses concurrency (processes, threads, scheduling, synchronization, and deadlocks). The second part of the course discusses memory management (memory management strategies and virtual memory management). The third part of the course concerns file systems, including topics such as secondary storage systems and I/O systems. If time permits, we may briefly examine virtualization, security, distributed synchronization, and perhaps other topics. A case study of a contemporary operating system like UNIX accompanies the course. 
Prerequisite: CSEN 211.

CSEN 302 Theory of Computation 6 ECTS

This course introduces students to the theory of computation, focusing on computability and then complexity. Different models of automata are considered: finite automata, pushdown automata, and Turing machines, which are presented as language recognizers. Other formal systems, regular expressions, and context-free grammars, are presented as language generators. Languages are classified accordingly. 
Prerequisite: CSEN 214.

CSEN 311 Computer Networks 6 ECTS

This course equips students with the knowledge and skills for understanding the basic operations of computer networking and internetworking systems. It describes the layered nature of communication protocols with special emphasis on the TCP/IP protocol suite. It presents a comprehensive view of the problematic, objective, and typical protocols of each layer. It also provides an introduction to network programming. Topics to be covered include but not limited to: transmission medium, local area networks and data link protocols, network architecture, network addressing, routing, network performance, network congestion, Reliability techniques and transport protocols, application layer protocols, client/server paradigm, network programming, networking tools and applications.

CSEN 312 Database Systems 6 ECTS

Today, many duties revolve around organizing, accessing and manipulating data. The most prominent and efficient way to manage data is by storing it in a database. The ability to develop and maintain databases using a database management system is becoming a critical skill that is required in almost all applications. This course introduces students to the fundamental concepts of databases, acquaints them with database management systems and trains them to develop and maintain real-world database applications. 
Prerequisite: CSEN 101.

CSEN 313 Software Engineering 6 ECTS

This course introduces practical industry-standard software engineering best practices to students that have already written moderate sized software. Students are exposed to a full development lifecycle from choosing the right SDLC, to requirements management, software design, development, patterns, testing and UAT. A group term project provides a holistic hands-on experience building an end-to-end software application emulating a real-world environment often for real clients with real needs. Other topics covered include working in a team, professionalism, project management, risk, and ethics. 
Prerequisite: CSEN 201.

CSEN 401 Artificial Intelligence 6 ECTS

The purpose of this course is to introduce students to the fundamental concepts and techniques of Artificial Intelligence (AI). The course aims to provide students with a solid understanding of AI principles, algorithms, and applications. By the end of this course, students will be able to apply AI methods to solve complex problems, understand the ethical implications of AI, and gain insights into future developments in the field. 
Prerequisites: STAT 101, CSEN 101.

CSEN 490 Internship 6 ECTS

To qualify for the degree of BS in Computer Science and Engineering, students are expected to work eight full weeks at a recognized firm, in Cyprus or abroad. Internships promote the student's personal development and professional preparation and enable them to develop competencies expected of professionals working in business, government or the broader community. It is the responsibility of the student to secure a training offer. The department and the faculty will assist the student to find an internship by maintaining a list of available opportunities for which students can apply. Prerequisite: Senior standing.

CSEN 499 Capstone Project/Thesis 6 ECTS

The objective of both courses is to enhance students’ skills with practical experience giving them the opportunity to integrate knowledge gained from courses across the curriculum. Students must work alone or in teams, and can pursue either an applied or research project. If the project is applied, students must identify the problem, analyze it, identify/define functional and non-functional requirements and constraints, and propose a valid software architecture. If the project is research oriented, students must identify the problem, analyze the work related to the problem being tackled, and propose a novel solution to the problem. Regardless of the choice of project, students must document their work in the form of written reports and oral presentations. 
Prerequisite: Senior standing.

Core CSE Electives

CSEN 402 Blockchain 6 ECTS

The course is designed to provide an introductory understanding of blockchain technology and cryptocurrencies such as bitcoin. The course will survey blockchain technology, distributed ledgers, and smart contracts; and introduce the theory and principles by which cryptocurrencies operate, how they function in practice, focusing on cryptography, game theory, and network architecture. The course will also cover the interaction of cryptocurrencies with the financial systems. 
Prerequisites: CSEN 214, CSEN 311.

CSEN 403 Mobile Application Development 6 ECTS

This course introduces to students the world of mobile applications development from a software engineering perspective. Students will learn the importance of a good design for a mobile application, in addition to being able to write a basic to intermediate mobile application. The course includes many software design patterns and user interface design patterns. Students will learn how to collect, store, and present data in a mobile application, in addition to using the different exciting features of a mobile such as locations, graphics, cameras, and other features. 
Prerequisite: CSEN 201.

CSEN 404 Web Programming and Design 6 ECTS

This course introduces students to the exciting world of WWW and teaches them the fundamentals of modern full-stack web development. It covers what is needed to program on the Internet and exposes the state-of-the-art technologies used in designing and developing rich multi-tiered web-based applications. It presents the basics of client-side/server-side web programming and all the skills and tools needed to create dynamic Web-based applications. As such, it provides in-depth coverage of HTML, Cascaded Style Sheets (CSS), the client-side scripting languages JavaScript, and JQuery, (and, if time permits, Angular) in addition to AJAX-enabled rich Internet applications with Fetch and JSON, client-side technologies, and web services. It covers, as well, Web servers and multi-tiered applications using relational database systems using the server-side scripting language NodeJS. 
Prerequisite: CSEN 201.

CSEN 405 Cloud Computing 6 ECTS

This course is an introduction to cloud computing. Students will learn about the state-of-the-art technologies that power up most of the internet, smart devices and services. Students will learn about cloud services provided by major cloud vendors such Amazon’s AWS, Google Cloud, and Microsoft’s Azure. The course will cover compute, storage, database, networking, security & monitoring, big data and machine learning services among others. Throughout the course, students will develop their own solutions using cloud services. 
Prerequisites: CSEN 301, CSEN 311.

CSEN 406 Autonomous Systems and Robotics 6 ECTS

This course is an introduction to autonomous systems and robotics and the key concepts and algorithms that power up intelligent robots today. Students will gain theoretical understanding of these concepts as well as practical experience implementing state-of-the-art algorithms in simulation and in the real-world. Topics include motion planning, configuration spaces, kinematics, robot arm manipulation, and the use of deep learning methods for computer vision. Students will use Python and the Robot Operating System (ROS) to program real and simulated robots. 
Prerequisites: MATH 201, CSEN 401.

CSEN 407 System and Network Programming 6 ECTS

This course focuses on the programming aspects of networking protocols. It provides you with all the skills needed to design and build programming applications that use computer networks. The course starts by presenting first the fundamental concepts required to build iterative and concurrent client/server networking applications using sockets. Then it moves to explain low level networking programming and other advanced socket topics. The course also presents the emerging peer-to-peer computing along with some tools and modules (based on Python) needed to develop P2P applications. 
Prerequisite: CSEN 101, CSEN 311.

CSEN 408 Cyber and Information Security 6 ECTS

This course introduces students to the world of information and computer security, one of the "hottest" and most relevant areas of computing today. Students will be exposed to various security vulnerabilities of computing and networking systems and learn their fundamental aspCREDITS/ECTS such as cryptography, user authentication, access control principles, trusted computing & multilevel Security, database security, SQL injection attacks, malicious software, worms, malwares, viruses, denial-of-service attacks, intrusion detection and prevention systems, firewalls etc. Also other topics related to operating system security, web security, wireless security, and Internet security are covered as time permits. The course will examine causes of security breaches and give methods to help prevent them. 
Prerequisite: CSEN 311.

CSEN 409 Advanced Machine Learning 6 ECTS

This course focuses on Deep Learning and its applications. Deep Learning has revolutionized the field of Machine Learning and has turned Artificial Intelligence from a research endeavor into an actual reality. In this course, you will learn about the fundamentals of Deep learning, and how to build Deep Learning models for various real-world applications, particularly in Computer Vision and Natural Language Processing. 
Prerequisite: CSEN 401.

CSEN 410 Data Science and Big Data Analytics 6 ECTS

Data Science is one of the fastest growing fields of this decade. We are inundated with data and yet need to make sense of it. Organizations use their data for decision support and to build data intensive products and services. Various inter-disciplinary technologies are emerging to help us make sense of this data, and become more intelligent in our decisions. The collection of skills required by organizations to support these functions has been grouped under the term “Data Science”. This introductory course will attempt to articulate the expected output of Data Scientists, and to help equip the students with the ability to deliver against these expectations, learning from data, and eventually gaining predictions and insights. Through real-world examples of wide interest, we introduce several key facets of the data science pipeline (lifecycle) using both the R and Python programming languages. 
Prerequisite: STAT 101.

CSEN 411 Software Construction 6 ECTS

Software Construction provides methods, tools and techniques to develop, modify, and maintain complex and efficient software systems. Topics include object-oriented design; specifications and invariants; abstract data types, testing, concurrency; version control and event driven programming. 
Prerequisite: CSEN 201.

CSEN 412 Programming Languages Design and Implementation 6 ECTS

This course covers the fundamentals of programming language design and implementation. The course introduces functional programming and examines the language design principles underlying functional, imperative, and object-oriented languages. Type systems are also introduced. The course also covers the initial stages of programming language implementation, including lexing, parsing, and semantic analysis. 
Prerequisite: CSEN 201.

CSEN 413 Digital Media Programming 6 ECTS

The course is an introduction to digital media programming and processing. It explains the fundamentals of images, animations, sound, and video. The students will be exposed to the basic media processing concepts. To apply these concepts, the students will be also introduced to “Processing”, a powerful programming language heavily used in developing multimedia applications. The class assumes elementary knowledge in Java or first course in programming. Regular assignments will be provided throughout the semester. In addition, students will implement a project that manipulates media in a creative way, to demonstrate their innovation and knowledge in multimedia processing. 
Prerequisite: CSEN 101.

CSEN 414 Information Retrieval and Web Search 6 ECTS

This course introduces students to the basics of information retrieval, and the models and algorithms underlying modern search engines. 
Prerequisite: CSEN 312.

CSEN 415 Advanced Design and Analysis of Algorithms 6 ECTS

This course studies advanced data structures and algorithms, with an emphasis on the design of efficient algorithms. We will survey many of the techniques that apply broadly in the design of efficient algorithms, and study their application in a wide range of domains and computational models. The goal is for the class to be broad rather than deep and to touch upon the following areas: data structures, bit tricks, string algorithms, maximum flows, linear programming, online algorithms, approximation algorithms, fixed-parameter algorithms, parallel algorithms, external-memory algorithms, computational geometry, and streaming algorithms. 
Prerequisite: CSEN 214.

CSEN 416 Advanced Networking Topics 6 ECTS

This course focuses on the current, advanced, and emerging topics in networking. It aims to make the students familiar with the state of the art in networking topics and enhance their skills in network programming and simulations. Lectures will cover topics that include but not limited to socket programming, multicasting, quality of service, IPv6 based networks, Voice Over IP and Internet telephony, software defined networks, network function virtualization, data centers, wireless and mobile networking architectures and technologies (MANET, LTE, 5G). 
Prerequisite: CSEN 311.

CSEN 417 Algorithmic Graph Theory 6 ECTS

This is an advanced course that explores algorithmic graph theory by visiting some of its core theorems, key problems, and efficient algorithms and tools. The main goal is to systematically present essential results for the design of graph algorithms. Mathematical properties of graphs will be used in developing new algorithms and showing that these algorithms work correctly and efficiently. The course assumes no prior knowledge of graphs but requires that students have “mathematical maturity” (e.g., are comfortable with proofs and abstract reasoning). 
Prerequisites: CSEN 211, CSEN 214.

CSEN 418 Computer Graphics 6 ECTS

This course provides a comprehensive introduction to modern 3D computer graphics modeling, animation, and rendering. Topics covered include basic image processing, geometric transformations, geometric modeling of curves and surfaces, 3-D viewing, visibility algorithms, shading, and ray tracing. 
Prerequisite: CSEN 201.

CSEN 419 Game Programming 6 ECTS

This course introduces students to game programming using state of the art technologies. The course covers both theoretical backgrounds and implementation details of different components of games. Topics covered will be the physical control of a game character, interactions between objects, inventory, HUD, and AI. 
Prerequisite: CSEN 201.

CSEN 420 Numerical Computing 6 ECTS

The class is an introduction to modern numerical and scientific computing. We will cover root finding, interpolation and approximations of functions, numerical differentiation and integration, linear equation solving, ODE solvers, as well as floating point representations and round-off errors. Both the implementation and analysis of the algorithms will be covered. We will also discuss some of the scientific and engineering applications of the methods presented. Matlab will be used as the implementation vehicle. 
Prerequisite: MATH 201.

CSEN 421 Compiler Construction 6 ECTS

The purpose of this course is to introduce students to the fundamental concepts and principles of compiler construction. Students will learn how high-level programming languages are translated into machine code, focusing on lexical analysis, syntax analysis, semantic analysis, code optimization, global dataflow analysis and the iterative dataflow algorithm, local and global optimizations, backend code generation, and register allocation. The course aims to provide both theoretical knowledge and practical experience in building compilers. 
Prerequisite: CSEN 211.

CSEN 422 GPU Computing 6 ECTS

This course covers parallel computing in the context of processors with many computational cores, with particular emphasis on data parallelism and general-purpose GPU programming. The course introduces the CUDA programming model as well as the GPU architecture and memory organization. The course then covers mapping algorithms to parallel hardware and common optimizations for parallel code using numerous parallel patterns and applications case studies, such as: vector addition, matrix multiplication, convolution, stencil computation, histogram, reduction, prefix-sum, ordered merge, sorting, sparse matrix computation, graph traversal, and others. The course also covers a selection of advanced parallel programming practices. 
Prerequisite: CSEN 211.

CSEN 423 Distributed Systems 6 ECTS

A distributed system consists of a set of nodes located at networked computers and communicate only by passing messages. This course provides techniques to abstract, design and implement efficient, scalable, and fault-tolerant distributed systems. Topics include, but not limited to, inter-process communication, distributed synchronization and consensus (e.g., paxos, blockchain), fault-tolerance, distributed file systems (e.g., HDFS), and Hadoop ecosystem. 
Prerequisite: CSEN 301.

CSEN 424 Digital Signal Processing 6 ECTS

Digital Signal Processing (DSP) is at the heart of almost all modern technology. This course introduces the fundamentals of DSP systems, including properties of discrete-time linear systems, digital filter design, sampling and reconstruction, A/D and D/A conversion, quantization, discrete-time Fourier analysis, spectral analysis, sample-rate conversion, FFT and fast convolution, filter structures and realizations, and multirate DSP and filter banks. The course also discusses applications of DSP in areas such as speech/audio processing and includes a project to implement one such application. Prerequisites: CSEN 203, MATH 201.

General/Technical Electives

CSE students can take technical electives from other departments or from Core CSE Electives after securing approval from the Chairperson. Two pre-approved technical electives include INDE 301 Introduction to Project Management and INDE 340 Engineering Entrepreneurship, courses within the Faculty of Engineering.

INDE 301 Introduction to Project Management 6 ECTS

This course explores technical and managerial challenges of project management in general. The topics addressed in this course range from project selection techniques, project planning, budgeting, risk analysis, resource management to project monitoring and termination. The goal is to understand how project management decisions are reached, what tradeoffs are made, and how outcomes depend on the underlying situation.

INDE 340 Engineering Entrepreneurship 6 ECTS

This course provides students with the tools necessary to create and grow a successful, innovative technology enterprise. Topics include evaluating market opportunities, designing profitable business models, producing a solid business plan, raising capital, addressing legal considerations and developing a winning team.

Teaching Staff

Georgios Charalambous

Faculty of Arts and Sciences
[email protected]

Ali Chehab

Professor - On Secondment Instructor

Faculty of Engineering and Architecture (AUB Main Campus)
[email protected]

Wassim El Hajj

Rector & Professor of Computer Science

Faculty of Arts and Sciences
[email protected]

Anita Moutchoyan

Senior Instructor

Faculty of Arts and Sciences
[email protected]

Photini Panayotou

Special Scientist-Lecturer

Faculty of Arts and Sciences
[email protected]

Rafael Papallas

Assistant Professor

Faculty of Arts and Sciences
[email protected]

Christodoulos Pavlou

Faculty of Business
[email protected]

Haidar Safa

Professor - On Secondment Instructor

Faculty of Arts and Sciences (AUB Main Campus)
[email protected]

Sanaa Sharafeddine

Professor - On Secondment Instructor

Faculty of Engineering and Architecture (AUB Main Campus)
[email protected]

Malek Tabbal

Dean, Faculty of Arts and Sciences & Professor of Physics

Faculty of Arts and Sciences
[email protected]

Marios Touloupos
Marios Touloupos

Visiting Instructor


Rafaela Vasiliadou

Special Scientist-Lecturer

Faculty of Arts and Sciences
[email protected]

Amy Zenger

Director, Institute for Liberal Arts & Associate Professor of English

Faculty of Arts and Sciences
[email protected]

Zinon Zinonos

Assistant Professor

Faculty of Arts and Sciences
[email protected]

​​​​​​