**Calculus 1 (CS100)**

**Credits:3**

This introductory course covers topics including: functions of one variable, transcendental functions; introduction to complex numbers; polar coordinates; limits, continuity; derivatives, techniques of differentiation, differentiability, extrema of differentiable functions, applications of differentiation; indefinite and definite integrals, mean value theorem, related-rates problems, and the fundamental theorem of calculus. Students are required to complete weekly problem sets in order to develop basic proficiency in the mathematical foundations introduced in the field of Calculus. Three hours of instructor-led class time per week including discussions and problem sets.

**Calculus 2 (CS101)**

**Credits:3**

This course builds on CS100 and covers topics including: the definite (Riemann) integral, applications of integrals, improper integrals, numerical series, Taylor series. Students are required to complete weekly problem sets in order to develop proficiency on the subject. The format of the course is three hours of instructorled class time per week including discussions and problem sets.

**Calculus 3 (CS102)**

**Credits:3**

This final course in the three-term Calculus sequence spans the following topics: vectors in multiple dimensions; functions of several variables, continuity, partial derivatives, the gradient and Jacobian, directional derivatives, extrema, Taylor’s Theorem, Lagrange multipliers; multiple integrals, line integrals, surface integrals, divergence theorem, Green’s theorem, Stokes’ theorem. Students are required to complete weekly problem sets in order to demonstrate intermediate competency in multi-variable Calculus. Three hours of instructor-led class time per week including discussions and problem sets.

**Real Analysis (CS103)**

**Credits:3**

The fundamental concepts in analysis are rigorously treated with emphasis on reasoning and proofs. The topics include completeness and order properties of real numbers, limits, continuity and uniform continuity, conditions for integrability and differentiability, infinite sequences and series, basic concepts of topology and measure, metric spaces, compactness, connectedness, continuous functions on a compact set, the contraction mapping lemma. Students are required to apply practical analytical methods to formulate, critically assess, and solve problems which arise in computational sciences and mathematical modeling. Three hours of instructorled class time per week including discussions and problem sets.

**Linear Algebra (CS104)**

**Credits:3**

This introductory course covers topics including: vectors, dot products, hyperplanes; systems of linear equations, Gaussian elimination; matrix operations, determinants; vector spaces, linear independence, change of basis, eigenvectors and eigenvalues, the characteristic equation; the spectral theorem; complex vector spaces, complex eigenvalues, Jordan canonical form, matrix exponentials, differential equations. Students are required to apply practical analytical methods to solve problems which arise in computational sciences. Students will also learn to formulate a matrix representation of basic problems seen in mathematical modeling.

**Ordinary Differential Equations (CS105)**

**Credits:3**

The course examines topics including: first order equations, solution methods, higher order linear equations, series solutions, Laplace transforms, systems of linear equations, linear systems with constant coefficient, systems with periodic coefficients, existence and uniqueness of solutions, phase plots, eigenvalue problems, eigenfunction expansions, Sturm-Liouville theory, linearization about critical points, limit cycles, Poincaré-Bendixson theorem, Hartman-Grobman theorem, chaotic solutions and strange attractors, applications. Through the course, students will learn to formulate representations of basic problems seen in mathematical modeling. Students are required to apply practical analytical methods to solve problems which arise in computational sciences. Three hours of instructor-led class time per week including discussions and problem sets.

**Probability (CS107)**

**Credits:3**

This course is an introduction to the mathematical study of randomness and uncertainty. Course covers topics including: Axioms and properties of probability; Conditional probability and independence of events; Random variables and distribution functions; Expectation, variance and covariance; Jointly distributed random variables; Independent random variables; The law of large numbers; The central limit theorem; Markov chains. Students are required to complete weekly problem sets in order to develop problem solving skills in Probability. Three hours of instructor-led class time per week including discussions and problem sets.

**Statistics (CS108)**

**Credits:3**

This course provides students with a general introduction to statistical modeling and inference, including topics such as descriptive statistics, estimation in parametric models, risk evaluation, maximum likelihood method and method of moments, Bayesian approach, confidence intervals, statistical hypotheses testing, multiple linear regression, least-squares estimation, significance of the coefficients, goodness-of-fit tests, and chi-squared test of independence. Students will develop basic skills in data modeling and gain proficiency in R software. Instructor-led discussion, along with reading, written, and practical assignments.

**Introduction to Computer Science (CS110)**

**Credits:3**

The course provides students with a broad foundation in computer science. Topics include: introduction to digital technology, historical review from valves to integrated circuits; logic gates; binary, octal, and hexadecimal systems; evolution of computer architecture, Von Neumann architecture, basic components, internal and external interfaces, types of removable media; introduction to operating systems. Students should be able to demonstrate basic understanding of the software and hardware systems related to computational sciences, and demonstrate strong understanding of the relevant common software and information technology. Students will develop rudimentary foundational knowledge in mathematical modeling and gain proficiency using software and hardware systems related to computational science. Three hours of instructor-led class time per week including discussions and problem sets.

**Discrete Mathematics (CS111)**

**Credits:3**

This is an introduction to discrete mathematics and discrete structures. The course examines topics including: propositional logic; Boolean algebra; introduction to set algebra; infinite sets; relations and functions; recurrences; proof techniques; introduction to number theory; elementary combinatorics and graph theory; applications to computer science. Students will learn to apply discrete numerical methods to solve problems which arise in computational sciences. Instructor-led class time including problem sets and discussions.

**Numerical Analysis (CS112)**

**Credits:3**

The course investigates topics including: floating-point arithmetic, cancellation and rounding, random number generation; finding of roots of nonlinear equations and systems; interpolation, extrapolation, function approximation; numerical integration, Gaussian quadrature; Monte-Carlo methods; numerical solutions of ordinary differential equations, predictor-corrector methods, shooting methods for boundary value problems. Students are required to formulate, critically assess, and apply practical numerical methods to solve problems and subtasks. Through the problem sets and group projects, students will demonstrate intermediate proficiency in designing and analyzing complex data structures and algorithms as well as in developing and testing software tools and methods relevant to numerical analysis. Three hours of instructor-led class time per week including discussions and problem sets.

**Introduction to Object Oriented Programing (CS120)**

**Credits:3**

The course will survey the following topics: control structures, functions, arrays, strings, introduction to UML, classes and data abstraction, inheritance, introduction to polymorphism, abstract classes and interfaces. Students are required to develop basic proficiency in utilizing and testing software systems related to computational sciences and in applying at least one programming language to software development. Three hours of instructorled class time per week including discussions and problem sets.

**Data Structures (CS121)**

**Credits:3**

The course explores topics including: basic object-oriented programming principles; linear and non-linear data structures – linked lists, stacks, queues, trees, tables and graphs; dynamic memory management; design of algorithms and programs for creating and processing data structures; searching and sorting algorithms. Students are required to complete programming projects in which they design, analyze, and develop complex data structures in at least one programming language. Three hours of instructor-led class time per week including discussions and problem sets.

**Computer Organization (CS130)**

**Credits:3**

Functional organization and operation of digital computers. Coverage of assembly language; addressing, stacks, argument passing, arithmetic operations, decisions, macros, modularization, linkers, debuggers. Device drivers will be considered. Instructor-led class time including problem sets and discussions.

**Human Computer Interaction (HCI) (CS131)**

**Credits:3**

The topics include: concepts of human computer interaction, techniques for user interface design; user-centered design, interface development techniques, usability evaluation; overview of interface devices and metaphors; visual development environments, other development tools. Students should be able to demonstrate advanced knowledge of software and hardware systems related to computational sciences. Students should also be able to formulate and critically assess problems and sub-tasks including identification of sources and investigative techniques related to the field. Students are required to complete group projects in which they formulate, critically assess, and investigate problems relating to software and hardware systems. Students will complete formal presentations in order to develop experience communicating to audiences both within and outside the discipline. Three hours of instructor-led class time per week including discussions and problem sets.

**Theory of Communication Networks (CS132)**

**Credits:3**

The course investigates several communication problems in networks; one-to-all, all-to-all, one-to-many. Specific communication models are considered by placing constraints on the sets of messages, senders, and receivers, on the network’s topology, on the rules that govern message transmissions, and on the amount of information about the network known to individual network members. One goal is to design network structures which are inexpensive to construct yet allow fast communication. The second major goal is to design efficient communication algorithms for commonly used networks under different communication models. These require knowledge of graph theory, combinatorics, and design and analysis of algorithms. The students are required to complete theoretical problem sets and proofs in order to develop advanced knowledge of efficient communication algorithms and combinatorial properties of certain types of networks. Students will also complete and present in class a project based on recent research articles in order to develop advanced knowledge and research skills to formulate and investigate real research problems in the future. Three hours of instructor-led class time per week including discussions and problem sets.

**Mechanics (CS140)**

**Credits:3**

This course introduces students to classical mechanics. Topics include: space and time; straight-line kinematics; motion in a plane; forces and static equilibrium; Newton’s laws; particle dynamics, with force and conservation of momentum; angular motion and conservation of angular momentum; universal gravitation and planetary motion; collisions and conservation laws; work, potential energy and conservation of energy; vibrational motion; conservative forces; inertial forces and non-inertial frames; central force motions; rigid bodies and rotational dynamics. Students are required to complete weekly problem sets in order to develop problem solving skills in Probability. Three hours of instructor-led class time per week including discussions and problem sets.

**Complex Analysis (CS201)**

**Credits:3**

The course examines the theory of functions of one complex variable. The topics include complex numbers, complex functions, differentiability, Cauchy-Riemann equations, analytical functions; complex integration, the Cauchy integral formula, calculation of residues, Liouville’s theorem, the Gauss mean value theorem, the maximum modulus theorem, Rouche’s theorem, the Poisson integral formula; Taylor-Laurent series; singularity theory; analytical continuation; elliptic functions; conformal mapping, applications to ODEs and PDEs. Students are required to complete weekly problem sets and proofs in order to develop advanced knowledge of analyticalal methods. Students will learn to utilize advanced methods to formulate, assess, and solve problems and subtasks in computational science as well as across a broad range of disciplines. Three hours of instructor-led class time per week including discussions and problem sets.

**Functional Analysis (CS202)**

**Credits:3**

The course gives an introduction to functional analysis, which is a branch of mathematics in which one develops analysis in infinite dimensional vector spaces. The main areas to be covered are normed spaces with an emphasis on Banach and Hilbert spaces. Students will be introduced to fundamental theorems related to Banach spaces: The Hahn-Banach, Fixed point, Uniform Boundedness Principle, Open Mapping and Closed Graph theorems. This course will provide also an overview of Spectral theory for compact operators with applications in integral and differential equations. Instructor-led class time including discussions and problem sets; assessment by exams and problem sets.

**Partial Differential Equations (CS205)**

**Credits:3**

An introductory course into Partial Differential Equations (PDEs) which outlines analytical procedures for solving PDEs that arise from mathematical modeling of physical phenomena such as wave propagation, heat and mass transfer and electric potential discharge, to shape processing and motion/jump simulations in video gaming. The class will cover different classifications and orders of PDEs such as 2nd order elliptic and 1st and 2nd order hyperbolic equations, and will be introduce corresponding solution methodologies such as the method of characteristics, separation of variables and Laplace Transforms. The course will primarily deal with analytical methods but will include a small section on numerical algorithms for solving simple PDEs. Three hours of instructor-led class time per week including discussions and problem sets.

**Introduction to Algorithms (CS211)**

**Credits:3**

The course surveys topics including: review of main abstract data types; sorting algorithms, correctness, space and time complexity; hashing and hash tables, collision resolution strategies; graph algorithms; divide-and-conquer algorithms, dynamic programming; NP-completeness. Students are required to critically analyze, formulate and solve problems using analytical knowledge related to algorithms. Students should also be able to display proficiency in designing and analyzing complex algorithms and understand the software relevant to this field. Three hours of instructor-led class time per week including discussions and problem sets.

**Optimization (CS213)**

**Credits:3**

The course explores the following topics: optimization problems; dogleg and hookstep methods; simulated annealing; approximation algorithms; introduction to game theory; scheduling; basic optimization models in financial markets; nonlinear continuous optimization; conjugate gradient methods, Newton-type methods. Through the course, students will develop the ability to critically analyze and solve problems using advanced knowledge related to optimization and contemporary methods in optimization techniques. Students will also develop proficiency in designing and analyzing complex data structures and algorithms. Additionally, students are required to complete individual projects in order to develop their ability to discover and learn relevant material on their own. Three hours of instructor-led class time per week including discussions and problem sets.

**Cryptography (CS215)**

**Credits:3**

Introduction of basic principles and methods of modern applied cryptography. Demonstration how cryptography can help to solve information security problems and our focus will be basically internet security.

**Computer Graphics (CS217)**

**Credits:3**

The course provides students with theoretical and applied tools in graphics development. The course examines topics including: geometric concepts, such as tangent plane, normal vector; pixel-related operations; interactive methods, such as mouse and keyboard callback functions; representation of graphics primitives; general introduction to Open GL as a State Machine; various shading algorithms to illustrate the rendering process; color calculations; texturing. Three hours of instructor-led class time per week including discussions and problem sets.

**Game Development (CS218)**

**Credits:3**

This course is an introduction to video game design and development. It equips students with the programming skills necessary to create simple game programs in one or more programming languages. Students will be exposed to the latest techniques and tools to add functionality to game objects, create playable characters, design Enemy AI, add responsive UI, create and control animations, trigger visual effects, and combine all elements to create a working game. By the end of the course, students will go through every step of creating a game and be armed with the necessary knowledge to develop their projects. Assessment may include class participation, papers, essays, quizzes, exams, projects, and presentations.

**Mobile Application Developement (CS219)**

**Credits:3**

This course will introduce mobile application development covering topics such as current technologies, development environments, frameworks and programming languages, application testing and debugging tools and mechanisms, required libraries introduction, best practices on mobile development, monetization of applications, monitoring and alerting instruments, and data collection. The course will include hands-on sessions using modern technologies to design and develop user interfaces with simple interactivity, and publish the applications. |

**Parallel and High Performance Computing (Parallel HPC) (CS220)**

**Credits:3**

The course examines topics including: parallel hardware architectures, distributed computing paradigms, parallelization strategies and basic parallel algorithmic techniques, parallel programming with OpenMP and MPI, HPC numerical libraries. Students should be able to demonstrate advanced knowledge related to contemporary methods in parallel and HP Computing. Students are required to draw upon investigative techniques related to this field in order to critically analyze and solve problems using advanced knowledge. Coursework will require students to develop faster codes that are highly optimized for modern multi-core processors and clusters. Three hours of instructor-led class time per week including discussions, lab work and problem sets.

**Distributed Systems (CS221)**

**Credits:3**

Distributed systems help programmers aggregate the resources of many networked computers to construct highly available and scalable services. The course covers general introductory concepts in the design and implementation of distributed systems, covering all the major branches such as Cluster Computing, Grid Computing and Cloud Computing. The main principles underlying distributed systems will be investigated: processes, communication, naming, synchronization, consistency, fault tolerance, and security. The course gives some hands-on experience as well as some theoretical background. Moreover the course will go in deep of several technical issues in cloud systems, such as Amazon EC2/S3, and Hadoop (MapReduce framework). Three hours of instructor-led class time per week including discussions and problem sets.

**Database Systems (CS222)**

**Credits:3**

Introduction to databases, the Entity-Relationship (ER) Model and conceptual database design, the relational model and relational algebra (RA), SQL. Topics include data storage, indexing, and hashing; cost evaluating RA operators, query evaluation as well as transaction management, concurrency control and recovery; relational schema refinement, functional dependencies, and normalization; physical database design, database tuning; security and authorization of parallel and distributed database systems; data warehousing and decision support, views. In addition, introduction to Data Mining and various applications will be covered. Three hours of instructor-led class time per week including discussions and problem sets.

**Math Modeling Applications (CS226)**

**Credits:3**

This course introduces mathematical modeling and computational techniques for the simulation of a large variety of engineering and physical systems. The students will be able to apply real-world problem solving skills relating to modeling real-life scenarios from the natural sciences, business, social sciences, and finance. The applications for simulations are drawn from various fields and industries such as aerospace, mechanical, electrical, chemical and biological engineering, and materials science. Instructor-led discussion, along with reading, written, and practical assignments.

**Software Testing Fundamentals (CS230)**

**Credits:3**

This course aims to cover the fundamentals of software testing, including important areas such as Fundamental Test Process, Test Design Techniques (white box, black box), Test Levels, Static Test Techniques, different types of Software Development Life Cycle models, Agile methodology (Scrum Framework), role of Continuous Delivery in modern world and role of Automated Testing in it. The practical part of the course will cover topics such as Test Automation strategies, Design Patterns used in Automation Testing and students will get hands-on experience with web app test automation Frameworks. Instructor-led discussion, along with reading, written, and practical assignments. Assessment via projects, hometasks, and exams.

**Quantum Computing (CS231)**

**Credits:3**

The course starts with a simple introduction to the fundamental principles of quantum mechanics using the concepts of qubits (or quantum bits) and quantum gates. After developing the basics, this course delves into various implementation aspects of quantum computing and quantum information processing including the quantum fourier transform, period finding, Shor’s quantum algorithm for factoring integers, as well as the prospects for quantum algorithms for NP-complete problems. Instructor-led discussion, along with reading, written, and practical assignments. Assessment via problem sets, projects and exams.

**Cybersecurity (CS232)**

**Credits:3**

This course covers various security risks in Cyberspace from both offensive and defensive points of view, including subfields such as Web/Mobile Security, Network Security, and Cryptography. Students will develop skills of usage of various tools to be able to test the security of systems as well as build defense for those. Students will contribute to a team project in one of the following subfields (eg Web Security, Mobile Security, IoT security, Digital Forensics). Instructor-led discussion, along with reading, written, and practical assignments. Assessment via exams projects and hometasks.

**Compiler Design (CS236)**

**Credits:3**

An introduction to the basic phases of modern compilers and their design principles. Topics covered include CPU instruction, finite state machines, lexical scanning, parsing schemes, code generation and translation, comparison of modern programming languages. As part of the course, students build a working compiler for an object-oriented language. Three hours of instructor-led class time per week including discussions and problem sets.

**Dynamical System (CS241)**

**Credits:3**

The course covers topics including: concepts of continuous and discrete dynamical systems; orbits, fixed points and periodic orbits; 1D and 2D maps; stability of fixed and periodic points, sinks, sources and saddles; Lyapunov exponents; chaos; linear and nonlinear systems; periodic orbits and limit sets; chaotic attractors and fractals; maps of the circle, hyperbolic dynamical systems, horseshoe maps; symbolic dynamics, topological entropy. Students are required to solve problems in computational science utilizing concepts and methods from mathematical disciplines of mathematical modeling. Three hours of instructor-led class time per week including discussions and problem sets.

**Bioinformatics (CS245)**

**Credits:3**

This course is a brief introduction to molecular biology and investigates the main algorithms used in Bioinformatics. After a brief description of commonly used tools, algorithms, and databases in Bioinformatics, the course presents specific tasks that can be completed using combinations of the tools and Databases. The course then focuses on the algorithms behind the most successful tools, such as the local and global sequence alignment packages: BLAST, Smith-Waterman; and the underlying methods used in fragment assembly packages. The course will also be complemented by hands-on, computer lab sessions. Students will solve hands-on problems on HIV, BRCA1 gene, Thalassemia, FMF, etc. Forty-five hours of instructor-led class time.

**Artificial Intelligence (CS246)**

**Credits:3**

This course provides an introduction to the field of artificial intelligence, considering search as the fundamental technique for solving problems in AI. Various types of search (uninformed, informed, local) will be introduced and discussed, along with their application to solve problems in navigation, optimization, constraint satisfaction problems, planning, playing games, etc. Instructor-led discussions and problem sets.

**Machine Learning (CS251)**

**Credits:3**

Machine learning links together computers and statistics by teaching machines to act without human interaction. It compiles those methods of data science that automate model building process for computer realization by applying algorithms that iteratively learn from data allowing computers to find hidden insights in data without explicit programming. This course will provide the basic ideas and methods of machine learning. Topics include – supervised learning, unsupervised learning, best practices in machine learning with many examples from real-world applications. It also includes explanations on how to use the well-known R software for application of the learned techniques to practical problems. Instructor-led discussions and problem sets.

**Data Science (CS252)**

**Credits:3**

This course aims to introduce students to the world of data science. Students will gain the skills that are transforming entire industries from healthcare to internet marketing and beyond. In this course, students will gain a hands-on introduction to using R programming language for reproducible data analysis. Students will define the data science process, including data acquisition, data munging, exploratory data analysis, visualization and modeling real world data. The course will include using R and R packages tools for analysis of both structured and unstructured data sources, as well as writing reproducible data analysis reports with R Markdown and creating personalized interactive graphics applications. Three hours of instructor-led class time per week including discussions and problem sets.

**Special Topics in Applied Computer Science (CS290)**

**Credits:3**

This course explores topics in applied computer science with emphasis on current technologies and approaches. Topics to be announced prior to course registration. Instructor-led class time.

**Capstone (CS296)**

**Credits:3**

This course provides computer science majors the opportunity to develop the knowledge that they have obtained from across the curriculum. Students are encouraged to work in teams, and can choose either a theory or applied project. Students will select a topic from their respective tracks and work on the course-long project under the mentorship of the advising instructor. Students will discuss each other’s projects at scheduled weekly meetings led by the instructor. At the end of the course the projects will be presented and demonstrated orally and the project reports will be submitted in writing. Students are required to formulate and critically assess problems and sub-tasks including identifying sources and conducting independent research. Students should likewise be able to demonstrate expertise in core domains and in contemporary computing technologies. Students are required to produce technical documentation with references and demonstrate the capacity to discover and learn new material through independent research. Students are also required to draw upon critical thinking skills in a broad context and work as part of a team. _x000D_ Students choosing applied projects participate in the identification of a problem, develop a project proposal outlining an approach to the problem’s solution, implement the proposed solution, and test or evaluate the result. Students choosing a theory project conduct original research (e.g., develop a new algorithm) and evaluate its strengths and limitations. Regardless of the choice of project, students document their work in the form of written reports and oral presentations.

**Independent Study (CS299)**

**Credits:1**

**Algorithms possible prerequisite courses (EQALGORTHM)**

**Credits:0**

**Data Structures possible equivalent courses (EQDATASTRC)**

**Credits:0**

**Possible prerequisites for CS 130 course CS120, ENGS 110 not to be used for registration (EQOOP)**

**Credits:0**