Mathematics & Computer Science
The Department of Mathematics and Computer Science offers majors in computer science and data science & analytics. Students gain fundamental knowledge, as well as realworld practical experience, using the latest techniques and software in each field. The computer science major is based on the guidelines recommended by the Association for Computing Machinery. Data Science & Analytics (DSA) is an interdisciplinary major in which students learn comprehensive knowledge and develop skills required for data scientists, data analysts, and analyticsenabled professionals. Students develop problem solving and strategic thinking skills, and to apply scientific principles across multiple disciplines and modern technologies, such that they can manage and analyze largescale data to solve strategic and operational challenges.
Computer science graduates are prepared for careers such as programmers, analysts, researchers, network administrators, and cybersecurity specialists, as well as top graduate schools in technology and computer science. The DSA program prepares students for a broad set of professional careers, including data scientist, data engineer, data administrator, data analyst, data software developer, strategic analyst, market researcher, and informatics analyst.
The department also offers minors in computer science, data administration, data analytics, and mathematics. These minors compliment a variety of majors, adding depth and skills in computation, mathematics, and analytics.
Programs

Computer Science, Bachelor of Science  Major 
Data Science & Analytics, Bachelor of Science  Major 
Computer Science, Minor 
Data Administration, Minor 
Data Analytics, Minor 
Machine Learning, Minor 
Mathematics, Minor 
Algebra I AddOn Endorsement, Teacher Licensure 
Endorsement in Computer Science (612), Teacher Licensure
Courses
CSCI100: Introduction to Programming
This course introduces the fundamentals of programming in a generalpurpose objectoriented programming language such as C++ or Java. It emphasizes thought processes necessary to code effectively. Topics include data types, arithmetic and logical expressions, control structures, methods, arrays, and file I/O.
CSCI101: Programming I
This course introduces the fundamentals of programming in a generalpurpose objectoriented programming language such as C++ or Java. Topics include data types, data representation, arithmetic and logical expressions, control structures, methods, single and twodimensional arrays, and file I/O. The course consists of 3 credit hours of lecture and 2 hours of lab per week.
CSCI102: Programming II
This course is an intermediate course in programming and focuses on Object Oriented Programming and EventDriven Programming in a highlevel programming language. Topics include inheritance, polymorphism, class design, generics, lambda expressions, mapreduce transformations, building GUIs, and an introduction to common data structures.
CSCI110: Discrete Mathematics
This course focuses on the fundamentals of discrete mathematics applicable to computer science. The main goals are to learn the mathematical representation of collections of items and their relationships, selection and ordering of items, mathematical reasoning for proofs, model modeling, concepts about probability and computation theory. Topics include: Sets, Relations and Functions, Inductive and Deductive reasoning, Permutations and Combinations, Graphs, Probability, FSMs, PDAs, LBAs (or Regular, ContextFree, ContextSensitive Grammars) and Turing machines.
CSCI110: Discrete Mathematics
This course focuses on the fundamentals of discrete mathematics applicable to computer science. The main goals are to learn the mathematical representation of collections of items and their relationships, selection and ordering of items, mathematical reasoning for proofs, model modeling, concepts about probability and computation theory. Topics include: Sets, Relations and Functions, Inductive and Deductive reasoning, Permutations and Combinations, Graphs, Probability, FSMs, PDAs, LBAs (or Regular, ContextFree, ContextSensitive Grammars) and Turing machines.
CSCI130: Programming with Python
The Python programming language will be explored. The course will cover familiar programming language constructs such as control flow, strings, functions, input/output, and data structures as well as advance topics such as regular expressions, modules and packages. The course also provides experience using Unix commands and version control using git and GitHub.
CSCI131: Web Scripting
This course introduces the JavaScript programming language. Students learn how to use JavaScript to dynamically create and manipulate elements within web pages. Advanced JavaScript utilities such as rest operator, generators, destructuring, object literals, arrow functions, modern classes, and promises are also discussed. Offered each spring of odd years.
CSCI220: Data Structures and Algorithms
Advanced programming techniques will be covered with extensive use of recursion and dynamic data structures. Abstract data types including lists, stacks, queues, trees and hash tables are studied. Algorithms for searching and sorting are explored. The topics in this course provide an essential foundation for the further study of computer science. A generalpurpose objectoriented programming language such as C++ or Java will be used to illustrate these topics.
CSCI231: ServerSide Web Development
This course covers serversside web application development. Students will learn to set up a development server and develop web application servers that incorporate database connectivity and user authentication, and that provide RESTful APIs. Topics also include web protocols and security issues. Offered each fall of odd years.
CSCI232: ClientSide Web Development
This course covers the design and development of rich reactive web UI's using frontend JavaScript frameworks such as Bootstrap, Angular.js, React.js and Vue.js. Offered each spring of even years.
CSCI250: Computer Networks
Networked machines are at the core of today's computing world. This course covers the theory and practice of networking, from applications to the physical components including IP, routing, internetworking, TCP/UDP, congestion control, wireless and security. All the concepts are demonstrated using network simulation software and tools. Students will implement many algorithms for networking such as routing and communication in a contemporary programming language.
CSCI260: Introduction to Cybersecurity
This course is an introduction to cybersecurity. The course will discuss cybersecurity concepts, security domains, threat space, risks, auditing, access controls in file systems, cryptography, and writing security policies and standards. The course will discuss different categories of malware. We will discuss some methods an adversary can use to attack information systems. Offered each spring of even years.
CSCI320: Algorithm Analysis and Design
This course covers the principles of algorithm design and analysis. Different approaches to design such as divide and conquer, greedy, and dynamic programming are covered. Advanced data structures beyond the basic lists, stacks and trees are also introduced such as redblack and AVL trees. Proving the correctness of algorithms and analysis using advanced techniques such as the master theorem are covered. Tractability of algorithms is discussed including NPCompleteness.
CSCI341: Computer Architecture
Introduction to computer systems and their organization. Topics include CPU design and construction using logic gates, data representation, and assembly language representation of common programming language constructs including conditionals, loops and functions. The gcc compiler and the C programming language will be used to illustrate these topics.
CSCI342: Operating Systems
Covers principles of computer operating systems including the management of processes, memory, I/O devices, and file systems. Other topics include issues of scheduling, security, and concurrency, distributed systems and virtualization. Students will gain practical experience working with the LINUX operating system, the C programming language, and various system libraries.
CSCI361: Network Security
Networks are a key aspect of computing. Security issues in various aspects of networking are examined in this course including network programming and network administration. All layers of TCP/IP are studied for vulnerabilities and protection mechanisms. Network defense tools such as IDPS and firewalls are explored. Practical, labbased activities using network simulators, packet sniffers, and software tools are included throughout the course for demonstration and training. Offered each fall of even years.
CSCI362: Applied Cryptography
This course is about the fundamentals of cryptography and its applications. Details of classical and contemporary cryptographic algorithms are first examined along with techniques to break them. Next, the various applications of cryptography are explored including web, email, network authentication and digital currencies. Students will use both software tools (GUI and/or commandline) for testing ciphers and use crypto API in a programming language to design programs as well. Offered each spring of odd years.
CSCI400: Software Engineering
This course is a projectbased course that covers the tools and processes used in modern software development. Students will work in teams to design, implement, test, and document a software system. Various topics are discussed including Agile development, software repository management, and licensing.
CSCI410: Numerical Algorithms
This course studies algorithms for generating and using mathematical objects such as permutations and subsets. It also studies algorithms for efficient computing of mathematical quantities such as exponents and numbers modulo n. It will also study topics in computational geometry such as determining whether two line segments intersect. Offered alternate years.
CSCI412: Theoretical Cryptography
This course studies the mathematical theory behind cryptographic systems including the RSA encryption algorithm. It will also examine ways of breaking current encryption systems. Offered alternate years.
CSCI414: Coding Theory
This course studies the detection and correction of errors which occur when transmitting data. It will include maximum likelihood and nearest neighbor decoding, linear codes, and Hamming codes. Offered alternate years.
CSCI450: Special Topics
Devoted to a subject chosen from among the various fields of computer science in which regular courses are not offered. Possible topics include graphics, natural language processing, scientific computing, web programming, GIS, parallel processing, robotics, simulation, as well as others. A student may take the course more than once, provided different topics are covered. Offered on demand.
CSCI462: Software Security
This course covers principles and techniques to improve the security of software. Secure software engineering principles using software development life cycle models are explored. Popular programming languages, vulnerabilities in the languages, execution platforms, compiler provisions, secure libraries, and cryptographic API are covered. Students will analyze code for vulnerabilities and design code to enhance security by exploiting security provisions at compiletime and runtime as well as use cryptographic API. Offered alternate years.
CSCI480X: Internship
Provides an opportunity for a student to gain field experience in an area related to the student's program of study or career goals. The learning objectives for internships include connecting academic knowledge and problemsolving processes to experiences and problems in professional settings. Supervision of an intern is provided by an appropriate faculty member and by a site supervisor of the agency or business in which the student is an intern. A student who wishes to engage in an internship must consult with the appropriate faculty member at least eight weeks in advance of the start of the term in which the internship is to be completed. A description of the internship, signed by the student and the faculty sponsor, must be filed with the director of internships by the first day of the semester prior to the start of the internship. Approval of each application for an internship is made by the director of internships based upon approved policies and guidelines. Internships are graded on an S or U basis. Students must complete 120 hours of internshiprelated work as well as weekly journal entries and a final reflective paper completed in accordance with approved requirements. A student may enroll in an internship program for 3 credits per semester, and internship credit may be earned in subsequent semesters subject to the limitations that no more than two internships may be pursued in any one agency or business and a maximum of 9 credits in internships may be applied toward graduation. FILA general education: experiential learning.
CSCI490: Independent Study
CSCI491: Research
CSCI499: Honors Project
DSA225: Statistical Methods With R
This course develops practical skills in applying statistical methods to problemsolving and research. Topics cover simple linear regression (SLR), ANOVA, ChiSquare distribution, and basic nonparametric testing. This course uses statistical methods in the R environment to perform statistical analysis.
DSA230: Database Systems
Introducing database systems and database management. The emphases are database design and implementation. The topics covered include ERM (ERD) and EERM (EERD), relational and objectoriented database design, SQL and QBE. This course focuses on practical skill in database design and implementation.
DSA300: Advanced Data Analytics
This course explores advanced data analytics models. Topics cover multivariate modeling, multiple linear regression modeling, time series analytics, risk analysis, optimization analysis, etc. The course emphasizes applying R in data analytics modeling for marketing, consumer management, risk management, and operation efficiency. Offered alternate years.
DSA330: Data Warehousing
This course introduces the methods for developing data warehouses. Core topics include data warehouse design, implementation, and maintenance. This course takes a practical approach to introduce the best practices of using data warehousing to support business intelligence (BI). Offered fall term of even years.
DSA350: Data Preparation with Python
This course introduces fundamental concepts and methods in data acquisition. Topics cover data selection, retrieval, cleansing, transformation, and loading. Advanced Python data structures (e.g., heap, series, narrays, matrices, DataFrame, etc.) are used to carry out data acquisition. Analytic tools for evaluating data acquisition processes are emphasized. The key issues related to data acquisition are addressed. Visual analytic methods are introduced for data acquisition. The course also covers automating complex data acquisition tasks with Python. Offered spring semester of even years.
DSA375: Data Visualization
Introducing the principles of data visualization and D3.js. The key topics covered include basic data visualization principles and methods, as well as D3.js applications in visualizes data analysis results. The students will gain handon skills in using D3.js to produce high quality aesthetic graphs by completing a data analytic project with D3.js graphs. Offered alternate years.
DSA400: Intelligent Search Methods
This course introduces the methods for intelligent searches. Core topics include logic fundamentals for AI, state models, and inference engines. The students will explore AI applications of intelligence search methods and gain handson experience in developing preliminary an intelligence search engine. Offered alternate years.
DSA425: Data Mining
This course cover data mining techniques to search patterns in large data set. Topics include the fundamental data mining models for clustering, decision trees, association analysis, and neural networks. The objective of this course is to develop skills in deriving predictive knowledge from data mining to improve business intelligence. Offered fall term of even years.
DSA450: Machine Learning
This course introduces learning techniques for machine learning including stochastic learning, ensamples, density analytics, descent methods, intelligence analysis, etc. Algorithmic design and implementation are introduced in the context of machine learning. This course will also cover the issues and applications of machine learning. Offered spring term of odd years.
DSA475: BigData and Cloud Computing
Introducing the concepts of big data and cloud computing. Topics cover bigdata concepts, popular cloud computing platforms (e.g., Google App Engine, IBM Bluemix and Amazon Web Service), as well as cloud programming architectures and paradigms. The emphasis is Hadoop ecosystem, including the fundamentals of HDFS and MapReduce (e.g., HDFS architectures, parallel algorithm design, and parallel performance analysis). Offered alternate years.
DSA480X: Internship
Provides an opportunity for a student to gain field experience in an area related to the student's program of study or career goals. The learning objectives for internships include connecting academic knowledge and problemsolving processes to experiences and problems in professional settings. Supervision of an intern is provided by an appropriate faculty member and by a site supervisor of the agency or business in which the student is an intern. A student who wishes to engage in an internship must consult with the appropriate faculty member at least eight weeks in advance of the start of the term in which the internship is to be completed. A description of the internship, signed by the student and the faculty sponsor, must be filed with the director of internships by the first day of the semester prior to the start of the internship. Approval of each application for an internship is made by the director of internships based upon approved policies and guidelines. Internships are graded on an S or U basis. Students must complete 120 hours of internshiprelated work as well as weekly journal entries and a final reflective paper completed in accordance with approved requirements. A student may enroll in an internship program for 3 credits per semester, and internship credit may be earned in subsequent semesters subject to the limitations that no more than two internships may be pursued in any one agency or business and a maximum of 9 credits in internships may be applied toward graduation. FILA general education: experiential learning.
DSA490: Independent Study
DSA491: Research
DSA499: Honors Project
MATH105: Mathematical Theory & Computation I
MATH110: College Algebra
Real numbers, exponents, radicals, and algebraic operations with polynomial and rational functions. Solving equations and graphing expressions involving polynomial and rational functions, and exponential and logarithmic functions. FILA general education: master core skills.
MATH115: Mathematical Theory & Computation II
The courses are logically divided into four primary areas: arithmetic, geometry, algebra, and problem solving. Each of the four areas is studied in both terms. The theory of problem solving is an integral part of all aspects of the courses. The study of arithmetic includes the theory arithmetic operations and the development of skills in computation; number theory and patterns in sequences of numbers are used to introduce the basics of mathematical proofs. The study of geometry includes identification of plane and solid geometric shapes, computations of perimeter, area and volume, and trigonometry of right triangles. The study of algebra includes basic algebraic operations, computation using functions, and graphing. FILA general education: master core skills.
MATH118: Quantitative Reasoning
This course is designed to provide development of basic computational skills and introductory algebra concepts like solutions of single variable equations. It will also cover some introductory statistics and probability concepts. Problem solving will be emphasized. The course will contain at least one project that requires students to make extensive use of spreadsheet software like Excel. FILA general education: master core skills.
MATH120: Precalculus Mathematics
A precalculus course for students continuing in mathematics. Includes topics in algebra, functions and relations, and trigonometry.
MATH133: Calculus I
Study of calculus of a single variable. Theory of limits, continuity, differentiation, integration, and Fundamental Theorem of Calculus is studied along with applications including curve sketching, maxmin problems, linear approximation, I'Hopital's Rule, Intermediate Value Theorem, Mean Value Theorem, area under a curve, and volumes of rotation. Credit may not be received for both MATH130 and MATH133.
MATH134: Calculus II
A continuation of the study of calculus of a single variable. Included are techniques of integration, further applications including arc length and surface area of rotation, parametric and polar equations, sequences, series, and Taylor series.
MATH140: Introduction to Statistics
Basic descriptive statistics, probability, hypothesis testing, correlation, and regression. Statistical computer software is used to analyze data.
MATH150: Mathematics for Elementary Educators
This course will provide an overview of the math knowledge, process, and skills based on the National Council for Teachers of Mathematics, Virginia’s Foundation Blocks for Early Learning (PK) and Virginia Standards of Learning (K6) including number systems, elementary number theory, algebra, geometry, probability, and statistics. The theory of problem solving is an integral part of all aspects of the course. Candidates will understand the ability to use the five mathematical processes – reasoning, solving problems, communicating effectively, making connections, and using models and representations  at different levels of complexity.
MATH200: Introduction to Number Theory
Emphasis is on mathematical proofs. Topics include properties of integers (such as odd, even, prime, etc.), division algorithm, least common multiples, greatest common divisors, binary operations ad modular arithmetic.
MATH210: Introduction to Linear Algebra
Emphasis on finite dimensional vector spaces and the algebra of matrices. Vector topics include ndimensional vectors, dot product, norm, orthogonality, lines, planes, projections and cross products. Matrix topics include systems of equations, matrix operations, Gauss elimination, determinants, eigenvalues and eigenvectors.
MATH233: Calculus III
Introduction to multivariate calculus. Included are calculus of vectorvalued functions and motion in space; limits, continuity, partial derivatives, and integrals of functions of several variables; vector fields, Green's Theorem, The Divergence Theorem, and Stokes' Theorem.
MATH310: Linear Algebra
Fundamentals of linear algebra, including vector spaces, matrix algebra, linear transformations, and eigenvectors and eigenvalues. Offered alternate years.
MATH331: Differential Equations
Introduction to ordinary and partial differential equations. Included are solving first order differential equations, and linear differential equations with constant coefficients; series solutions of differential equations; solving elementary partial differential equations. Offered alternate years.
MATH341: Theoretical Statistics I
Fundamentals of probability and distribution theory. Includes probability theory, counting techniques, conditional probability, random variables, moments, moment generating functions, an introduction to multivariate distributions, and transformations of random variables. Offered alternate years.
MATH350: Numerical Analysis
Topics include iterative techniques for solving nonlinear equations, numerical differentiation and integration, and differential equations. Offered alternate years.
MATH370: Introduction to Abstraction
A historical approach to abstraction in three parts: Euclidean geometry leading to nonEuclidean geometry, permutations leading to group theory, and polynomials leading to rings and fields.
MATH450: Special Topics
Devoted to a subject chosen from among the various fields of mathematics in which regular courses are not offered. Possible topics include complex variables, number theory, topology, probability, and applied mathematics, as well as others. A student may take the course more than once, provided different topics are covered. Offered alternate years.
MATH480X: Internship
Provides an opportunity for a student to gain field experience in an area related to the student's program of study or career goals. The learning objectives for internships include connecting academic knowledge and problemsolving processes to experiences and problems in professional settings. Supervision of an intern is provided by an appropriate faculty member and by a site supervisor of the agency or business in which the student is an intern. A student who wishes to engage in an internship must consult with the appropriate faculty member at least eight weeks in advance of the start of the term in which the internship is to be completed. A description of the internship, signed by the student and the faculty sponsor, must be filed with the director of internships by the first day of the semester prior to the start of the internship. Approval of each application for an internship is made by the director of internships based upon approved policies and guidelines. Internships are graded on an S or U basis. Students must complete 120 hours of internshiprelated work as well as weekly journal entries and a final reflective paper completed in accordance with approved requirements. A student may enroll in an internship program for 3 credits per semester, and internship credit may be earned in subsequent semesters subject to the limitations that no more than two internships may be pursued in any one agency or business and a maximum of 9 credits in internships may be applied toward graduation. FILA general education: experiential learning.