DEGREE REQUIREMENTS
To be recommended for graduation with a BSc in Computer Science, students must successfully complete the courses in the categories specified below. These categories cover the University University General Education Requirements (GER, 47 credits), the College of Engineering Requirements (CER, 22 credits), as well as Computer Science Core (53 credits), Free Electives (3 credits), and Technical Electives requirements (9 credits). Students may also opt for a concentration in Artificial Intelligence or Cybersecurity.
Computer Science Core Requirements (53 credits)
COSC 101
|
Foundations of Computer Science
|
3 cr.
|
COSC 201
|
Computer Systems Organization
|
3 cr.
|
ECCE 230
|
Object Oriented Programming
|
4 cr.
|
ECCE 336
|
Introduction to Software Engineering
|
3 cr.
|
COSC 310
|
Data Structures
|
3 cr.
|
COSC 312
|
Design and Analysis of Algorithms
|
3 cr.
|
COSC 320
|
Concepts of Programming Languages
|
3 cr.
|
COSC XXX
|
Artificial Intelligence Concentration course
|
3 cr.
|
COSC XXX
|
Cybersecurity Concentration course
|
3 cr.
|
ECCE 354
|
Operating Systems
|
3 cr.
|
ECCE 356
|
Computer Networks
|
4 cr.
|
COSC 410
|
Parallel and Distributed Computing
|
3 cr.
|
COSC 452
|
Human-Computer Interaction
|
3 cr.
|
ECCE 434
|
Database Systems
|
3 cr.
|
ECCE 436
|
Software Testing and Quality Assurance
|
3 cr.
|
COSC 497
|
Senior Design Project I
|
3 cr.
|
COSC 498
|
Senior Design Project II
|
3 cr.
|
Computer Science Technical Electives
Students are required to take a total of 9 credits from the following approved technical electives list. Technical electives must be at 300-level or 400-level and at most three credits may be independent study. Additional courses may be approved by the department as technical electives.
COSC 391
|
Independent Study I
|
1-3 cr.
|
COSC 401
|
Computational Social Science
|
3 cr.
|
COSC 412
|
Numerical Computing
|
3 cr.
|
COSC 430
|
Data Analytics
|
3 cr.
|
COSC 432
|
Algorithmic Robotics
|
3 cr.
|
COSC 434
|
Introduction to Machine Learning
|
3 cr.
|
COSC 440
|
Digital Forensics
|
3 cr.
|
COSC 442
|
Applied Cryptography
|
3 cr.
|
COSC 454
|
Computer Graphics
|
3 cr.
|
COSC 460
|
Bioinformatics and Genomic Data Science
|
3 cr.
|
COSC 462
|
Mobile and Web Applications Development
|
3 cr.
|
COSC 464
|
Natural Language Processing
|
3 cr.
|
ECCE 446
|
Network Security
|
3 cr.
|
ECCE 448
|
Cloud Infrastructure and Services
|
3 cr.
|
COSC 495
|
Special Topics in Computer Science
|
3 cr.
|
Computer Science Concentrations (Optional)
Computer Science students may opt for selecting a concentration in either Artificial Intelligence or Cyber Security. Selecting a degree concentration at Khalifa University leads to a specialization which will be specified on the student’s academic record (transcript). A concentration consists of 15 credits in the specialized area. The student can replace all technical and free electives credits in the major in order to meet the concentration requirement.
Artificial Intelligence Concentration
COSC 330
|
Introduction to Artificial Intelligence
|
3 cr.
|
COSC 430
|
Data Analytics
|
3 cr.
|
COSC 434
|
Introduction to Machine Learning
|
3 cr.
|
COSC 432
|
Algorithmic Robotics
|
3 cr.
|
COSC XXX
|
Artificial Intelligence Elective*
|
3cr.
|
*from an approved list of courses.
Cyber Security Concentration
COSC 340
|
Introduction to Computer Security
|
3 cr.
|
ECCE 446
|
Network Security
|
3 cr.
|
COSC 440
|
Digital Forensics
|
3 cr.
|
COSC 442
|
Applied Cryptography
|
3 cr.
|
ECCE 448
|
Cloud Infrastructure and Services
|
3 cr.
|
Free Electives (3 credits)
Students must complete 3 credits of free electives which are intended to provide students with flexibility to support their career paths and individual interests.
Course Description of Computer Science
COSC 101 Foundations of Computer Science (2-1-3)
Prerequisites: ENGR 112
The course provides a comprehensive high-level introduction to computer science. It exposes students to variety of topics from computer science and its applications, including: system software, computer network, cloud computing, databases, artificial intelligence & machine learning, and information security. Python programming language and basics of web development will be also covered.
COSC 201 Computer Systems Organization (2-3-3)
Prerequisites: COSC 101
This course provides a basic understanding of the fundamental logical organization of a computer (its parts and their relationship) and how it actually works; exposure to a central processor’s native language, and to basic computer components and basic architectures for high performance design. Topics include: Von Neumann architecture, C programming (low-level aspects), data representation, computer arithmetic, assembly language programming, digital logic design, registers, instruction counter, processor architecture, pipelining, memory hierarchies, caching, virtual memory, interrupts, input and output, buses.
COSC 301 Automata, Computability, and Complexity (2-2-3)
Prerequisites: COSC 101, MATH 234
This course is about fundamental ideas in the theory of computation, including formal languages, computability and complexity. In this standard computer science course, the students will gain the proficiency in the concepts of automata, formal languages, grammar, algorithms, computability, decidability, and complexity.
COSC 310 Data Structures (2-3-3)
Prerequisites: ECCE 230, MATH 234
Review of object-oriented design. Analysis of algorithm complexity. Fundamental data structures: Concept of Abstract Data Types (ADTs), Queues, Stacks, Lists, Trees; Java Collections Framework. Fundamental computing algorithms: binary search trees, hash tables, heaps, balanced trees, sorting algorithms, searching algorithms.
COSC 312 Design and Analysis of Algorithms (2-2-3)
Prerequisites: COSC 301, COSC 310
This course covers the most important algorithm strategies and solution techniques, independent of programming language or computer hardware. Topics include: Big-O notation; worst and average case analysis; recurrences and asymptotics; efficient algorithms for sorting, searching, and selection; algorithm design techniques: divide-and-conquer, dynamic programming, greedy algorithms, randomization; algorithms for fundamental graph problems; string algorithms; and numerical methods.
COSC 320 Concepts of Programming Languages (2-3-3)
Prerequisites: COSC 301
This course provides the students with a basic understanding and appreciation of the various essential programming-languages constructs, programming paradigms, evaluation criteria and language implementation issues. The topics covers concepts from imperative, object-oriented, functional, logic, and concurrent programming. These concepts are illustrated by examples from varieties of languages such as Pascal, C, C++, C#, Java, Python, Lisp, Scheme, Haskell, Prolog. Some basic aspects of compiler design like lexical and syntax analysis will also be covered.
COSC 330 Introduction to Artificial Intelligence (2-3-3)
Prerequisites: COSC 310 or ECCE 342
This course covers the fundamental aspects of classic and modern Artificial Intelligence. Topics include: AI History, solving problems by searching, knowledge representation and reasoning techniques, agents, decision tree, Bayes classifier, machine learning, game theory, reinforcement learning, and fuzzy logic.
COSC 340 Introduction to Computer Security (2-2-3)
Prerequisites: ECCE 354
Introduction to computer security. Fundamentals of cryptography: Substitution ciphers, hashing, symmetric and asymmetric crypto. Program Security: detect and exploit vulnerabilities in programs. Web vulnerabilities: SQL injection, cross site scripting. Identification and Authentication: Username and passwords, spoofing attack, password cracking. Access control: access control matrix and list, role based access control, multi-level security, access control in operating system such as Linux. Malware and Malware detection. Emerging threats: overview of other threats.
COSC 391 Independent Study I (Variable course credits from 1 to 3)
Prerequisites: Approval of department and junior standing
This course gives an upper level undergraduate student the opportunity to participate in an individual or group project, study, or research activity under the supervision of a faculty member. A formal report is required.
COSC 395 Special Topics in Computer Science (from 1 to 3 credits)
Prerequisite: Topic specific
This course mainly deals with new trends in Computer Science and emerging technologies. Course is repeatable if title and content differ.
COSC 401 Computational Social Science (2-3-3)
Prerequisites: COSC 312, COSC 410
The course is concerned with using computational approaches to study social phenomena and address important questions in social science. The course provides an overview of the computational social science field and use of data science techniques for computational social research. The course covers various techniques for data analysis of digital traces of people in social media, telecommunication and clickstreams as well as web-based social experiments that can be conducted at a large scale. The topics covered include overview of computational social science, data analysis of digital traces and clickstreams, design of social web-based experiments, data analysis of mobile phones and wearable sensors data, data analysis of social media data, and data science crowdsourcing techniques.
COSC 410 Parallel and Distributed Computing (2-3-3)
Prerequisite: COSC 312, ECCE 354
This course covers a broad range of topics related to parallel and distributed computing, including parallel and distributed architectures and systems, parallel and distributed programming paradigms, parallel algorithms, and scientific and other applications of parallel and distributed computing. Course topics include: concepts of parallelism, parallelism in Python, multi-threading, networks and MPI for cluster computing, fork-join parallelism, shared-memory concurrency control, and practical parallel/distributed programming applications.
COSC 412 Numerical Computing (2-3-3)
Prerequisite: COSC 312
This course is an introduction to numeric and algorithmic techniques used for the solution of a broad range of mathematical problems, with an emphasis on computational issues. It covers basic concepts and methods in numerical analysis: Analysis of round off errors using floating-point arithmetic; Solution of non-linear equations in one variable; Polynomial interpolation and approximation; Numerical differentiation and integration; Initial-value problems for ordinary differential equations; Direct methods for solving linear systems; Singular-value approximation; and Optimization.
COSC 430 Data Analytics (2-3-3)
Prerequisite: COSC 330; MATH 242/ 243
Co-requisite: COSC 434
This course covers various contemporary techniques in data analytics, which encompasses a broad set of computational and statistical methods and tools needed to draw insights from the growing amounts of data. Overall topics include: data acquisition, scraping, cleaning, manipulation; predictive data analysis; exploratory data analysis; statistical modeling of data; and communication of results via data visualization. The course will include significant programming in Python, and will introduce the statistical programming language R.
COSC 432 Neural Networks (3-0-3)
Prerequisite: COSC 330
In this course, fundamental disciplines of modern robotics are introduced: mechanics, control, and computing. These components are integrated to analysis, design, and control of mobile robots and manipulators to serve engineering or scientific needs. Students will learn: how to use mathematical methods to model mobile robots and manipulators and to plan their motion; how to process sensor information to form a perception of the environment; and how to implement algorithms through computer systems to achieve autonomy.
COSC 433 Algorithmic Robotics (2-3-3)
Prerequisite: COSC 330
Introduction to neural networks, neural networks applications, architecture types, supervised reinforcement and unsupervised learning, training algorithms and optimization, operators and processes in neural networks, deep learning methods, temporal problems and recurrent neural networks, Hebbian learning and auto-associative memories, competition mechanisms and self-organized neural networks, reinforcement learning systems.
COSC 434 Introduction to Machine Learning (2-3-3)
Prerequisites: COSC 330, MATH 204, MATH 243/242
This course covers various contemporary techniques in machine learning. Overall topics include: classes of machine learning (supervised, unsupervised), feature engineering and selection, logistic regression, non-parametric methods, non-parametric methods, GMM and EM algorithms, neural networks, support vector machine, k-means and hierarchical clustering, etc. The course will use Python machine learning libraries extensively.
COSC 440 Digital Forensics (2-3-3)
Prerequisite: COSC 340
This module gives an introduction to principles, techniques, and tools to perform digital forensics, which encompasses the recovery and investigation of material found in digital devices in relation to cybercrime and other crimes where digital evidence is relevant. Students will learn evidence extraction and analysis on UNIX/Linux, Windows, and macOS systems, networks, web applications, and mobile devices; and gain exposure to available tools. Some legal/ethical aspects of digital forensics will also be discussed.
COSC 442 Applied Cryptography (2-3-3)
Prerequisite: COSC 340
This course builds upon the cryptography concepts covered in the course “Introduction to Computer Security” and it presents security protocol designs and advanced topics in applied cryptography. We cover a comprehensive set of topics including cryptographic protocol design, zero knowledge proofs, multi-party encryption protocols, blockchain technology, encrypted machine learning, and secure hardware technologies.
COSC 452 Human-Computer Interaction (3-0-3)
Prerequisite: ECCE 336
This course provides an introduction to and overview of the field of human-computer interaction (HCI). HCI theories, principles, and guidelines will be covered including HCI design and principles of user interface design. In addition, the different types of user interface evaluation techniques will be covered including expert reviews, predictive models, and usability testing. Students will work on team project to design, implement, and evaluate computer interfaces.
COSC 454 Computer Graphics (3-0-3)
Prerequisite: COSC 312
This course will provide a comprehensive introduction to basic computer graphic technology in both theory and practice. Focusing on geometric intuition, it will provide the necessary information to understand how 2D and 3D synthetic images are modelled and generated using the complementary approaches of ray tracing and rasterization. Topics covered include introduction to graphics, mathematical foundations of graphics, raster images, ray tracing and shading, viewing transformations and projection, the graphics pipeline, surface shading, texture mapping, curves, computer animation, etc.
COSC 460 Bioinformatics and Genomic Data Science (2-3-3)
Prerequisite: COSC 312, COSC 410
This course introduces Computer Science students to bioinformatics, the scientific discipline at the intersection of Computer Science and Molecular Biology/Genetics. It aims to make sense at Big Data generated in biotechnology, first and foremost sequential data such as DNA and protein sequences. A central focus of this course is to bridge the gap between existing algorithms to the development of the next generation bioinformatics tools by understanding the algorithmic underpinnings incl. computational complexity, common data representations and file formats as well as state of the art storage strategies. The course will cover common sequence analysis techniques, phylogeny, common data formats and storage techniques and cutting edge topics such as CRISPR and Deep Learning.
COSC 462 Mobile and Web Applications Development (2-3-3)
Prerequisite: COSC 310
This practical-oriented course will enable the students to understand the fundamental concepts of web services and web & mobile app development. The techniques to design and develop static and interactive websites using HTML5, CSS3, Javascript, and other tools like JQuery, web-APIs, JSON, AJAX, etc. will be included. For the Android Platform, the app development including graphics and multimedia ones using Android Studio IDE will be discussed. For the iOS Platform, the app development techniques using iOS SDK with Swift and XCode will be covered.
COSC 464 Natural Language Processing (2-3-3)
Prerequisite: COSC 330, COSC 410
The course will provide a broad introduction to the field of Natural Language Processing or NLP, loosely defined as the study of systems and algorithms that can comprehend, communicate in or analyze data in human language. Students will gain a good understanding of the different problems faced by NLP systems, methods for addressing these problems, and their relative advantages or disadvantages. The class will devote significant time to recent data-driven approaches, in particular neural-network and/or deep learning methods that can be trained (rather than manually programmed) using labeled text corpora.
COSC 491 Independent Study II (Variable course credits from 1 to 3)
Prerequisite: Approval of department and senior standing
This course gives an upper level undergraduate student the opportunity to participate in an individual or group project, study, or research activity under the supervision of a faculty member. A formal report is required.
COSC 495 Special Topics in Computer Science
Prerequisite: Topic specific
This course mainly deals with new trends in Computer Science and emerging technologies. Course is repeatable if title and content differ.