# Computer Science Courses

Zaven & Sonia Akian College of Science and Engineering’s (CSE) BS in Computer Science is designed to provide an integrated and interdisciplinary undergraduate degree that applies the theoretical rigor of mathematics and computational methods to real-life problems.

The Program Goals and Student Learning Outcomes of the BS in Computer Science were developed to provide students with a deeper understanding of the degree program and a description of the competencies they can expect to possess after completing the program.

Students in the BS in Computer Science program will have the option of pursuing a general degree or of concentrating in one of two tracks: Mathematical Modeling or Computer Science. Each track consists of five concentration courses, two of which are mandatory.

The BS in Computer Science is offered as part of AUA’s liberal arts education. Program-wide and university-wide goals have been designed to ensure that AUA’s graduates become not only specialists in their fields, but also develop into well-rounded individuals, able to think critically and creatively, to learn independently, to understand different thinking traditions, to work collaboratively, and to interact with people from different cultures and disciplines.

**Computer Science Core Requirements **

(17 courses)

**CS 100 Calculus 1** – 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.

**CS 101 Calculus 2** – This course builds on CS100 and covers topics including: techniques of integration, applications of integrals, improper integrals; separable differential equations; qualitative problem solving techniques, extreme case reasoning, dimensional analysis, iterative approximation, discretization, generalization; sequences, series, convergence, Taylor series. Students are required to complete weekly problem sets in order to develop proficiency in differential and integral Calculus. Three hours of instructor-led class time per week including discussions and problem sets.

**CS 102 Calculus 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.

**CS 103 Real Analysis –**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 instructor-led class time per week including discussions and problem sets.

**CS 104 Linear Algebra** – This introductory course covers topics including: vectors, dot products, hyperplanes in R^{n}; 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. Three hours of instructor-led class time per week including discussions and problem sets.

**CS 107 Probability **– 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.

**CS 108 Statistics **– 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.

**CS 110 Intro to Computer Science ** – 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.

**CS 111 Discrete Mathematics** – The course examines topics including: propositional logic, Boolean algebra; introduction to set algebra, infinite sets; relations and functions; methods of proof; introduction to number theory; introduction to graph theory, trees; combinatorics; applications to computer science. Students should be able to apply practical numerical methods to solve problems which arise in computational sciences. Students are required to demonstrate a rudimentary foundation in mathematical modeling through solving problems arising in computational science through analytical and numerical methods. Three hours of instructor-led class time per week including discussions and problem sets.

**CS 112 Numerical Analysis** – 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.

**CS 120 Intro to Object Oriented Programming** – 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 instructor-led class time per week including discussions and problem sets.

**CS 121 Data Structures** – 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.

**CS 130 Computer Organization** – 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.

**CS 211 Introduction to Algorithms** – 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.

**CS 213 Optimization** – 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.

**CS 240 Mechanics** – The course surveys a range of topics including: the principles of relativity and determinacy, the Galilean group, Newton’s equations; systems with one and two degrees of freedom, conservative force fields, angular momentum, dynamics of a system of n points, the method of similarity; generalized coordinates, variational principles, Lagrange’s equations; conservation laws; integrations of the equations of motions, the two-body central-force problem; collisions between particles; small oscillations; rigid bodies; Hamilton’s equations; Poisson brackets, canonical and non-canonical transformations; the Hamilton-Jacobi equation, adiabatic invariants; canonical perturbation theory. Students are required to develop expertise in the application domain of mechanics. Students will complete individual research projects in order to develop advanced proficiency in discovering and analyzing new material. Three hours of instructor-led class time per week including discussions and problem sets.

**CS 296 Capstone** – Students will select a topic from their respective tracks and work on the course-long project under the mentorship of the advising instructor. No more than ten students will be mentored by one advisor. Students will discuss each others’ 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. Three hours of instructor-led class time per week.

**Mathematical Modeling Track**

**Track Requirements (3 courses)**

**CS 105 Ordinary Differential Equations **– 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.

**CS 205 Partial Differential Equations **– 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.

**CS 226 Math Modeling Applications** – 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.Three hours of instructor-led class time per week.

**Track Electives (2 courses)**

**CS 201 Complex Analysis **– 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.

**CS 217 Computer Graphics** – 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.

**CS 241 Dynamical Systems **– 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.

**CS 251 Machine Learning** – 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. Three hours of instructor-led class time per week including discussions and problem sets.

**Applied Computer Science Track **

**Track Requirements (3 courses)**

**CS 132 Theory of Communication Networks** – The course examines topics including: data communication, circuit and packet switching, protocols; server / client applications, socket programming; TCP, UDP, flow control, congestion control; Internet protocols, routing, switching technologies; local area networks, error detection and correction; basic concepts in mobile computing. Students are required to complete practical exercises in design in order to develop intermediate knowledge of hardware and software networking systems related to computational sciences. Through various course assignments, students will develop a high level of proficiency in broad-based IT skills as well as gain experience investigating new material in this realm.

**CS 220 Parallel and High Performance Computing **– 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.

**CS 222 Database Systems ** – 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.

**Track Electives (2 courses)**

**CS 131 Human-Computer Interaction (HCI)** – 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.

**CS 215 Cryptography **-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. Students will learn to understand and evaluate real life security problems that cryptography can solve. They will also discuss various open problems in applied cryptography. Finally, students will implement cryptographic primitives used in common real applications. Three hours of instructor-led class time per week including discussions and problem sets.

**CS 221 Distributed Systems** – 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.

**CS 246 Artificial Intelligence** – The course covers topics including: basic artificial intelligence concepts; Bayes networks; hidden Markov models; supervised machine learning, unsupervised machine learning, reinforcement learning; games; image processing, computer vision, robot motion planning; natural language processing. Students are required to complete models and projects in order to develop intermediate level expertise in the application domain of artificial intelligence, and associated knowledge and experience in the contemporary computing technology of AI. Through coursework, students will complete and present their independent research to a broad audience. Three hours of instructor-led class time per week including discussions and problem sets.

**CS 252 Data Science with R** – 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.

**General Track ****(5 courses)**

Students may choose any combination of Computer Science courses from Mathematical Modeling and Applied Computer Science Tracks.

To complete the BS in Computer Science, students must complete a total of 40 courses, including 15 General Education courses, 17 CS Core Requirement courses, 5 CS Track courses, and 3 Free Elective courses, in addition to Physical Education, First Aid, and Civil Defense Requirements.

All courses are three credits unless otherwise noted.