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   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   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   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   605. Advanced Computer Architecture. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: EGRE 426 or consent 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   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. Pre- or corequisite: CMSC   620. 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   630. Applied Signal and Image Analysis. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisite: graduate standing in engineering or science or permission of instructor. Describes concepts and practical applications of signal and image processing methods in addition to classification techniques, with emphasis on applications of these methods to complex problems in health care and finance. The main topics to be covered are 1) transforms and feature extraction: Fourier transform, wavelet transform, fundamentals of information theory, statistical measures used in signal processing, image enhancement and segmentation methods; 2) clustering and classification: k-means, Bayesian classifiers, introduction to neural networks, mixture model methods, system identification and time-series modeling; 3) applications and examples: biomedical signal/image processing, medical informatics, economics and financial engineering, bioinformatics, precision manufacturing, and robotics.

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

Semester course; 3 lecture hours. 3 credits. Prerequisite: graduate student standing in computer science or related discipline such as bioinformatics or acceptance into five-year accelerated program in computer science; and, either completed CMSC   401 or enrolled in corequisite CMSC   501. Covers knowledge discovery and data mining concepts, tools and methods; provides hands-on experience by requiring the coding of several non-open source algorithms and a project involving analysis of a large quantity of real-life data. Topics include the knowledge discovery process, data storage and representation issues, preprocessing algorithms of feature extraction, selection and discretization; unsupervised learning of clustering and association rules; Bayesian, inductive machine learning and neural networks (RBF) supervised learning methods; model validation methods; and data security and privacy issues.

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. 3 Hours.

Semester course; 3 lecture hours. 3 credits. Prerequisites: 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. At most, three credits of CMSC   692 can be applied toward the M.S. degree in computer science.

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: INFO   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.