Department of Computer Science
Chairperson: Dr. Joon-Suk Lee Location: Hunter McDaniel Building, Room 1S Contact Information: (804) 524-5425 | jlee@vsu.edu
Department Overview
The Department of Computer Science offers two (2) degree programs: a Bachelor of Science in Computer Science and a Master of Science in Computer Science. The department also offers two (2) minors: Computer Science and Cybersecurity. An undergraduate concentration in Information Security is also available. The curriculum blends theoretical foundations with hands-on experience in programming, software development, and data security, while emphasizing artificial intelligence, machine learning, and cybersecurity. Students gain applied knowledge in algorithm design, database systems, computer architecture, programming languages, operating systems, and advanced topics such as AI-driven security, data analytics, and ethical hacking.
Mission Statement
The mission of the Department of Computer Science is to provide excellent education and research opportunities to a diverse student body in order to prepare them for productive careers in industrial, governmental, and academic settings in the rapidly evolving fields of computing.
Degree Highlight Information
The program offers hands-on learning in algorithm design, software development, AI, machine learning, and cybersecurity. Students gain experience with ethical hacking, data analytics, and modern computing tools.
Student Organizations
- the Association of Computing Machinery (ACM)
- the Institute of Electrical and Electronics Engineers (IEEE)
- the National Society of Black Engineers (NSBE)
- the Society of Women Engineers (SWE)
Accreditation Information
The Computer Science (Bachelor of Science) program is accredited by the Computing Accreditation Commission of ABET, under the commission’s General Criteria and Program Criteria for Computer Science and Similarly Named Computing Programs.
Department Goals
The Program Educational Objectives for the computer science program are as follows:
- Advance in their profession as globally competitive leaders or pursue advanced study in computing sciences or related field of interest.
- Practice the profession ethically and responsibly throughout their careers, and contribute to the welfare of local, national, and global communities.
- Ideate, convey and share scientific concepts to enhance individual and organizational productivity.
- Engage in professional development throughout their careers to broaden their knowledge for significant contributions to technological innovation.
Program Listings
Bachelor of Science (B.S.) in Computer Science
The Bachelor of Science (B.S.) in Computer Science requires 120 credit hours and includes core coursework in programming, data structures, operating systems, databases, and cybersecurity. Students must earn at least a 'C' in all CSCI, MATH, and STAT courses. A concentration in Information Security is available by substituting six (6) CSCI elective hours with CSCI 451 and CSCI 496 and selecting CJUS 116.
Minors:
Minor in Computer Science (19 credits)
Minor in Cybersecurity (18–19 credits)
Extensive course offerings span from CSCI 100 (Intro to Computers) through CSCI 485 (Programming Languages), preparing students for graduate study, research, and competitive tech careers.
COMPUTER SCIENCE
Course Descriptions
INTRODUCTORY COURSES
CSCI 100 INTRODUCTION TO COMPUTERS - 3 semester hours
Brief history of computers. Computer architecture: Processing, Input/ Output and Communication Devices. Software: operating systems and applications. The Internet, networking and mobile computing. Introduction to basic application programs
CSCI 120 INTRODUCTION TO PROGRAMMING - 3 semester hours
An introduction to basic programming concepts using visual, graphical programming environments, and simple game design approach
CORE COURSES
CSCI 101 INTRODUCTION TO THE COMPUTER SCIENCE PROFESSION - 2 semester hours
This course introduces students to the range of professions and research fields within computer science, addresses misconceptions about the field, and describes the distinction between computer science and other computing fields such as information systems and computer engineering. In addition, this course familiarizes students with the requirements and expectations for computing career paths including the importance of obtaining relevant research or career experiences, preparing personal statements, obtaining letters of reference, preparing successful applications, and following a professional code of ethics. Students will be introduced to the curriculum by completing introductory projects aligned with each of the core computer science courses. When completing the course projects, students will be guided to develop essential skills that a computer science professional will need in order to keep pace with the rapid changes in this evolving field. Such skills as improving organization, prioritizing and scheduling work tasks, working effectively in teams, applying effective methodologies for learning and reading, and using resources effectively will be discussed in the context of continued professional development and self-growth.
Prerequisites(s): Major/Minor in Computer Science Co-requisites: CSCI 150, CSCI 151
CSCI 150 PROGRAMMING I - 3 semester hours
Introduces fundamental concepts of programming from an object-oriented perspective. Emphasizes problem solving, basic software design principles, and programming skills in a programming language that supports the object-oriented paradigm. Coverage includes simple data types, control structures, array and string data structures, basic testing and debugging. Students must be co-enrolled in CSCI 151.
Co-requisites: CSCI 101, CSCI 151
CSCI 151 PROGRAMMING I LAB - 1 semester hour
Hands-on programming exercises on topics covered in CSCI 150. Students must be co-enrolled in CSCI 150.
Co-requisites: CSCI 101, CSCI 151
CSCI 250 PROGRAMMING II - 3 semester hours
Continuation of CSCI 150. Builds on knowledge of fundamentals of programming to include more advanced object-oriented concepts, file I/O, basic sorting and searching, exception handling, and classic data structures such as arrays and lists. A programming-intensive course to develop software design and implementation skills. Students must be co-enrolled in CSCI 251.
Co-requisite: CSCI 251
Prerequisite: CSCI 150, CSCI 151
CSCI 251 PROGRAMMING II LAB - 1 semester hour
Hands-on programming exercises on topics covered in CSCI 250. Students must be co-enrolled in CSCI 250.
Co-requisite: CSCI 250
Prerequisites: CSCI 150; CSCI 151
CSCI 281 DISCRETE STRUCTURES - 3 semester hours
Recursion and Solutions of recurrence relations, Introduction to Graph Theory, Trees, Language and Grammars, Finite State Machines.
Prerequisite: MATH 280
CSCI 287 DATA STRUCTURES - 3 semester hours
This course emphasizes the implementation of programs that make use of lists, stacks, queues, trees, and hash tables in a variety of application settings. Several common algorithmic paradigms (such as recursion, searching, sorting, dynamic programming, divide and conquer) and their applications are also discussed.
Prerequisites: CSCI 250, CSCI 251
CSCI 296 WEB PROGRAMMING - 3 semester hours
A programming intensive course that introduces the essential knowledge for website development. The course begins with web server installation and the fundamental web technologies (HTML, CSS, XML). It focuses on front-end and back-end web development which exposes students to the techniques used in dynamic, interactive website building.
Prerequisites: CSCI 250, CSCI 251
CSCI 303 COMPUTER ORGANIZATION AND ARCHITECTURE - 3 semester hours
A treatment of computer organizations and architectures. Digital logic, data representation at logical and machine level, assembly level organization, memory systems, interfacing and communications as well as performance enhancements architecture elements. Discussion of different computer architecture and organizations. Programming in the assembly language.
Prerequisites: CSCI 250, CSCI 251
CSCI 356 DATABASE SYSTEMS - 3 semester hours
Database Design, Entity-Relationship and Relational Model, Relational Algebra, Query Language SQL, Storage and File Structures, Query Processing, System Architectures.
Prerequisites: CSCI 250, CSCI 251
CSCI 358 INTRODUCTION TO INFORMATION ASSURANCE - 3 semester hours
Introduction to the confidentiality, availability and integrity goals of information systems. Topics covered include introduction to principles of information security from the perspective of the World Wide Web, identification/authentication, computer/network security, dependability, access control, security evaluation and other issues.
Prerequisite: CSCI 250, CSCI 251
CSCI 392 ALGORITHMS AND ADVANCED DATA STRUCTURES - 3 semester hours
Design, analysis and implementation of advanced data structures and related algorithms including trees, graphs, B-trees, advanced sorting algorithms, hashing. It is also a treatment of object-oriented concepts and objected-oriented design. Basic software engineering skills and teaming.
Prerequisites: CSCI 287, CSCI 281
CSCI 400 COMPUTER SCIENCE SEMINAR - 2 semester hours
The focus of this course is to discuss practical skills required for research, broadly defined. The practical skills include but are not limited to skills on research process, skills on experimental methods, reading, writing, graphing, and presentation skills that are pertinent to computer scientists or software engineers. The course includes discussions of current research and developments in computer science that are facilitated by students, faculty members, or industry representatives. The current research and 192 developments are used as examples for the discussion of the practical skills. Students are strongly encouraged to complete this course in advance of beginning CSCI 493 SENIOR PROJECT I.
Prerequisites: ENGL 342 or GEEN 310, and junior status or permission of instructor
CSCI 445 COMPUTER COMMUNICATION NETWORKS - 3 semester hours
ISO model for communications. Protocols for physical, data link and network communications. Sockets. TCP/IP. Applications. Protocol correctness and efficiency. Error detection and recovery. Local-area and Wide-area networks.
Prerequisites: CSCI 250, CSCI 251
CSCI 470 PARALLEL AND DISTRIBUTED PROGRAMMING - 3 semester hours
The course covers the practical aspects of designing and developing software that runs on parallel and distributed systems. The topics covered in this course include client-server programming, multithreaded programming, message passing, shared memory, load-balancing, synchronization, and parallel GPU programming.
Prerequisite(s): CSCI 445
CSCI 485 PROGRAMMING LANGUAGES - 3 semester hours
Concepts for structuring data, computation, and whole programs. Object-oriented languages, functional languages, logic- and rule-based languages. Data Types, type checking, exception handling, concurrent processes, synchronization, modularity, encapsulation, interfaces, separate compilation, inheritance, polymorphism, dynamic binding, sub typing, overloading, beta-reduction, unification.
Prerequisite: CSCI 287
CSCI 487 SOFTWARE DESIGN AND DEVELOPMENT - 3 semester hours
A formal approach to current techniques in software design and development. Students work in teams in the organization, management, and development of a large software project.
Prerequisite: CSCI 287
CSCI 489 OPERATING SYSTEMS - 3 semester hours
This course introduces basic concepts in operating systems. This course will be focused on process management, implementation of mutual exclusion and synchronization, deadlock and starvation, memory management, scheduling, I/O, and file management. Students will also understand how operating systems have developed historically and future trends, as well as shell command line usage in modern operating systems.
Prerequisite: CSCI 287, CSCI 303
CSCI 493 SENIOR PROJECT I - 3 semester hours
This class is the first in the two-course senior project sequence. In this course, students will begin a substantial research- oriented individual project. The student will perform project identification and planning, software design, implementation, and testing using an agile development approach. At the completion of this course students must complete a working prototype of the project. Projects from this course must be completed during the following semester in CSCI 494.
Prerequisites: Senior status or permission of instructor
CSCI 494 SENIOR PROJECT II - 3 semester hours
This is the second course in the two-course senior project sequence. The students will complete a well-tested implementation of the project that they began in CSCI 493. Additional related work research, presentations, and reporting of the project will be performed. The class culminates in a demo day, where students present their projects to faculty, students, and external visitors.
Prerequisites: CSCI 493 193 ELECTIVE COURSES
CSCI 298 INTERNSHIP IN COMPUTER SCIENCE I - 1 semester hour
The internship allows students to obtain practical work experience related to computer science under closely the Computer Science faculty’s supervision. Students must complete a Memorandum of Agreement prior to commencing the internship. Course may be taken more than once for credit but no more than 3 times.
Prerequisite: Permission of Department Advisor
CSCI 312 INTRODUCTION TO ROBOTICS - 3 semester hours
A basic treatment of robotics systems in practice and research. It surveys selected topics in vision, kinematics and inverse kinematics, motion planning, trajectory generation, localization, sensors, programming and design, and artificial intelligence. Laboratory and projects are integral components of the course.
Prerequisite: CSCI 250 or equivalent Co-requisite: MATH 325 or permission of instructor
CSCI 361 EMBEDDED SYSTEMS: DESIGN AND APPLICATIONS - 3 semester hours
The fundamentals of embedded system hardware and software design will be explored. Issues such as embedded programming, firmware design, development tools, and host communication will be discussed. Microcontrollers will be studied through a series of projects using a microprocessor evaluation board. These projects will expose students to programming tasks to work with physical sensors (such as GPS, medical sensor, etc.) and write applications for smart phones, robots, unmanned vehicles and spacecraft.
Prerequisites: CSCI 250, CSCI 251
CSCI 389 HUMAN COMPUTER INTERACTION - 3 semester hours
Facts, theories, and issues about human sensation, perception, and interaction for developing information processing systems interacted with humans. Other related human factors such as workplace, environmental, ethical and legal issues will be discussed. Software applications with rich human interface are to be designed, implemented and tested by teams of students.
Prerequisites: CSCI 250, CSCI 251
CSCI 396 ADVANCED WEB PROGRAMMING - 3 semester hours
A continuation of Web Programming (CSCI 296). This course aims to provide the necessary foundations for building a complete web application, focusing on utilizing front-end and back-end frameworks. Front-end development will encompass familiarity with JavaScript frameworks such as AngularJS, creating single page applications using various features such as services, components and directives, deploying responsive applications, and using observables. Back-end development will cover server platforms such as NodeJS, transfer protocols, server-side concepts such as REST and CRUD, building and configuring web server and Databases. Moreover, the course presents issues relating to security and the importance of authentication.
Prerequisite(s): CSCI 296
CSCI 398 INTERNSHIP IN COMPUTER SCIENCE II - 3 semester hours
The internship allows students to obtain practical work experience related to computer science under the Computer Science faculty’s supervision. Students must complete a Memorandum of Agreement prior to commencing the internship. Course may be taken more than once for credit but no more than 2 times.
Prerequisite: Permission of Department Advisor
CSCI 402 INTRODUCTION TO ARTIFICIAL INTELLIGENCE - 3 semester hours
Basic problem-solving strategies, heuristic search, problem reduction AND/OR graphs, knowledge representation, expert systems, generating explanations, uncertainty reasoning, game playing, planning, 194 machine learning, computer vision, and programming systems such as Lisp or Prolog.
Prerequisite: CSCI 287
CSCI 445 COMPUTER COMMUNICATION NETWORKS - 3 semester hours
ISO model for communications. Protocols for physical, data link and network communications. Sockets. TCP/IP. Applications. Protocol correctness and efficiency. Error detection and recovery. Local-area and Wide-area networks.
Prerequisites: CSCI 250, CSCI 251
CSCI 450 COMPUTER FORENSICS - 3 semester hours
Introduction to principles of computer forensics methodology and emerging investigation techniques related to the identification, collection and preservation of digital crime scene evidence. Popular hardware and software tools recognized in the computer forensics field will be introduced.
Prerequisite: CSCI 358
CSCI 451 COMPUTER SECURITY - 3 semester hours
This course focuses on communication security in computer systems and networks. It is intended to provide students with a comprehensive introduction to the field of network security. The course covers critical network security services such as authentication and access control, integrity and confidentiality of data, routing, firewalls, virtual private networks, and web security. Where appropriate, we examine threats and vulnerabilities to specific architectures and protocols.
Prerequisite: CSCI 358
CSCI 452 INTRODUCTION TO CRYPTOGRAPHY - 3 semester hours
This course introduces cryptography and encryption concepts and how they are applied in real-world situations in order to implement strong and reliable security safeguards. This course will survey the various cryptography and encryption methods used in today’s information technology and communications environments as well as to review the considerations for selecting commercial products that support encryption technology.
Prerequisites: CSCI 358, CSCI 287
CSCI 453 DIGITAL IMAGE PROCESSING - 3 semester hours
Introduction to the fundamentals of digital image processing. It emphasizes general principles of image processing, rather than specific applications. It covers topics such as image acquisition and display, properties of the human visual system, color representations, sampling and quantization, point operations, linear image filtering and correlation, transforms and nonlinear filtering, contrast and color enhancement, digital image file formats etc.
Prerequisites: CSCI 287
CSCI 456 ADVANCED DATABASE APPLICATIONS - 3 semester hours
Applications of advanced database systems. Students will work on a series of projects using industry standard software.
Prerequisite: CSCI 356
CSCI 460 COMPUTABILITY AND FORMAL LANGUAGE THEORY - 3 semester hours
Formal models of computation such as finite state automata, pushdown automata and Turing machines. Formal definitions of languages, problems, and language classes including recursive, recursively enumerable, regular, and context free languages. Halting problems, undecidable problems, recursive functions, Chomsky hierarchy, Church’s thesis and the limits of computability. Proofs of program properties including correctness.
Prerequisite: CSCI 281
CSCI 462 COMPILER CONSTRUCTION - 3 semester hours
Exploration of the design of programming language translators. Includes parsing, run-time storage management, error recovery, and code generation and optimization.
Prerequisites: CSCI 485, CSCI 460
CSCI 480 COMPUTER GRAPHICS - 3 semester hours
Techniques of modeling objects for the purpose of computer rendering: boundary representations, constructive solids geometry, hierarchical scene descriptions: mathematical techniques for curve and surface representation. Basic elements of computer graphics rendering pipeline; architecture of modern graphics display devices; Geometrical transformations such as rotation, scaling, translation, and their matrix representations. Homogenous coordinates, projective and perspective transformations: Algorithms for clipping, hidden surface removal, rasterization, and anti-aliasing. Scan-line based and ray rendering algorithms. Lighting models for reflection, refraction, transparency.
Prerequisites: CSCI 287, MATH 360, MATH 325
CSCI 482 MATRIX COMPUTATIONS - 3 semester hours
This course is fundamental for students who will pursue graduate studies of applications of computers to science and engineering. Vector and matrix Norms. Numerical Linear Algebra, condition number, singular values. Householder and Givens transformations. Orthogonalization and least Squares methods. The eigenvalue problem. Basic iterative methods: Jacobi Gauss-Seidel and SOR.
Prerequisites: CSCI 250, CSCI 251, MATH 325
CSCI 488 ADVANCED SYSTEMS ARCHITECTURE - 3 semester hours
Fundamentals of uniprocessors and multiprocessors, scheduling, speculation, and multithreading.
Prerequisite: CSCI 489 or its equivalent
CSCI 492 ALGORITHMS AND COMPLEXITY - 3 semester hours
Recommended for students pursuing a graduate degree in Computer Science, definitions of algorithm and its complexity, proof of correctness of an algorithm, notion of time and space complexity, the complexity hierarchy, average and worst-case complexity, complexity of search and sorting algorithms, recurrence relations arising from basic algorithms, linear and non-linear recurrences, divide and conquer algorithms, dynamic programming.
Prerequisite: CSCI 287
CSCI 495 TOPICS IN COMPUTER SCIENCE - 3 semester hours
Topics vary depending upon needs of students and current interest of the instructor. Students interested in the specific content of this course as offered in a particular term should consult the instructor.
Prerequisite: Consent of instructor
CSCI 496 WEB DESIGN AND CYBER SECURITY - 3 semester hours
An introduction to Web design and site management. Topics include JavaScript, PHP, database, and web security such as identifying and avoiding web vulnerabilities, detecting and preventing phishing, hacking and etc.
Prerequisites: CSCI 358, CSCI 287
