Krzystof J. Cios, Ph.D.
Professor and chair

computer-science.egr.vcu.edu

The Department of Computer Science offers undergraduate and graduate programs. The Bachelor of Science in Computer Science is a rigorous, highly concentrated curriculum of computer science courses. It includes advanced study in several important areas of computer science and provides a strong foundation in this discipline. Every course is taught by full-time faculty members who also serve as advisers to both undergraduate and graduate students.

The master’s degree program emphasizes continuing self-development of individuals currently engaged in science-, technology- and engineering-related fields. It prepares persons who have completed undergraduate majors in these fields for entry into careers in areas that use computing technology. Both the theoretical and applied aspects of computer science are emphasized in this program. The program offers courses in a wide range of areas in computer science, including machine learning, artificial intelligence, cybersecurity and cloud computing, data mining, bioinformatics, and medical informatics.

 

Computer science

CMSC 501. Advanced Algorithms. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisites: CMSC 401 or equivalent; graduate standing or acceptance into acclerated B.S. to M.S. program in computer science. Advanced graph algorithms, advanced data structures, applied numerical algorithms, optimization methods, approximation methods for hard graph and string problems, and computational geometry algorithms.

CMSC 502. Parallel Algorithms. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisites: CMSC 312 and CMSC 401, graduate student standing or acceptance into the five-year accelerated B.S. and M.S. program in computer science. Software and hardware mechanisms for providing mutual exclusion in uniprocessor and multiprocessor environments. Architectural issues including pipeline design, superscalar computers, multiprocessors, memory systems, peripherals, interfacing techniques, networks, performance and software issues. Design and uses of parallel algorithms to solve concurrency problems in a distributed environment including message passing and remote procedure calls. Students will work in teams (as well as on individual projects) to design and implement parallel algorithms.

CMSC 506. Computer Networks and Communications. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: CMSC 312. Theoretical and applied analysis of basic data communication systems; design of networks in the framework of the OSI reference model; Local and Wide Area Networks; performance analysis of networks; error control and security. Students will work in teams to design and implement a small computer network. Crosslisted as: EGRE 526.

CMSC 508. Database Theory. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: CMSC 401. Design and implementation of relational database systems. Emphasis is placed on entity-relationship diagrams, relational algebra, normal forms and normalization. Introduction to SQL. Discussion of physical level issues. Students will be required to complete a design project and give an oral presentation of the project. Not applicable toward M.S. in Computer Science or the Ph.D. in Engineering, computer science track.

CMSC 510. Regularization Methods for Machine Learning. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Enrollment restricted to students with graduate standing in computer science or related discipline such as bioinformatics or acceptance into five-year accelerated program in computer science. The course will assume undergraduate-level background in algorithms, linear algebra, calculus, statistics and probability. Upon successful completion of this course, the student will be able to understand recent advances in machine learning and apply machine-learning tools that go beyond learning from data, as well as have the ability to incorporate additional knowledge about the learning problem. Topics covered will include optimization-based view of supervised machine learning; classical regularization approaches including weight decay and Lasso; regularization terms incorporating additional knowledge about structures in the feature space, including group lasso and graph-based regularization terms; semi-supervised learning using graphs linking unlabeled and labeled samples.

CMSC 512. Advanced Social Network Analysis and Security. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Pre- or corequisites: CMSC 412 and CMSC 501. Enrollment requires graduate student standing in computer science or related discipline such as bioinformatics, or acceptance into five-year accelerated program in computer science. The purpose of the course is to teach algorithms for analyzing social networks and complex systems. The focus will be on understanding the inner workings of algorithms using in-network analysis and security threats in online social network sites. Topic covered will include modeling social and technological networks, methods for analyzing structure and dynamical processes on the network, and security and privacy issues in online social networks such as inference attacks, network anonymization, sybil attacks and defense, social bots.

CMSC 516. Advanced Natural Language Processing. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Enrollment restricted to graduate students in computer science or related discipline, or acceptance into five-year accelerated program in computer science. Upon successful completion of this course, the student will be able to understand recent advances in natural language processing and apply NLP algorithms and techniques for processing unstructured text. Word-level, syntactic and semantic processing will be considered. Specific topics include rule-based and statistical methods for creating computer programs that analyze, generate and understand human language. Regular expressions and automata, context-free grammars, probabilistic classifiers and machine learning. Applications to real-world problems such as spell-checking, Web search, automatic question answering, authorship identification and developing conversational interfaces.

CMSC 525. Introduction to Software Analysis, Testing and Verification. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisites: CMSC 401 and 403, graduate student standing or acceptance into the five-year accelerated B.S. and M.S. program in computer science. An introduction to concepts and techniques used in the analysis of software for certain properties. Using analytic results to derive test data and verify the correct implementation of programs. Flow graphs, fault/failure model, theoretical and practical limitations. Control flow, data flow and error flow analyses. Testing strategies including random, structural, mutation and error flow. Software metrics.

CMSC 526. Theory of Programming Languages. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: CMSC 403, graduate student standing or acceptance into the five-year accelerated B.S. and M.S. program in computer science. An introduction to the formal semantics of programming languages, logic programming and functional programming. Topics include denotational semantics, attribute grammars, Backus Formal Functional Programming, fixed point semantics, model-theoretic semantics and PROLOG.

CMSC 591. Topics in Computer Science. 3 Hours.

Semester course; 3 lecture hours. 3 credits. May be repeated for credit. Prerequisites may vary. Permission of the instructor required. Course is open to graduate students and students accepted into the five-year accelerated B.S. and M.S. program in computer science. A study of selected topic(s) in computer science at the graduate level. See the Schedule of Classes for specific topics to be offered each semester.

CMSC 601. Convex Optimization. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: CMSC 501 or permission of instructor. Enrollment restricted to students with graduate standing in computer science or related discipline. A background in undergraduate-level linear algebra is assumed. Convex sets and functions. Convex optimization problems: Linear, quadratic, semi-definite and cone programs. Duality theory. Approximation algorithms for NP-complete integer optimization problems via semi-definite relaxations and rounding schemes. Algorithms for optimization, such as gradient descent, proximal descent, alternating directions method of multipliers, interior point methods.

CMSC 602. Operating Systems. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: CMSC 502. A study of operating systems including those in multiprocessor and distributed environments. I/O programming, resource management (including processor and memory management), security and system performance evaluation.

CMSC 603. High Performance Distributed Systems. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Enrollment restricted to students with graduate standing in computer science or related discipline or acceptance into five-year accelerated program in computer science. The course will assume undergraduate-level background in algorithms, data structures and parallel programming. Upon successful completion of this course, the student will be able to understand the concepts underlying distributed systems; analyze problems to identify performance bottlenecks, parallelization opportunities and concurrency issues in a distributed environment; create distributed and scalable implementations using multiple hosts/GPUs; design and implement algorithms using Hadoop, Spark and CUDA.

CMSC 605. Advanced Computer Architecture. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: EGRE 426 or with permission of instructor. This course will focus on the design and analysis of high performance computer architectures. Topics investigated include pipeline design, superscalar computers, multiprocessors, memory systems, peripherals, interfacing techniques, networks, performance and software issues. Crosslisted as: EGRE 635.

CMSC 608. Advanced Database. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: CMSC 508. Topics discussed include: handling of missing information; the relationship between relational calculus, relational algebra and SQL; logic databases; distributed databases; outer joins; and transaction processing. Emphasis is placed on theoretical issues involved in these topics. In addition students will work in teams to develop a working database application.

CMSC 609. Advanced Computational Intelligence. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: an undergraduate course in artificial intelligence, or equivalent background with permission of instructor. Exploration of issues related to application of computational intelligence techniques to system security, particularly in the detection of anomalous system behavior. Of particular interest are issues associated with the automated detection of anomalies caused by authorized users through intended malicious behavior or through accidental misuse, and issues associated with automated user authentication. Crosslisted as: CISS 609.

CMSC 610. Algorithmic Foundations of Bioinformatics. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: Graduate student standing or acceptance into five-year accelerated program in computer science or related discipline such as bioinformatics. The purpose of the course is to teach algorithms for analyzing biological and medical data. The focus will be on understanding the inner workings of algorithms used in bioinformatics tools. Topic covered will include algorithms for assembling and searching biological sequences, finding patterns associated with disease, and exploring biological networks.

CMSC 611. Computer Multimedia. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: permission of instructor. Study of computer multimedia techniques relating to images, sound, video and text. Emphasis on compression techniques and standard storage formats. This course is programming-intensive.

CMSC 612. Game Theory and Security. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: CMSC 401, graduate student standing or acceptance into the five-year accelerated B.S. and M.S. program in computer science. The course will provide an introduction to game theory and mechanism design concepts. Lectures cover topics such as introduction of games, equilibrium concepts, computation of game-theoretic solution concepts, mechanism, and issues in game theory and mechanism design.

CMSC 615. Cryptocurrency and Blockchain Techniques. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Enrollment is restricted to students with graduate standing in computer science or a related discipline. The course will assume undergraduate-level background in algorithms, data structures and programming. Upon successful completion of this course, the student will be able to understand the major concepts about cryptocurrency and blockchain techniques; be familiar with major blockchain applications as well as real-world issues; understand the underlying consensus mechanisms in the Bitcoin system and other alternative cryptocurrency systems; analyze the security of Nakamoto consensus; understand, write and execute smart contracts using an Ethereum-like platform.

CMSC 618. Database and Application Security. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Theory and practice of database and software security focusing in particular on some common database software security risks and on the identification of potential threats and vulnerabilities. Crosslisted as: CISS 618.

CMSC 619. The Design and Specifications of User Interfaces. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: Graduate standing and permission of instructor. Requires knowledge of first order predicate calculus and context-free languages. Focuses on human-computer interface design principles and methodology and formal specifications of user interfaces.

CMSC 620. Applied Cryptography. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Provides a comprehensive survey of modern cryptography. Included are techniques of enciphering and deciphering messages using cryptographic algorithms, block ciphers and block cipher modes, hash functions and message authentication codes, public key cryptography and digital signatures, and steganography. Crosslisted as: CISS 624.

CMSC 621. Theory of Computation. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: graduate student standing and permission of instructor. Discussion of the complexity and computability of problems and programs. Topics will include unsolvability, universal programs and abstract complexity.

CMSC 622. Network and Operating Systems Security. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: CISS 624. Studies the principles of network security and secure operating systems. Included are topics relating to the use of intrusion detection, intrusion prevention and other related tools.

CMSC 623. Cloud Computing. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: CMSC 622. Provides an introduction to cloud computing architecture and cloud computing security. The course covers the basic concepts of cloud computing, including memory virtualization, device virtualization and related security problems in cloud computing.

CMSC 624. Software Quality Assurance. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisites: a course in software engineering and graduate standing in computer science, or permission of instructor. A study of issues that affect the quality of software and of methodology to assure that software products are of the desired quality. This also includes issues in assessing product quality as well as the process by which the software is produced. Topics include various methodologies, standards, metrics and tools.

CMSC 625. Advanced Software Analysis, Testing and Verification. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: CMSC 525. Studies the concepts and techniques used in the analysis of software and the derivation of test data. Focuses on software metrics and reliability; construction of tools to aid software analysis and testing. Requires students to review seminal and current papers from the literature, and lead their discussion in class.

CMSC 628. Mobile Networks: Applications, Modeling and Analysis. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Enrollment is restricted to students with graduate standing in computer science or related discipline. The course will assume undergraduate-level background in algorithms, data structures, programming and networks. Upon successful completion of this course, the student will be able to understand the major concepts about mobile networks such as device-to-device communication technologies, mobility models and coverage; be familiar with various mobile network types (e.g., mobile social networks, delay tolerant networks, overlay networks, vehicular networks and cellular networks) and devices (e.g., smartphones, femtocells, WiFi), learn how to model mobile networks with stochastic processes and real datasets; be able to use different networking simulators; and understand various routing algorithms and analyze their behavior.

CMSC 630. Image Analysis. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Enrollment restricted to students with graduate standing in engineering or science or by permission of instructor. Introduces theoretical and practical aspects of computer vision for image processing and understanding. It provides a comprehensive walkthrough from basics of image preparation to using computational intelligence tools for knowledge discovery from images. The course will cover basics of image processing and computer vision, including image sampling and quantization, color, pixel-based operations, image filtering, morphological image processing, and image transforms; information extraction including segmentation and feature extraction; pattern recognition for computer vision: classification, novelty and object detection, image understanding, learning from video streams, and tensor-based methods. Examples will include medical image analysis, object recognition in ground and aerial photographs and hyperspectral imaging.

CMSC 635. Knowledge Discovery and Data Mining. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: CMSC 401 or corequisite: CMSC 501. Enrollment restricted to students with graduate standing in computer science or related discipline such as bioinformatics or acceptance into five-year accelerated program in computer science. Covers knowledge discovery and data mining concepts, tools and methods; provides hands-on experience based on a project involving analysis of large real-life data. Topics include the knowledge discovery process, data storage and representation, preprocessing algorithms for missing data imputation, feature selection and discretization; unsupervised learning algorithms for clustering and association mining; supervised learning algorithms including decision trees, Bayesian models and introduction to support vector machines and neural networks; ensemble learning; protocols and measures for validation of predictive models; and data security and privacy issues.

CMSC 636. Artificial Neural Networks and Deep Learning. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Enrollment restricted to students with graduate standing in computer science. The course will assume undergraduate-level background in programming, algorithms, linear algebra, calculus, statistics and probability. Topics ranging from fundamental learning rules, functional, cascade correlational, recurrent and gradient descent networks, to neocognitron, softmax, deep convolutional networks, autoencoders and pretrained deep learning (restricted Boltzmann machines). Students will be required to work in teams on a class paper.

CMSC 678. Statistical Learning and Fuzzy Logic Algorithms. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: MATH/STAT 309 or 310. The course considers two central problems in modern science and engineering: i) the problem of statistical learning from examples (empirical data) and ii) the problem of embedding existing human knowledge into workable mathematics. Topics include: examples of multivariate functional mapping, basics of classic classification and regression, support vector machines as a learning paradigm based on structural risk minimization, fuzzy logic algorithms, basics of multi-class classification over high dimensional spaces, curve and surface fittings, multivariate function approximation and nonlinear optimization; fuzzy logic systems; crisp and fuzzy sets, linguistic variables, fuzzy set theory; if-then rules, fuzzy interference, fuzzification and defuzzification, neuro-fuzzy paradigms.

CMSC 691. Special Topics in Computer Science. 3 Hours.

Semester course; 3 lecture hours. 3 credits. May be repeated for credit. Prerequisites: at least one graduate-level computer science course pertaining to the topic area and permission of instructor. An advanced study of selected topic(s) in computer science at the graduate level. See the Schedule of Classes for specific topics to be offered each semester.

CMSC 692. Independent Study. 1-3 Hours.

Semester course; 1-3 variable hours (to be arranged). 1-3 credits. Enrollment restricted to students with graduate standing and consent of instructor. Independent study done under the supervision of a faculty member. The student must identify a faculty member willing to supervise the research and submit a proposal for approval by the computer science graduate committee no later than the 10th week of the prior semester. A written report and an oral presentation are required upon completion of the research project. Graded as Pass/Fail.

CMSC 697. Directed Research. 1-15 Hours.

Semester course; variable hours (to be arranged). 1-15 credits. May be repeated for credit. A total of 3 credits may be used to fulfill the M.S. in Computer Science thesis requirement. Prerequisite: graduate standing. Independent research culminating in the writing of the required thesis or dissertation. The student must identify a faculty member willing to supervise the research and submit a proposal to the computer science graduate committee no later than the 10th week of the prior semester. This proposal must be approved before the student can register for the course. Graded as S/U/F.

CMSC 701. Research Methods. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: Ph.D. standing or permission of instructor. Covers the principles of conducting a research project, reporting the findings in the form of a journal paper and promoting the research through public presentations. Students learn to write grant proposals and practice reviewing research papers and grant proposals. The main emphasis of the course is writing a paper and a grant proposal in a format compliant with NSF, NIH or DoD guidelines.

 Computer and information systems security

CISS 609. Advanced Computational Intelligence. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: an undergraduate course in artificial intelligence, or equivalent background with permission of instructor. Exploration of issues related to application of computational intelligence techniques to system security, particularly in the detection of anomalous system behavior. Of particular interest are issues associated with the automated detection of anomalies caused by authorized users through intended malicious behavior or through accidental misuse, and issues associated with automated user authentication. Crosslisted as: CMSC 609.

CISS 616. Data Warehousing. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: INFO 610. Covers important concepts and techniques in the design and implementation of a data warehouse. Topics include the data warehouse architecture, the logical and physical design issues in the data warehousing development process, technical factors (i.e., hardware, client/server technology, data warehousing and DBMS technologies) and implementation considerations (i.e., data extraction, clean-up and transformation tools). Introduces online analytical processing and data mining. Crosslisted as: INFO 616.

CISS 618. Database and Application Security. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Theory and practice of database and software security focusing in particular on some common database software security risks and on the identification of potential threats and vulnerabilities. Crosslisted as: CMSC 618.

CISS 622. Network and Operating Systems Security. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: CISS 624. Studies the principles of network security and secure operating systems. Included are topics relating to the use of intrusion detection, intrusion prevention and other related tools. Crosslisted as: CMSC 622.

CISS 624. Applied Cryptography. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Provides a comprehensive survey of modern cryptography. Included are techniques of enciphering and deciphering messages using cryptographic algorithms, block ciphers and block cipher modes, hash functions and message authentication codes, public key cryptography and digital signatures, and steganography. Crosslisted as: CMSC 620.

CISS 634. Ethical, Social and Legal Issues in Computer and Information Systems Security. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Analyzing socio-political and ethical issues surrounding computer and information systems security. Topics include privacy laws, identity theft, information collection and retention policies, and enforcement.

CISS 644. Principles of Computer and Information Systems Security. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: INFO 640 or INFO 661. Explores issues related to protecting information resources of a firm. Various tools and techniques useful for assessing CISS security concerns in organizations are introduced. Principles and models for CISS security and security management are presented and selected computer and CISS security topics are introduced. Material is presented and discussed from a management frame of reference. Crosslisted as: INFO 644.

CISS 646. Computer and Information Systems Access Control. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Detailed discussion of access control, including administration, identification and authentication techniques, methodologies and implementations, methods of attack, monitoring, and penetration testing.

CISS 654. Business Continuity and Disaster Recovery Planning. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Fundamentals of business continuity and disaster recovery planning. Includes risk assessment, physical facility protection, data recovery planning, strategies for network backup, desktop recovery, emergency decision making, and maintenance and testing of the plan and its components.

CISS 693. Practice of Computer and Information Systems Security. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Students will undertake practical research projects. Written reports of the investigations are required. This course is intended to be taken at the end of the program.

CISS 697. Guided Study. 1-3 Hours.

Semester course; variable hours. 1-3 credits. Intended for graduate students in the Computer and Information Systems Security program wishing to do research on problems in computer and information systems security. Approval of proposed work is required by the director of graduate programs of the Department of Information Systems or of the Department of Computer Science no later than the 10th week of the prior semester. Each student will work with an appropriate faculty member on an approved research proposal. The student will submit a written report on the research conducted as the final product for the course. This course is intended to be taken near the end of the student’s degree program.