Faculty of Arts and Sciences

Bachelor of Science in Computer Science (Open for Admission)

English
Computing Accreditation Commission
126 credits
For students entering the program at the Freshman level
(Please click here for more info on the Freshman program)
96 credits
For students entering the program at the Sophomore level
(holders of a recognized Baccalaureate or Freshman diploma - equivalent to 30 credits)

Courses

Core Courses
CSC420Computer Networks
3 credits    |    Pre-requisite: CSC212
This course covers the architecture and protocols of modern computer networks. It presents the networking protocol models: OSI and TCP/IP by discussing the different layers, their functions, roles, and services.
CSC212Computer Organization and Assembly Language
3 credits
The course is designed to introduce Computer Science and Information Technology students to the basics of computer architecture and low-level programming. i.e. assembly code and hardware manipulation. The course focuses on the Intel x86 Assembly language, number representations, logic circuits, Boolean algebra and logic simplification, addressing modes, Input/Output devices, system buses, memory systems, memory systems, memory occupation, computer arithmetic, instruction sets and the design, control, and structure of CPUs.
CSC315Data Structures and Algorithms
3 credits    |    Pre-requisite: CSC211 And CSC314
Data Structures and Algorithms is a course designed to provide students with a strong foundation in data structures and algorithms, using an object-oriented approach. Students will learn how to design, implement, and analyze algorithms using a high-level programming language such as Java. The course emphasizes the use of object-oriented programming techniques to implement and manipulate data structures. Topics covered in the course include fundamental data structures (e.g., arrays, linked lists, stacks, queues, trees), Algorithm analysis and complexity, sorting and searching algorithms, Recursion, and backtracking, Hashing and collision resolution, Heaps and priority queues. The course includes lab workshops where students will apply these concepts in practice.
CSC320Database Systems
3 credits    |    Pre-requisite: (CSC214 Or CSC210) And CSC211
This course is designed to provide students with a comprehensive understanding of the concepts and techniques used in database systems. Topics covered in the course include Introduction to database systems and the relational data model, Entity-relationship (ER) modeling and database design, SQL programming and query optimization, normalization, denormalization, partitioning, Database indexing and transaction management, non-relational database systems (e.g., document-oriented, key-value, graph databases). The course includes lab workshops where students will apply these concepts in practice.
CSC416Graph Theory and Operations Research
3 credits    |    Pre-requisite: MAT310
The aim of this course is to formulate a wide variety of real-life problems and to solve those using methods based on graph theory and linear methods. Concerning graph theory, we will particularly study the following problems: shortest path, minimum spanning tree, maximal flow network, finding a critical path in a project network. As for linear methods, linear programming problems will be solved graphically and by using the Simplex algorithm and duality. We will also see how to solve integer programming problems using the branch-and-bound method.
CSC460Information Systems Security
3 credits    |    Pre-requisite: CSC320 And CSC420 And CSC421
This course is designed to provide students with a deep understanding of the principles and practices of information security, with a particular focus on securing computer systems and networks. It covers the fundamental concepts of information security, including the CIA triad (confidentiality, integrity, and availability), access control, authentication, and cryptography. The course also covers advanced topics such as network security, web security, and database security Topics covered in the course include Introduction to information security, Access control and authentication, Cryptography and digital signatures, Network security and secure communication, Web security and application security, Database security and data privacy, Security management and incident response.
CSC438Internship
1 credits    |    Pre-requisite: CSC360 Or INF360 Or CSC343
The internship module provides an opportunity for students to gain practical experience in the field of computer science by working with a company or organization in a real-world setting for a duration of two months. During the internship, students will be supervised by an on-site supervisor as well as an academic supervisor from the university. Students will work on projects and tasks assigned by their on-site supervisor and will be expected to apply their knowledge and skills gained from their coursework to solve real-world problems. At the end of the internship, students are required to submit a report according to the department requirements and template. The report should describe their internship experience, including the tasks they worked on, the challenges they faced, and the skills they developed. Students will also be expected to reflect on their experience and to discuss how their internship has contributed to their personal and professional growth.
CSC210Introduction to Programming
3 credits
This course introduces the fundamental concepts of programming, including basic programming constructs and programming paradigms, and builds on those concepts to cover more advanced topics in programming. Students will learn how to write simple programs using a high-level programming language such as Java. Topics cover the basics of programming, including basic programming constructs (e.g., variables, data types, operators, expressions), control flow structures (e.g., conditional statements, loops), functions and modular programming, basic data structures (e.g., arrays), recursion, and data files (e.g., text files). Additionally, students will learn about programming style and comments, including best practices for writing readable, maintainable code and using comments effectively to document their code. The course includes lab workshops where students will practice programming and apply these concepts in practice.
CSC314Object Oriented Programming
3 credits    |    Pre-requisite: CSC214 Or CSC210
This course introduces students to the principles of object-oriented programming and design. It is designed for students pursuing a Computer Science degree and assumes prior programming experience. The course provides an in-depth understanding of object-oriented programming and design principles using UML, with a focus on the use of a programming language such as Java. Students will learn how to design and implement classes and objects, how to use inheritance and polymorphism to build complex software systems. Topics covered in the course include introduction to OOP concepts (classes, objects, inheritance, encapsulation, polymorphism), object-oriented design principles using UML diagrams, exception handling and error checking. The course includes lab workshops where students will OOP concepts in practice.
CSC421Operating Systems
3 credits    |    Pre-requisite: CSC212 And CSC315
Operating Systems is a fundamental course in the Bachelor of Science in Computer Science curriculum. The course is designed to provide students with a deep understanding of the fundamental concepts, principles, and algorithms underlying modern operating systems, with a particular focus on multiuser and multitasking operating systems like Unix/Linux. The course covers the principles of operating systems design and implementation, with an emphasis on the management of resources such as memory, processes, and input/output. Topics include mutual exclusion and synchronization problems, process scheduling algorithms, memory management, file systems, and device management. The course includes a practical component in which students will learn to use the Unix/Linux operating system commands language and multi-tasking programming techniques featuring process management, anonymous and named pipes, signals, shared memory, semaphores, and message queues.
CSC461Parallel and Distributed Computing
3 credits    |    Pre-requisite: CSC421
This course is designed to provide students with a deep understanding of the principles and practices of parallel and distributed computing, including the design, implementation, and evaluation of parallel and distributed algorithms and systems.
The course covers the fundamental concepts of parallel and distributed computing, including parallel architectures, message-passing and shared-memory models, synchronization, load balancing, and parallel programming languages and environments. The course also covers advanced topics such as parallel algorithms, distributed systems, cloud computing, and big data processing. It includes a practical component in which students will learn to design and implement parallel and distributed algorithms and systems using a variety of programming languages and tools, such as MPI, OpenMP, MapReduce, and Hadoop.
CSC400Professional Ethics
3 credits    |    Pre-requisite: CSC265 Or CSC266
This course introduces Computer Science students to the ethical issues and challenges that arise in the practice of computer science. The course provides an overview of the ethical principles that underlie responsible computing practice and explores case studies that highlight the practical application of these principles. Topics covered in the course include: the ethical challenges of emerging technologies, ethical frameworks and principles, privacy and data protection, intellectual property and copyright, cybersecurity and cybercrime, social responsibility and sustainability, professional codes of conduct and ethical decision-making. The course will involve case studies and class discussions to encourage critical thinking and ethical reasoning in the practice of computer science.
CSC265Programming Workshop I
1 credits    |    Pre-requisite: CSC210
The course aims to strengthen programming concepts acquired in CSC210 and prepare students for adapting to various programming environments and coding in an efficient manner. The course offers a variety of hands-on practice and mini projects that provide students with opportunities to develop and practice their programming skills. Additionally, students will learn about version control systems and debugging techniques. By the end of the course, students will have gained practical experience and skills that will help them become better programmers.
CSC365Programming Workshop II
1 credits
The course introduces students to Python programming and aims to develop their programming skills in a variety of practical and applied contexts. Students will work on hands-on projects that cover web development, data analytics, core software development, and other scientific and mathematical applications. The course will also cover advanced topics such as object-oriented programming, functional programming, and asynchronous programming, among others. Throughout the course, students will learn how to use Python's powerful libraries and tools, such as NumPy, Pandas, Matplotlib, Flask, and more. By the end of the course, students will have gained practical experience and skills that will enable them to tackle complex programming challenges and work on a wide range of projects.
CSC331Web Programming
3 credits    |    Pre-requisite: CSC210
This course introduces web programming, focusing on client-side web app development. Students will learn how to create dynamic and interactive web pages using HTML, CSS, JavaScript, XML, and DTD. The course will also cover the basics of server-side web programming, including an introduction to web servers, databases, and server-side scripting languages. The course includes lab workshops where students will practice Web programming and apply these concepts in practice.
Electives - Artificial Intelligence Track
CSC476Applications of AI
3 credits    |    Pre-requisite: CCS470
This course provides an in-depth exploration of the practical application of Artificial Intelligence (AI) in various fields, including but not limited to healthcare, finance, and business. Students will learn how to identify problems that can be solved using AI, choose appropriate AI techniques, and design, implement, and evaluate AI solutions. The course covers a range of AI techniques, including natural language processing, computer vision, and reinforcement learning, and their applications in real-world scenarios.
CSC474Artificial Intelligence
3 credits    |    Pre-requisite: CSC365 And MAT310 And STA320
This course introduces the field of Artificial Intelligence (AI), including its history, key concepts, and practical applications. It is designed to provide students with an understanding of the principles, techniques, and applications of artificial intelligence. Topics covered include search algorithms, game-playing algorithms, knowledge representation, reasoning, and planning. Students will also learn about AI in natural language processing and robotics, and explore ethical issues related to AI. The course will provide hands-on experience with artificial intelligence tools and techniques and will culminate in a final project where students will work on a real-world artificial intelligence problem.
CSC475Deep Learning
3 credits    |    Pre-requisite: CSC470
This course is designed to provide students with an understanding of the principles, techniques, and applications of deep learning. The course will provide hands-on experience with deep learning tools and techniques and will culminate in a final project where students will work on a real-world deep learning problem. By the end of the course, students will be able to build and train deep neural networks for various applications using popular frameworks such as TensorFlow, Keras or PyTorch.
CSC470 Machine Learning
3 credits    |    Pre-requisite: CSC365 And MAT310 And STA320
The course introduces the fundamental concepts of machine learning including data preprocessing, feature selection, types of learning, building machine learning models and model evaluation. Students will learn how to apply machine learning techniques to various domains. The course covers different types of machine learning algorithms, including supervised learning, unsupervised learning, and reinforcement learning. Students will learn how to build and evaluate predictive models using these algorithms. Clustering, and anomaly detection. Students will learn how to apply these techniques to real-world datasets. Students will use different software tools and libraries used in machine learning (such as Python's scikit-learn library) to build and evaluate models.
Electives - Data Science Track
CSC472Big Data Analytics
3 credits    |    Pre-requisite: CSC470
Big Data Analytics
CSC471Data Visualization
3 credits    |    Pre-requisite: CSC365
This course is designed to provide students with an understanding of the principles, techniques, and tools used to visualize data effectively. It prepares students for careers in data analysis, data science, and related fields. The course will provide hands-on experience with data visualization tools and techniques and will culminate in a final project where students will work on a real-world data visualization problem.
CSC470Machine Learning
3 credits    |    Pre-requisite: CSC365 And MAT310 And STA320
The course introduces the fundamental concepts of machine learning including data preprocessing, feature selection, types of learning, building machine learning models and model evaluation. Students will learn how to apply machine learning techniques to various domains.
The course covers different types of machine learning algorithms, including supervised learning, unsupervised learning, and reinforcement learning. Students will learn how to build and evaluate predictive models using these algorithms. Clustering, and anomaly detection. Students will learn how to apply these techniques to real-world datasets.
Students will use different software tools and libraries used in machine learning (such as Python's scikit-learn library) to build and evaluate models.
CSC473Natural Language Processing
3 credits    |    Pre-requisite: CSC470
This course is designed to provide students with an introduction to the principles, techniques, and tools used for analyzing and processing natural language data. The course will provide hands-on experience with natural language processing tools and techniques and will culminate in a final project where students will work on a real-world NLP problem.
Electives - Software Development Track
CSC456Advanced Web Programming
3 credits    |    Pre-requisite: CSC331
This course builds upon the foundation of the Web Programming course, which focused on client-side web application development. Advanced Web Programming provides students with the knowledge and skills necessary to develop dynamic, database-driven web applications using server-side scripting languages and frameworks.
CSC457Mobile App Development
3 credits    |    Pre-requisite: CSC331 And CSC320
This course is designed to provide students with an understanding of the principles, concepts, and techniques for developing mobile applications for different platforms. It covers the basics of cross-platform mobile applications development with a focus on the React Native framework. The goal is to help students develop best practices for creating cross-platform apps.
CSC455Software Engineering
3 credits    |    Pre-requisite: CSC314 And CSC320
This course presents modern software engineering techniques and examines the software life cycle, including software specification, design, implementation, testing and maintenance. The course evaluates past and current trends in software development practices including agile software development methods such as Extreme Programming (XP), Agile Modeling (AM), Scrum, ASD, DSDM, Crystal, Feature Driven Development (FDD), Incremental Funding Method (IFM), DevOps, and Site Reliability Engineering. Other non-agile approaches that are widely used in industry such as the Rational Unified Process (RUP) and the Open Process Framework (OPF) will also be covered. Process improvement initiatives such as the Capability Maturity Model (CMM) and Personal Software Process (PSP) will be discussed.
CSC458User Interface Design and Development - UI/UX
3 credits    |    Pre-requisite: CSC331 And CSC455
The course will provide hands-on experience with UI/UX design and development tools and techniques and will culminate in a final project where students will work on a real-world UI/UX design problem.
Free Track
CSC416Graph Theory and Operations Research
3 credits    |    Pre-requisite: MAT310
The aim of this course is to formulate a wide variety of real-life problems and to solve those using methods based on graph theory and linear methods. Concerning graph theory, we will particularly study the following problems: shortest path, minimum spanning tree, maximal flow network, finding a critical path in a project network. As for linear methods, linear programming problems will be solved graphically and by using the Simplex algorithm and duality. We will also see how to solve integer programming problems using the branch-and-bound method.
CSC417Human Computer Interaction
3 credits    |    Pre-requisite: CSC360 Or CSC331
This course will teach you about the importance of the human-computer interface in software design and development. The objectives of the course are:
- To facilitate communication between human factors engineers and computer scientists on user interface development projects.
- To provide the future user interface designer with concepts and strategies for making design decisions.
- To expose the future user interface designer to tools, techniques, and ideas for interface design.
- To introduce the student to the literature of human-computer interaction.
- To stress the importance of good user interface design.
CSC352Theory of Programming Languages
3 credits    |    Pre-requisite: CSC211
A programming language is a programmer’s principal interface with the computer. More than just knowing how to program in a single language, programmers need to understand the different styles of programming promoted by different languages. In their professional life, they will be working with many different languages and styles and will encounter many different languages over the course of their careers. Understanding the variety of programming languages and the design tradeoffs between the different programming paradigms makes it much easier to master new languages quickly. Understanding the pragmatic aspects of programming languages also requires a basic knowledge of programming language translation and runtime features such as storage allocation. In this course we explore the major issues in both design and implementation of modern programming languages and provide a basic introduction to the underlying theoretical models on which these languages are based. The emphasis is on fundamental concepts. Several languages are highlighted in sufficient detail to enable the programmers to write programs that illustrate the relationship between a source program and its execution behavior.
General Education Requirements Math and Sciences
MAT220Differential Equations
3 credits    |    Pre-requisite: MAT213 Or MAT217
This course aims to develop both theory and study techniques of Ordinary Differential Equations (ODEs). Topics covered in this course include Solutions of Non-Linear First-Order ODE's; Linear ODE's, Second-Order ODE's; Delta Functions, Convolution, and Laplace Transform Methods; Power Series and their use to solve differential equations; Real and Complex Fourier Series in addition to an Introduction to Partial Differential Equations. Applications to different fields of science and engineering will be a focus of this course, as this course is designed to meet the needs of students in these disciplines.
CSC211Discrete Methods
3 credits    |    Pre-requisite: MAT202
This course introduces the discrete methods used in computer science and applied mathematics. It covers topics such as set theory, relations, and functions, logic and proofs, combinatorics and discrete probability, graph theory, number theory, the growth of functions, and complexity of algorithms.
MAT310Linear Algebra
3 credits    |    Pre-requisite: MAT213 And (MAT202 Or CSC211)
This course provides a modern elementary introduction to linear algebra and a broad selection of interesting applications. This modern approach reflects the ways scientists and engineers use linear algebra in practice. The topics covered in this course are Linear Equations in Linear Algebra, Matrix Algebra, Determinants, Vector Spaces, Eigenvalues and Eigenvectors, Orthogonality and Least Squares, Symmetric Matrices and Quadratic Forms. Applications to different fields of science and engineering will be the focus of this course, as this course is designed to meet the needs of students in these disciplines.
STA320Probability and Statistics
3 credits    |    Pre-requisite: MAT213 And (MAT202 Or CSC211)
This course aims to provide students with the most common concepts of probability theory and statistical inference, with a unique balance between theory and methodology. Interesting relevant applications using real data will be used to show how the concepts and methods can be applied to solve science problems in practice.
Science Elective 1
3 credits
Science Elective 2
3 credits
Science Elective Lab
1 credits
MAT213Single Variable Calculus
3 credits
This course covers the integral calculus of functions of one independent variable. Topics include the basic and advanced techniques of integration, analytic geometry of graphs of functions, and their limits, integrals, and derivatives, including the Fundamental Theorem of Calculus. Improper integrals, Sequences, Numerical Series, Power Series, Taylor Expansion, Parametric Equations, and Polar Coordinates will also be discussed. Applications to different fields of science and engineering will be the focus of this course, as this course is designed to meet the needs of students in these disciplines.
Specialization
MAT418Numerical Methods
3 credits    |    Pre-requisite: (MAT310 Or MAH310) And (MAT312 Or MAT220 Or MAH220) And (INF214 Or INF216 Or INF219)
This course will introduce the students to numerical computation allowing them to acquire the necessary tools to gain a better understanding of the modeling problems that they will meet later. The subjects covered are the following: introduction to numerical algorithms; non­linear equations, the bisection method, the fixed point method, Newton method, secant method, and systems of nonlinear equations; interpolation techniques of Lagrange, Newton, least squares, and splines; derivation and numerical integration, numerical solution of differential equations; and various applications with MATLAB (matrix algebra, linear systems, direct methods, iterative methods, eigenvalues).
CSC272Programming Laboratory II
1 credits    |    Pre-requisite: CSC215
This lab introduces many techniques used to organize, search, sort and manipulate data after completing new concepts of the C++ language in the course (structures, pointers, multidimensional arrays and binary files). It emphasizes arrays, linked lists, stacks and queues. Recursion and a simple sorting algorithm are also covered.
Electives
CSC312Advanced VB Programming
3 credits    |    Pre-requisite: (CSC214 And CSC270) Or (INF214 Or INF219)
This course introduces the concept of event­driven programming and the windows environment. The classes begin with simple forms (Windows) and end with ADO.Net Objects which connect Databases to the VB.Net application, graphics programming. The course also covers Text and Binary file access and the Winsock control for networking.
CSC428Database Administration
3 credits    |    Pre-requisite: CSC320 Or INF320
In this course, students will learn about the following subjects: tasks of the database administrator; identifying the various components of the Oracle architecture; managing Oracle instance; creating a database; using a data dictionary and dynamic performance views; maintaining the control file; maintaining redo log files; managing table spaces and data files; storage structure and relationships; managing undo data; managing tables; managing indexes; maintaining data integrity; managing password security and resources; managing users; managing privileges; managing roles; backup; and about recovery, environment and applications.
CSC426Database Applications Development
3 credits
The aim of this course is to enable students to become familiar with the development of complex database applications. In this course the students will learn to manipulate in a complex manner the data contained in an Oracle database using the PL/SQL procedural language. In addition to the basic skills in PL/SQL programming, the course will cover the most important concepts of the PL/SQL programming language such as: cursors, stored procedures and functions, triggers, exception handling, and transactions.
CSC343Mobile Programming
3 credits
Today’s applications are increasingly mobile. Computers are no longer confined to desktops and laptops but instead live in our pockets and hands. This course teaches students the general structure of a mobile application on different mobile platforms. Students will also learn how to build mobile applications for Android and Windows Phones, and how to test and deploy them.
CSC430Systems and Networks Administrator
3 credits    |    Pre-requisite: INF319 Or CSC319 Or CSC212 Or INF212
The goal of this course is to prepare the students for the task of administrator by introducing them to the management of a UNIX environment. After an introduction to the problems bound to the multi­user and multi­task nature of the UNIX system, we introduce the most useful UNIX commands and the administrator's main tasks: user management, the device drivers, services management, network management, control of scripts on a shell, compression, and backup. The students are then trained on the complete installation of a Linux system.
Capstone
CSC436Advanced Programming Project
2 credits    |    Pre-requisite: CSC360 Or INF360 Or CSC343
In the beginning of the semester, students need to set up with their instructors a title and a detailed description of their projects. The instructors of all the sections of the courses will meet within the first three weeks of the semester. During this meeting they will accept, reject, or modify the proposed project. If the project was rejected they need to propose to the student another one. After this meeting, the proposal of every project will be signed by the student as well as the instructor. Instructors need to meet with students at least once every two weeks. During this progress meeting, students need to show the instructors what they did during the two week period and what they are planning to do in the coming two weeks. By the end of the semester, students will have a 10 to 15 minutes presentation. During this presentation instructors from other sections may be present.

Accreditation

This program is accredited by the Computing Accreditation Commission of ABET, https://www.abet.org.

Mission

The mission of the Department of Computer Science and Information Technology is to graduate undergraduate and graduate students that excel in the fields of computing, networking, and database design, creation and management. This is fulfilled through comprehensive educational programs and research and development.

Program Educational Objectives

1. Graduates will work successfully as a member of software professional’s team to address real work problems as well as demonstrating strong communication skills.
2. Graduates are prepared for careers in industry, consulting, teaching, and other fields related to computer science and to develop entrepreneurial mindset.
3. Graduates will provide full solution for software problem from system design to solution development. They will be committed for long-life and self-learning.
4. Graduates will have the ability to function and communicate effectively as ethically and socially responsible Computer Science professionals.

Student Learning Outcomes

1. Analyze a complex computing problem and to 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. Communicate effectively in a variety of professional contexts.
4. Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.
5. Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.
6. Apply computer science theory and software development fundamentals to produce computing-based solutions [CS].
Holy Spirit University of Kaslik
Tel.: (+961) 9 600 000
Fax : (+961) 9 600 100
© Copyright USEK 2024
Subscribe to our newsletter
Find USEK