American Univesity of Beirut

Computer Science

​​​​Mission Statement:
The Department of Computer Science at AUB Mediterraneo prepares students for advanced studies and professional careers in the dynamically changing world of computing and information technology. Our program combines the theoretical foundations of computing with the practical knowledge of software development vital to industry, to provide a broad and integrated curriculum. The department offers a Bachelor of Science (BS) degree in computer science, designed to be completed typically in four years. The department has vigorous research programs in graphics and multimedia, networking and security, machine learning and data science, high-performance computing, data mining and information retrieval, and software engineering. Our faculty members are committed to contributing to the advancement of the field of computing through​ scholarly activities, in which our students play a vital role.​​​

BS in Computer Science:
The BS program aims at imparting graduates with a solid foundation in computing at both the theoretical and practical levels, thus conferring the ability to design, build, and deploy sophisticated systems using state-of-the-art technologies in a broad array of areas. It also develops an appreciation of the transformative impact that computing has had on a wide variety of disciplines. Students are trained in quantitative reasoning, the use of fundamental principles and ideas (abstraction, modularity, data structures, algorithmic, computability, calculus, and logic) for analysis and problem solving, and disciplined development of modern software systems. The BS program adheres to ACM’s (Association of Computing Machinery) standards for knowledge areas learning outcomes. 

Degree Requirements:
To graduate with a BS in computer science, a student must complete the following requirements: 

University General Education Requirements 
The General Education requirements are the following: 

  • English Communication Skills (12 ECTS), Arabic Communication Skills (12 ECTS)
  • Quantitative Reasoning (6 ECTS)
  • Understanding the World (12 ECTS)
  • Understanding Our Cultures and Histories (24 ECTS)
  • Understanding Our Thinking, Learning and Doing (12 ECTS)
  • Understanding Our Role in The World (12 ECTS)​


Major Requirements​

  • Computer science: CMPS 201, CMPS 202, CMPS 211, CMPS 214, CMPS 215, CMPS 261, CMPS 221, CMPS 231, CMPS 240, CMPS 242, CMPS 244, CMPS 261, CMPS 270, CMPS 271, CMPS 290 and 36 additional ECTS in computer science courses numbered 214 and above.
  • Technical electives: 6 ECTS to be chosen from the following:
    • CS elective numbered 214 or above,
    • PSYC 222, PSYC 229
    • Mathematics:  MATH 101 (Calculus I), MATH 102 (Calculus II), MATH 201 (Calculus III), MATH 218 (Linear Algebra and Differential Equations), STAT 230 (Probability & Statistics)
  • or any other course following the approval of the Chairperson.

All prospective computer science majors are expected to complete CMPS 201, CMPS 202, CMPS 211, and MATH 101, Math 102, Math 218 in the first year. Computer science majors are expected to maintain an average grade of at least 2.2 in computer science courses. Students must have a grade of at least C+ in CMPS 201, and a grade of at least C+ in CMPS 202 before they are allowed to enroll in most CS courses. 

Sample Study Plan for BS:
A typical study plan could have the following distribution of CS courses:

First Year 

  • Fall term: CMPS 201, CMPS 211, MATH 101, ENG, GE
  • Spring term: CMPS 202, MATH 102, MATH 218, ENG, GE 

Second Year

  • Fall term: CMPS 214, CMPS 221, CMPS 270, MATH 201, GE
  • Spring term: CMPS 231, CMPS 244, CMPS 271, STAT 230, GE

Third Year

  • Fall term: CMPS 215, CMPS 240, CMPS 261, GE, GE
  • Spring term: CMPS 242, CS elective, CS elective, GE, GE

Fourth Year

  • Fall term: CMPS 290, CS elective, CS elective, GE, GE
  • Spring term: CS elective, CS elective, TECH elective, GE, GE​


CMPS 201 Introduction to Programming   (6 ECTS)
This course introduces students to programming and computational thinking. A high- level programming language is used. Students will learn the principles of imperative and object- oriented programming in addition to basic data types, flow control (repetition and selection constructs), procedures and functions, parameter passing, scoping, recursion, arrays, and classes. Students are briefly introduced to simple algorithms and data structures​

CMPS 202  Intermediate Programming with Data Structures   (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). Prerequisite: a grade of at least C+ in CMPS 201. Every term 

CMPS 203 Programming for Everyone   (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. Not open to computer science students. 

CMPS 208 Computing for Business   (6 ECTS)

This course introduces Excel as a computer tool to plan, create, and use spreadsheets to formulate and solve business problems. It exposes students to a wide coverage of spreadsheet topics from introductory concepts such as problem formulation, writing formulas and functions, charting, grouping, and error prevention to more powerful and advanced features such as pivot tables, and analysis needed in decision-making. In addition, it boosts students’ ability to collect, analyze, and forecast business and financial data to generate valuable insights. The course offers students an opportunity to apply skills in a laboratory environment in which they can experiment using Excel business problems designed for some selected topics. It provides the tools to perform modeling, calculations, analysis of various phenomena encountered in other courses such as finance, operations management, human resources, etc. 

CMPS 211 Discrete Structures   (6 ECTS) 
This course introduces students to discrete structures, focusing on those relevant to computing sciences. Topics covered include Logic and Proofs, Sets, Sequences, Functions, Growth of Functions, Algorithms and their complexities, Induction and Recursion, Counting, and Recurrence Relations. Every term. 

CMPS 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, greedy algorithms, dynamic programming, multi- threaded algorithms, matrix algorithms, as well as (advanced) graph algorithms. Several data structures are also studied such as red-black trees, binomial heaps, Fibonacci heaps, and suffix trees. Prerequisites: CMPS 211 and a grade of at least C+ in CMPS 202. Annually. 

CMPS 215 Theory of Computation   (6 ECTS)  
A course that covers basics of automata and language theory, computation theory, and complexity theory. Topics include regular expressions, finite automata, context-free grammars and parsing, push down automata, closure properties, Turing machines, Church’s thesis, reductions and decidability, time complexity and NP-completeness, space complexity, polynomial-space and log-space computations, circuit complexity, probabilistic computations and complexity classes, approximation algorithms, and selected topics as time permits. Prerequisites: CMPS 214. Annually. 

CMPS 216 Algorithmic Graph Theory  6 ECTS  This course 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). Some of the topics that will be covered include fundamentals of graphs, connectivity, matching, covering, planarity, sparsity, coloring, and network flows. Prerequisites: CMPS 214. Annually. 

CMPS 217 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. It surveys many of the techniques that apply broadly in the design of efficient algorithms, and studies 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. This is a tentative list of topics that might be covered; some material will be selected adaptively based on the background, interests, and rate of progress of the students. Prerequisites: CMPS 215. Annually. 
 

CMPS 221 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. Prerequisites: CMPS 211 and a grade of at least C+ in CMPS 202. Annually.

CMPS 224 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. Prerequisites: CMPS 221. Annually. 

CMPS 231 Programming Languages   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: a grade of at least C+ in CMPS 202. Annually.

CMPS 232 Compiler Construction    6 ECTS 
This course covers the design and implementation of optimizing compilers starting from source code representation down to machine code. Topics include intermediate representations, linkage and storage conventions, intermediate code generation for imperative and object-oriented languages with polymorphism, global dataflow analysis and the iterative dataflow algorithm, local and global optimizations, backend code generation, and register allocation. Prerequisites: CMPS 221 and CMPS 231. Annually.  

CMPS 240 Operating Systems   6 ECTS 
This course provides an introduction to the fundamentals of operating system function, design, and implementation. It contains a theory component illustrating 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, the following topics will be briefly examined: Virtualization, security, distributed synchronization, and perhaps other topics. A case study of a contemporary operating system like UNIX accompanies the course. Prerequisite: CMPS 221. Annually. 

CMPS 241 Systems and Network Programming   6 ECTS 
This course focuses on the programming aspects of networking protocols. Topics include: Designing and building programming applications that use computer networks, fundamental concepts required to build iterative and concurrent client/server networking applications using sockets. Then it moves to explain low level networking programing and other advanced socket topics. The course also presents the emerging peer-to-peer computing along with some tools needed to develop P2P applications. Prerequisite: CMPS 240. Annually. 

CMPS 242 Computer Networks       6 ECTS 
An introduction to network architectures and protocols, placing emphasis on Internet design principles and methodology. Specific topics include application layer protocols, network programming, transport protocols, circuit switching and packet switching, routing algorithms, multicast, local and wide area networks, error detection and correction, and performance evaluation. Prerequisite: CMPS 221. Annually.

CMPS 243 Computer and Information Security        6 ECTS
This course introduces students to the world of information and computer security. Students will be exposed to various security vulnerabilities of computing and networking systems and learn their fundamental aspects 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: a grade of at least C+ in CMPS 202 and senior standing. 

CMPS 244 Database System       6 ECTS 
This course covers the fundamental concepts of database systems. Topics include data modeling using the Entity-Relationship model and the Relation model; query languages including relational algebra and SQL; File Organization and Indexing; Normalization; database programming; and noSQL databases. The course is offered in blended-format and includes a term project. Prerequisite: a grade of at least C+ in CMPS 201 and junior standing. Annually. 

CMPS 245 Information Retrieval and Web Search      6 ECTS 
This course introduces graduate-level students to the basics of information retrieval, and the models and algorithms underlying modern search engines. Topics covered include: crawling; indexing; Boolean and vector space retrieval models; probabilistic information retrieval models; language models; top-k query processing; evaluation of information retrieval systems; relevance feedback; link analysis; latent semantic analysis; and information extraction. Prerequisite: Senior standing. Annually. 

CMPS 246 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: CMPS 240. Annually. 

CMPS 247 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). Due to time limitations, some topics might be covered through student presentations. Prerequisite: CMPS 242. Annually. 

CMPS 251 Numerical Computing    6 ECTS
Techniques of numerical analysis: number representations and round-off errors, root finding, approximation of functions, integration, solving initial value problems, Monte-Carlo methods. Implementations and analysis of the algorithms are stressed. Projects using MATLAB or a similar tool are assigned. Prerequisites: a grade of at least C+ in CMPS 201, and MATH 201. Annually. 

CMPS 261 Machine Learning    6 ECTS 
This course covers Machine Learning theory, algorithms, and applications. Machine Learning is currently at the heart of Artificial Intelligence. It enables computational systems to adaptively improve their performance with experience accumulated from the observed data. This course balances theory and practice and covers the mathematical as well as the heuristic aspects. It also covers the latest trends in Machine Learning such as deep learning. Prerequisites: a grade of at least C+ in CMPS 201, STAT 230, and MATH 218. 

CMPS 262 Data Science    6 ECTS
This course introduces foundational elements comprising the data science pipeline. It covers techniques in data acquisition, cleaning, and preparation for machine learning, basic applied machine learning techniques spanning distance based algorithms, rule based algorithms, and black box algorithms, basic statistics for machine learning (descriptive, inferential, and estimation statistics), basic time series analysis and forecasting techniques, data production techniques using knitr and rmarkdown, and machine learning interpretability using SHAP. The course is delivered using both the R and Python programming languages. Prerequisites: a grade of at least C+ in CMPS 201, STAT 230. 

CMPS 263 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. Prerequisites: CMPS 261. 

CMPS 270 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, design patterns, concurrency; version control and event driven programming. Prerequisite: a grade of at least C+ in CMPS 202. 

CMPS 271 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 full development lifecycle methodologies, choosing the right SDLC, requirements management, software design, design patterns, testing. A group term project provides a holistic hands-on experience building an end-to-end software application using agile principles and emulating a real-world environment often for real clients with real needs. Other topics covered include working in a team, professionalism, project management, and ethics. Prerequisite: CMPS 270. Annually. 

CMPS 272 Advanced Software Engineering    6 ECTS 
A course on state of the art software engineering for large distributed and concurrent systems. Fundamental principles and concepts for specifying, designing, analyzing, implementing, and testing such systems. Concurrent object oriented paradigms. Design patterns. Use of tools. Documentation using both formal and informal descriptions. Students will develop at least one large software system as part of the course. Prerequisite: CMPS 271. Annually.

CMPS 275 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: a grade of at least C+ in CMPS 202. Annually. 

CMPS 278 Web Programming and Design    6 ECTS 
This course introduces the fundamentals needed to program on the Internet as well as 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 the skills and tools needed to create dynamic Web-based applications. It provides in-depth coverage of various markup languages and their associated cascading style sheets, several client side and server side scripting languages (such as PHP and JavaScript, Angular, and Nodes) in addition to AJAX-enabled rich Internet applications, client-side technologies, web services, Web Servers, and multi- tiered applications using relational database systems. Prerequisite: a grade of at least C+ in CMPS 202. Annually. 

CMPS 280 Digital Media Programming    6 ECTS 
The class is an introduction to digital media programming and processing. The course explains the essential technology behind images, animations, sound, and video and illustrates how to write interactive programs that manipulate these media in creative ways. The class assumes basic knowledge in Java or a first course in programming. Prerequisite: a grade of at least C+ in CMPS 201. 

CMPS 282 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: a grade of at least C+ in CMPS 202. Annually

CMPS 285 Computer Graphics    6 ECTS
A course that covers the practice of, and underlying mathematical foundation for, interactive graphics programming. Topics include basic graphics systems, graphics primitives and attributes, windows and viewports, clipping, geometric transformations, color systems, 2D texture mapping, and introduction to 3D graphics. Programming in OpenGL will be used. Prerequisite: a grade of at least C+ in CMPS 202. Annually. 

CMPS 290 Internship       2–6 ECTS
 Computer Science 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. Prerequisite: Senior standing. 

CMPS 296 Computer Science Tutorial    2–6 ECTS 
Prerequisite: Senior standing. ​

CMPS 297 Special Topics in Computer Science     2–6 ECTS
A course on selected topics which change according to the interests of instructor and/or students. Topics are chosen from state-of-the-art innovations in software and computer information systems. Prerequisite: Consent of instructor. Annually. 

CMPS 299 Capstone Project  6 ECTS 
A course to enhance students’ skills with practical experience giving them the opportunity to integrate knowledge accumulated in different courses. In this course, students must deliver a software product which passes through the design, analysis, implementation, testing, and evaluation stages. Prerequisites: senior standing. ​


PROGRAM OF STUDY FOR A BACHELOR OF SCIENCE IN COMPUTER SCIENCE
​​ MAJOR REQUIREMENTS
COURSE or Course Name ECT S
CMPS 201 Introduction to Programming6
CMPS 202 Intermediate Programming with Data Structures6
CMPS 211 Discrete Structures6
CMPS 214 Algorithms and Data Structures6
CMPS 215 Theory of Computation6
CMPS 221 Computer Organization and Design6
CMPS 231 Programming Languages6
CMPS 240 Operating Systems6
CMPS 242 Computer Networks6
CMPS 244 Database Systems6
CMPS 261 Machine learning6
CMPS 270 Software Construction6
CMPS 271 Software Engineering6
CMPS 290 Internship 6
CS ELECT. 1  6
CS ELECT. 2  6
CS ELECT. 3  6
CS ELECT. 4  6
CS ELECT. 5  6
CS ELECT. 6  6
Total Credits in CS: 120
REQUIRED MATH/STAT COURSES
Math 102 Calculus II6
Math 201 Calculus III6
Math 218 Linear Algebra & Diff. Eq.6
STAT 230 Prob. & Statistics6
Total Credits: 24
REQUIRED TECHNICAL ELECTIVE COURSES:
TECH ELECT 1  6
Total Credits: 6
​​​ GENERAL EDUCATION COURSES
Arabic Communication Skills6
English Communication Skills6
English Communication Skills6
Citizen Science6
Public Health6
Understanding Our Cultures and Histories6
Understanding Our Cultures and Histories6
Understanding Our Cultures and Histories6
Understanding Our Cultures and Histories6
Understanding Our Thinking, Learning and Doing6
Understanding Our Thinking, Learning and Doing6
Understanding Our Values6
Understanding Our Engagement6
Quantitative Reasoning : Math 1016
Total Credits: 90
TOTAL CREDITS NEEDED for GRADUATION 240



Contact Us

For various questions, please try contacting us via social media first!
email us

Privacy Statement

We take data privacy seriously and adhere to all applicable data privacy laws and regulations.
read more

Copyright and Disclaimer

Written permission is needed to copy or disseminate all or part of the materials on the AUB Mediterraneo website.
read more

Title IX, Non-Discrimination, and Anti-Discriminatory Harassment

AUB Mediterraneo is committed to providing a safe, respectful, and inclusive environment to all members of its community.
read more