Course Descriptions

CS 100 Computer Science Freshman Seminar
Credit Hours: 1+0
Fulfils: CS Major Requirement
Prerequisite: None
​Provides a broad overview of the theory and practice of Computer Science.

CS 101 Programming Fundamentals
Credit Hours: 2+1
Prerequisite: None
Fulfils: CS Foundation, Formal Reasoning
Motivates computer programming as a means to solve problems; introduces the basic components of
problem solving: repetition, decision making, data storage and manipulation, input/output, modularity,
top-down design; develops expertise in the corresponding constructs – variables, data types, iteration,
conditionals, functions, file and console I/O, and recursion – in a high level programming language.

CS 102 Data Structure and Algorithms
Credit Hours: 3+1
Prerequisite: CS 101
Fulfils: CS Foundation
Motivates the design of algorithms by exploring various algorithms for a single task: linear search and binary search, bubble sort, insertion sort, selection sort, merge sort, quick sort; introduces techniques to reason about and compare algorithms: asymptotic analysis and notation, Master theorem; introduces frequently used data structures: list, tree, graph, stack, queue; discusses and analyzes basic operations on the data structures: infix, postfix, and prefix traversal, breadth-first and depth-first search, computation of graph properties.

CS 113 Discrete Mathematics
Credit Hours: 3+0
Prerequisite: None
Fulfils: CS Foundation, Formal Reasoning
Equips students with essential mathematical tools that will be encountered in future Computer Science courses; develops a capacity for formal mathematical manipulation and abstract thought; topics include: propositional logic, predicate and quantifiers, sets, functions, sequences, summations, relations, partial orderings, proofs, mathematical induction, pigeonhole principle, permutations and combinations, graphs, graph isomorphism, Euler and Hamiltonian paths, trees.

CS 201 Data Structures II
Credit Hours: 3+0
Prerequisite: CS 102 and CS 113
Fulfils: CS Kernel
Imparts proficiency in the use of commonly used data structures; introduces a few higher level data structures; develops critical judgment regarding the choice of data structures for a given situation; topics include: abstract data type, complexity, stack, queue, list, amortized analysis, array-list, linked list and skip list, hashing, binary tree, binary search tree (BST), randomized BST and treap, self-balancing in trees, AVL tree, B-tree, red-black tree, binary heap and meldable heap, Fibonacci heap, graphs and their representations, graph algorithms, trie, inverted index.

CS 212 Nature of Computation
Credit Hours: 3+0
Prerequisite: CS 113
Fulfils: CS Kernel
Develops the foundations for theoretical computer science; investigates fundamental challenges at the frontiers of theoretical computer science; provides opportunities to develop rigorous mathematical arguments; engages with classical ideas from theoretical computer science; topics include: proofs, languages, finite automata, grammars and push down automata, Turing machines and the halting problem, oracles and computability, Gödel’s completeness and incompleteness theorems, circuit complexity, polynomial time and its justification, reduction, P, NP, and NP-completeness, Cook-Levin theorem, hardness of the P versus NP problem, randomness, P versus BPP, interactive proofs, zeroknowledge proofs, quantum computing, DNA computing, biological computing, physical limits of computation.

CS 224 Object Oriented Programming and Design Methodologies
Credit Hours: 3+1
Fulfils: CS Kernel
Prerequisite: CS 102
Introduces object oriented and related memory concepts; motivates C++ as the language of choice; topics include: pointers and structs, objects, heap allocation, data encapsulation, classes, namespaces, constructors and destructors, virtual functions and destructors, operator overloading and standard input/output, inheritance and polymorphism, templates, standard library containers, and software design using UML 2.0.

CS 232 Operating Systems
Credit Hours: 3+1
Fulfils: CS Kernel
Prerequisite: CS 102
The student will be taught principles of modern operating systems. In particular, the course will cover details of concurrent processes, multi-threads, CPU scheduling, memory management, file system, storage subsystem, and input/output management. This will be accomplished by integrating theory and practice through coordinated lecture and lab hours.

CS 330 Computer Architecture
Credit Hours: 3+1
Prerequisite: CS 130
Fulfils: CS Systems Elective
Studies the architecture of RISC-V processor that enables general purpose computing; develops hands-on expertise in developing complex logical components; topics include: instruction set architecture, addressing modes, processor design and computer arithmetic, pipelining, memory systems, fetchexecution cycle, processor implementation on FPGA using Verilog HDL.

CS 353 Software Engineering
Credit Hours: 3+0
Prerequisite: CS 224 and CS 355
Fulfils: CS Kernel
Approaches software engineering as the study and practice of a collection of concepts, techniques and tools which enable programmers to design, build, and maintain large software systems in a reliable and cost effective way; develops skills and understanding that function as the basis for many of the more advanced analysis and design practices encountered in the industry; topics include: systems development process, stakeholders and their roles, systems development project needs, software process methodologies, spiral and RUP, software analysis and requirement discovery, data modelling, SAD and
OOAD, UML, use case diagrams, software project management, project scope, network diagrams and CPM, agile methodologies, XP, Scrum and FDD, class diagrams, realization of use cases, object oriented design, sequence diagrams, activity diagrams, state transition diagrams, user interface design, software testing, software construction and maintenance.

CS 355 Database Systems
Credit Hours: 3+1
Prerequisite: CS 102
Fulfils: CS Kernel
Explores in detail the theoretical and practical aspects of Relational Database Management Systems(RDBMS); develops an understanding of database modeling, relational algebra, structured query language (SQL), components of Database Management System (DBMS), transaction management and concurrency
control, database fine-tuning via indexing and partitioning, and database connectivity with front-end applications; discusses administrative aspects of database systems including database security, database management vs data warehousing vs data mining, and big data and its challenges.

CS 412 Algorithms: Design and Analysis
Credit Hours: 3+0
Prerequisite: CS 201 and MATH 310
Fulfils: CS Kernel
Develops tools and techniques that aid in designing correct, efficient algorithms for computational problems and analyzing their correctness and running time; some of the discussed techniques are: greedy method, divide-and-conquer, dynamic programming, hashing, randomization, network flows, linear programming, Fast Fourier Transform, and techniques for thinking about solving problems in parallel; analysis tools include: recurrences, probabilistic analysis, amortized analysis, and potential functions.

CS 491 Kaavish I
Credit Hours: 0+3
Prerequisite: CS 353
Fulfils: Capstone Project
Self-directed final year project carried out under the supervision of a faculty member; emphasizes solving a real-world problem; integrates knowledge and skills accumulated over the entirety of the degree; first of a 2-part sequence.

CS 492 Kaavish II (0+3)
Credit Hours: 0+3
Prerequisite: CS 491
Fulfils: Capstone Project
Self-directed final year project carried out under the supervision of a faculty member; emphasizes solving a real-world problem; integrates knowledge and skills accumulated over the entirety of the degree; second of a 2-part sequence.

Elective Courses


CS 262 Introduction to Computational Social Sciences
Credit Hours: 3+0
Prerequisite: None
Fulfils: CS Elective
Computation social science focuses on the synthesis of modeling & simulation, network sciences, computer science and sociology to produce a hybrid methodology that could be an effective tool for understanding and managing complex social systems. This is a cross-disciplinary course. It is intended for students with background and interest in social sciences and application of computational methods in this domain.

CS 314/PHY 300 Quantum Computing
Credit Hours: 3+0
Prerequisite: Math 101, Math 102 and Math 205
Fulfils: CS Elective
By the end of the course, students will have an understanding of discrete quantum mechanics, the quantum circuit model of computation, important quantum algorithms, quantum error correction, basic quantum complexity theory and the current state of technological progress towards the building of quantum computers. The course will prepare students to write programs for quantum computers. No prior knowledge of physics is required for this course.

CS 316 Introduction to Deep Learning
Credit Hours: 3+1
Prerequisite: Math 101, Math 205, and Math 310
Fulfils: CS Elective
The goal of this course is to give learners an understanding of modern neural networks, their applications in different domains such as computer vision, natural language processing, etc. This course aims to provide expertise to develop intelligent systems using deep learning from scratch, using best practices to solve real world problems.

CS 326 Mathematics for Machine Learning
Credit Hours: 3+0
Prerequisite: MATH 205 and MATH 310
Fulfils: CS Elective
This course looks at machine learning from a mathematical point of view. It reviews linear algebra, probability, statistics, and optimization in the context of specific machine learning algorithms with emphasis on design and analysis of these algorithms.

CS 340/Math 321 Geometrical Modelling and Analysis
Credit Hours: 3+0
Prerequisite: Math 205, Math 202, and CS 224
Fulfils: CS Elective
This course will cover the foundations of geometrical modelling and analysis, with examples from elasticity, electrostatics, and computer science. The course content can broadly be divided into three categories: fundamentals of geometrical modelling, discretizing a partial differential equation, and stability of solutions.

CS 351 Artificial Intelligence
Credit Hours: 3+0
Prerequisite: CS 201 and CS 224
Fulfils: CS Elective
Studies the major areas of artificial intelligence (AI): problem-solving, decision-making, learning, planning, and reasoning; topics include: intelligent search techniques, games and adversarial search using minimax and alpha-beta pruning, supervised learning via decision trees, naive Bayes, artificial neural networks, Kmeans clustering, reasoning via first-order logic, Bayesian networks, evolutionary algorithms; explores the areas of computer vision, robotics, and deep learning; applies the covered AI techniques to real-world problems.

CS 363 Networks, Games, and Collective Behavior
Credit Hours: 3+0
Prerequisite: CS 102 and CS 113
Fulfils: CS Elective
This course brings an interdisciplinary perspective by combining foundations of network science, game theory, and computational social choice, to study social, technical, and natural systems exhibiting collective behavior and thus aims at exploring the micro macro link from a theoretical and an applied lens. The course covers topics including models of social dilemma, auctions, voting behavior, contagion, diffusion, and coalition formation.

CS 370 Web and Mobile Development
Credit Hours: 2+1
Prerequisite: CS 224 and CS 355
Fulfils: CS Elective
Develops expertise in current web and mobile development tools; topics include: HTML, CSS, JavaScript, building an HTML website, animation and effects, Visual Studio and C#, .NET and MVC, views, controllers, models, working with databases, authentication and authorization, security, mobile development, Ionic.

CS 400 Computer Science Senior Seminar
Credit Hours: 1+0
Prerequisite: None
Fulfils: CS Elective
Provides insight into a few current research areas in Computer Science; develops skills in reading, understanding, and presenting research papers and presentations in Computer Science.

CS 432 GPU Accelerated Computing
Credit Hours: 3+0
Prerequisite: CS 232 and Math 205
Fulfils: CS Elective
This course teaches the fundamental tools and techniques for accelerating C/C++ applications to run on massively parallel GPUs with CUDA®. Students will learn how to write code, configure code parallelization with CUDA, optimize memory migration between the CPU and GPU accelerator, and implement the workflow that they have learned on a new task—accelerating a fully functional, but CPU-only, particle simulator for observable massive performance gains.

CS 440 Computer Graphics
Credit Hours: 3+0
Prerequisite: CS 224, CS 412, and MATH 205
Fulfils: CS Elective
This course presents some of the basic techniques in Computer Graphics and focuses on two particular rendering approaches: pipeline rendering using a graphics API and realistic rendering using ray tracing.

CS 451 Computational Intelligence
Credit Hours: 3+0
Prerequisite: CS 351
Fulfils: CS Elective
Studies different nature-inspired computational methods; provides hands-on experience of applying these techniques to solve complex optimization problems; topics include: evolutionary computation, swarm intelligence, reinforcement learning, fuzzy logic, and artificial neural networks.

CS 457 Data Science Techniques
Credit Hours: 3+0
Prerequisite: CS 355 and MATH 310 / EE 354
Fulfils: CS Elective
Develops the skills to leverage statistics and programming to make predictions, optimize outcomes, and help guide business decisions using data; explores techniques for drawing conclusions and predicting outcomes from data; provides hands-on exposure to an ecosystem of powerful tools that apply data science techniques to real data sets; topics include: data manipulation, data visualization, supervised and unsupervised learning, descriptive and inferential statistics, and data visualization.