This is the preliminary (or launch) version of the 2026-2027 VCU Bulletin. Courses that expose students to cutting-edge content and transformative learning may be added and notification of additional program approvals may be received prior to finalization. General education program content is also subject to change. The final edition and full PDF version will include these updates and will be available in August prior to the beginning of the fall semester.
The Bachelor of Arts in Computer Science is a multidisciplinary program that integrates a curriculum of computer science courses with other areas of study. The program provides a foundation in the computer science discipline and encourages students to integrate different perspectives in order to formulate new ideas and solutions for today’s computing challenges.
The degree requires a minimum of 120 credit hours. Students are required to attain a second major or a minor in another content area.
Student learning outcomes
Upon completing this program, students will know and know how to do the following:
- Analyze a complex computing problem and apply principles of computing and other relevant disciplines to identify solutions
- Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program's discipline
- Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline
- Apply computer science theory and software development fundamentals to produce computing-based solutions
- Respond to complex problems, issues and ideas by proposing new ideas or solutions that understand and integrate the perspectives of multiple disciplines and stakeholders
Special requirements
The B.A. in Computer Science requires a minimum of 120 credits. Students must receive a minimum grade of C in all computer science courses in order to graduate.
Degree requirements for Computer Science, Bachelor of Arts (B.A.)
| Course | Title | Hours |
|---|---|---|
| General education | ||
| Select 30 credits of general education courses in consultation with an adviser. | 30 | |
| Major requirements | ||
| • Major core requirements | ||
| CMSC 235 | Computing and Data Ethics | 3 |
| CMSC 254 | Introduction to Problem-solving | 4 |
| CMSC 255 | Object-oriented Programming | 4 |
| CMSC 256 | Introduction to Data Structures | 4 |
| CMSC 302 | Introduction to Discrete Structures | 3 |
| CMSC 311 | Computer Organization | 3 |
| CMSC 355 | Fundamentals of Software Engineering | 3 |
| CMSC 401 | Algorithm Analysis with Advanced Data Structures | 3 |
| • Restricted electives | ||
| Select four courses from the following: | 12-13 | |
| Introduction to the Theory of Computation | ||
| Programming Languages | ||
| Computer Systems | ||
| Compiler Construction | ||
| Operating Systems | ||
| Databases | ||
| Introduction to Quantum Computing | ||
| Computer Graphics | ||
| Social Network Analysis and Cybersecurity Risks | ||
| Introduction to Cybersecurity | ||
| Computer and Network Security | ||
| Introduction to Cryptography | ||
| Software Project Management | ||
| Introduction to Software Analysis and Testing | ||
| Software as a Service | ||
| Design and Implementation of User Interfaces | ||
| Mobile Programming: iOS | ||
| Introduction to Data Science | ||
| Artificial Intelligence | ||
| Introduction to Natural Language Processing | ||
| Machine Learning | ||
| Data Communication and Networking | ||
| Ancillary requirements | ||
| IDST 301 | Interdisciplinary Theory and Practice | 3 |
| MATH 211 | Mathematical Structures | 3 |
| MATH 310 | Linear Algebra | 3 |
| STAT 212 | Concepts of Statistics (satisfies general education quantitative foundations) | 3 |
| or STAT 210 | Basic Practice of Statistics | |
| UNIV 101 | Introduction to the University | 1 |
| or UNIV 103 | Education and Career Planning | |
| or UNIV 191 | Student Success Special Topics | |
| Required minor | ||
| Select a minor. | 18 | |
| Open electives | ||
| Select any course. | 19-23 | |
| Total Hours | 120 | |
The minimum number of credit hours required for this degree is 120.
What follows is a sample plan that meets the prescribed requirements within a four-year course of study at VCU. Please contact your adviser before beginning course work toward a degree.
Recommended course sequence/plan of study
| Freshman year | ||
|---|---|---|
| Fall semester | Hours | |
| CMSC 235 | Computing and Data Ethics | 3 |
| CMSC 254 | Introduction to Problem-solving | 4 |
| MATH 151 | Precalculus Mathematics | 4 |
| UNIV 101 | Introduction to the University or Education and Career Planning or Student Success Special Topics | 1 |
UNIV 111 Play course video for Introduction to Focused Inquiry: Investigation and Communication | Introduction to Focused Inquiry: Investigation and Communication (satisfies general education UNIV foundations) | 3 |
| Term Hours: | 15 | |
| Spring semester | ||
| CMSC 255 | Object-oriented Programming | 4 |
| MATH 211 | Mathematical Structures | 3 |
| General education courses | 9 | |
| Term Hours: | 16 | |
| Sophomore year | ||
| Fall semester | ||
| CMSC 256 | Introduction to Data Structures | 4 |
| CMSC 302 | Introduction to Discrete Structures | 3 |
| UNIV 200 | Advanced Focused Inquiry: Literacies, Research and Communication (satisfies general education UNIV foundations) | 3 |
| General education courses | 6 | |
| Term Hours: | 16 | |
| Spring semester | ||
| CMSC 311 | Computer Organization | 3 |
| STAT 212 or STAT 210 | Concepts of Statistics (satisfies general education quantitative foundations) or Basic Practice of Statistics | 3 |
| General education courses | 6 | |
| Minor course | 3 | |
| Term Hours: | 15 | |
| Junior year | ||
| Fall semester | ||
| CMSC 355 | Fundamentals of Software Engineering | 3 |
| MATH 310 | Linear Algebra | 3 |
| Minor course | 3 | |
| Open elective | 3 | |
| Restricted elective | 3 | |
| Term Hours: | 15 | |
| Spring semester | ||
| CMSC 401 | Algorithm Analysis with Advanced Data Structures | 3 |
| IDST 301 | Interdisciplinary Theory and Practice | 3 |
| Minor course | 3 | |
| Open elective | 3 | |
| Restricted elective | 3 | |
| Term Hours: | 15 | |
| Senior year | ||
| Fall semester | ||
| Minor courses | 6 | |
| Open electives | 6 | |
| Restricted elective | 3 | |
| Term Hours: | 15 | |
| Spring semester | ||
| Minor course | 3 | |
| Open electives | 7 | |
| Restricted elective | 3 | |
| Term Hours: | 13 | |
| Total Hours: | 120 | |
The minimum number of credit hours required for this degree is 120.
Accelerated B.A. and M.S.
The accelerated B.A. and M.S. program allows qualified students to earn both the B.A. and M.S. in Computer Science in a minimum of five years by completing approved graduate courses during the senior year of their undergraduate program. Students in the program may count up to 12 hours of graduate courses toward both the B.A. and M.S. degrees. Thus, the two degrees may be earned with a minimum of 138 credits rather than the 150 credits necessary if the two degrees are pursued separately.
The program is designed to develop skills and educate computer science students to be major contributors in the computing industry. The graduate program in computer science provides state-of-the-art education through the use of didactic courses to those students who wish to further their knowledge and careers within the computing industry. The program emphasizes continuing self-development and broadening of the knowledge of individuals currently engaged in science, technology and engineering-related fields. It also prepares persons who have completed undergraduate majors in these fields for entry into a career in the numerous areas that use computing technology. Both the theoretical and applied aspects of computer science are emphasized in this program.
Entrance to the accelerated program
Interested undergraduate students should consult with their adviser as early as possible to receive specific information about the accelerated program, determine academic eligibility and submit an Accelerated Program Declaration Form to be approved by the graduate program director.
Minimum qualifications for entrance to this accelerated program include completion of 30 undergraduate credit hours including six computer science courses and an overall GPA of 3.0 or above. Students should apply before their junior year or when they meet these criteria and should discuss with their undergraduate advisor/undergraduate director how to navigate their junior and senior years.
Once enrolled in the accelerated program, students must meet the standards of performance applicable to graduate students as described in the “Satisfactory academic progress” section of the Graduate Bulletin, including maintaining a 3.0 GPA. Guidance to students admitted to the accelerated program is provided by both the undergraduate computer science adviser and the faculty adviser to the graduate program.
Admission to the graduate program
Entrance to the accelerated program enables the student to take the approved shared courses that will apply to the undergraduate and graduate degrees. However, entry into an accelerated program via an approved Accelerated Program Declaration Form does not constitute application or admission into the graduate program. Admission to the graduate program requires a separate step that occurs through a formal application to the master’s program, which is submitted through Graduate Admissions the semester in which you will graduate with the baccalaureate degree. In order to continue pursuing the master’s degree after the baccalaureate degree is conferred, accelerated students must follow the admission to graduate study requirements outlined in the VCU Bulletin. Letters of recommendation and GRE scores are not needed. Students who do not meet the minimum GPA requirements may submit GRE scores to receive further consideration.
Degree requirements
The Bachelor of Arts in Computer Science degree will be awarded upon completion of a minimum of 120 credits and the satisfactory completion of all undergraduate degree requirements as stated in the Undergraduate Bulletin.
A maximum of 12 graduate credits may be taken prior to completion of the baccalaureate degree. These graduate credits will substitute for the restrictive CMSC elective credits for the undergraduate degree. These courses are shared credits with the graduate program, meaning that they will be applied to both undergraduate and graduate degree requirements.
The graduate computer science courses that may be taken as an undergraduate, once a student is admitted to the program, must be approved by the advisor or graduate program director and include 500-level courses from the CMSC subject area.
Recommended course sequence/plan of study for students pursuing a thesis master’s
What follows is the recommended plan of study for students interested in the accelerated program beginning in the fall of the junior year prior to admission to the accelerated program in the senior year.
| Course | Title | Hours |
|---|---|---|
| Junior year | ||
| Fall semester | ||
| CMSC 355 | Fundamentals of Software Engineering | 3 |
| MATH 310 | Linear Algebra | 3 |
| Minor courses | 6 | |
| Open elective | 3 | |
| Term Hours: | 15 | |
| Spring semester | ||
| CMSC 401 | Algorithm Analysis with Advanced Data Structures | 3 |
| IDST 301 | Interdisciplinary Theory and Practice | 3 |
| Minor courses | 6 | |
| Open elective | 3 | |
| Term Hours: | 15 | |
| Senior year | ||
| Fall semester | ||
| CMSC 5XX (Select courses from choices offered that semester) | 6 | |
| Minor courses | 6 | |
| Open electives | 3 | |
| Term Hours: | 15 | |
| Spring semester | ||
| CMSC 5XX (Select courses from choices offered that semester) | 6 | |
| Minor course | 3 | |
| Open electives | 3 | |
| Apply to the M.S. program | ||
| Choose the M.S. thesis adviser | ||
| Term Hours: | 12 | |
| Fifth year | ||
| Fall semester | ||
| CMSC 697 | Directed Research | 3 |
| M.S. foundational area courses (theory and systems) 1 | 6 | |
| Term Hours: | 9 | |
| Spring semester | ||
| CMSC 697 | Directed Research | 6 |
| M.S. foundational area course (applied) 1 | 3 | |
| Term Hours: | 9 | |
See the Graduate Bulletin for the list of theory, systems and applied foundational area courses.
Recommended course sequence/plan of study for students pursuing a non-thesis master’s
What follows is the recommended plan of study for students interested in the accelerated program beginning in the fall of the junior year prior to admission to the accelerated program in the senior year.
| Course | Title | Hours |
|---|---|---|
| Junior year | ||
| Fall semester | ||
| CMSC 355 | Fundamentals of Software Engineering | 3 |
| MATH 310 | Linear Algebra | 3 |
| Minor courses | 6 | |
| Open elective | 3 | |
| Term Hours: | 15 | |
| Spring semester | ||
| CMSC 401 | Algorithm Analysis with Advanced Data Structures | 3 |
| IDST 301 | Interdisciplinary Theory and Practice | 3 |
| Minor courses | 6 | |
| Open elective | 3 | |
| Term Hours: | 15 | |
| Senior year | ||
| Fall semester | ||
| CMSC 5XX (Select courses from choices offered that semester) | 6 | |
| Minor courses | 6 | |
| Open electives | 3 | |
| Term Hours: | 15 | |
| Spring semester | ||
| CMSC 5XX (Select courses from choices offered that semester) | 6 | |
| Minor course | 3 | |
| Open electives | 3 | |
| Apply to the M.S. program | ||
| Term Hours: | 12 | |
| Fifth year | ||
| Fall semester | ||
| M.S. foundational area courses (theory, systems and applied) 1 | 9 | |
| Term Hours: | 9 | |
| Spring semester | ||
| Graduate didactic course work | 9 | |
| Term Hours: | 9 | |
See the Graduate Bulletin for the list of theory, systems and applied foundational area courses.
Accelerated B.A. and M.S.
The accelerated B.A. and M.S. program allows qualified students to earn both the B.A. in Computer Science and M.S. in Data Science in a minimum of five years by completing approved graduate courses during the senior year of their undergraduate program. Students in the program may count up to 12 hours of graduate courses toward both the B.A. and M.S. degrees. Thus, the two degrees may be earned with a minimum of 138 credits rather than the 150 credits necessary if the two degrees are pursued separately.
The program is designed to develop skills and educate computer science students to be major contributors in the computing industry. The graduate program in data science educates students with the advanced knowledge, skills and tools necessary to analyze and interpret complex data and help solve real-world problems. Data science is an interdisciplinary field that combines expertise in statistics, computer science and domain-specific knowledge to extract valuable insights and knowledge from data. This degree program will prepare students to excel in using data to drive data-driven decision-making in various industries and domains. An M.S. in Data Science prepares students to work as data analysts, data scientists, machine learning engineers, data engineers, business analysts, research scientists, data consultants, etc. They may also specialize in specific domains like healthcare or biomedical data analysis and can find opportunities in government, startups, academia, and industry research.
Entrance to the accelerated program
Interested undergraduate students should consult with their adviser as early as possible to receive specific information about the accelerated program, determine academic eligibility and submit an Accelerated Program Declaration Form to be approved by the graduate program director.
Minimum qualifications for entrance to this accelerated program include completion of 30 undergraduate credit hours including six computer science courses and an overall GPA of 3.0 or above. Students should apply before their junior year or when they meet these criteria and should discuss with their undergraduate advisor/undergraduate director how to navigate their junior and senior years.
Once enrolled in the accelerated program, students must meet the standards of performance applicable to graduate students as described in the “Satisfactory academic progress” section of the Graduate Bulletin, including maintaining a 3.0 GPA. Guidance to students admitted to the accelerated program is provided by both the undergraduate computer science adviser and the faculty adviser to the graduate program.
Admission to the graduate program
Entrance to the accelerated program enables the student to take the approved shared courses that will apply to the undergraduate and graduate degrees. However, entry into an accelerated program via an approved Accelerated Program Declaration Form does not constitute application or admission into the graduate program. Admission to the graduate program requires a separate step that occurs through a formal application to the master’s program, which is submitted through Graduate Admissions the semester in which you will graduate with the baccalaureate degree. In order to continue pursuing the master’s degree after the baccalaureate degree is conferred, accelerated students must follow the admission to graduate study requirements outlined in the VCU Bulletin. Letters of recommendation and GRE scores are not needed. Students who do not meet the minimum GPA requirements may submit GRE scores to receive further consideration.
Degree requirements
The Bachelor of Arts in Computer Science degree will be awarded upon completion of a minimum of 120 credits and the satisfactory completion of all undergraduate degree requirements as stated in the Undergraduate Bulletin.
A maximum of 12 graduate credits may be taken prior to completion of the baccalaureate degree. These graduate credits will substitute for the restrictive CMSC elective credits for the undergraduate degree. These courses are shared credits with the graduate program, meaning that they will be applied to both undergraduate and graduate degree requirements.
The graduate computer science courses that may be taken as an undergraduate, once a student is admitted to the program, must be approved by the advisor or graduate program director and include 500-level courses from the CMSC and STAT subject area.
Recommended course sequence/plan of study for students
What follows is the recommended plan of study for students interested in the accelerated program beginning in the fall of the junior year prior to admission to the accelerated program in the senior year.
| Course | Title | Hours |
|---|---|---|
| Junior year | ||
| Fall semester | ||
| CMSC 355 | Fundamentals of Software Engineering | 3 |
| MATH 310 | Linear Algebra | 3 |
| Minor courses | 6 | |
| Open electives | 3 | |
| Term Hours: | 15 | |
| Spring semester | ||
| CMSC 401 | Algorithm Analysis with Advanced Data Structures | 3 |
| IDST 301 | Interdisciplinary Theory and Practice | 3 |
| MInor courses | 6 | |
| Open electives | 3 | |
| Term Hours: | 15 | |
| Senior year | ||
| Fall semester | ||
| CMSC 510 | Regularization Methods for Machine Learning | 3 |
| CMSC 535 | Introduction to Data Science | 3 |
| Minor courses | 6 | |
| Open electives | 3 | |
| Term Hours: | 15 | |
| Spring semester | ||
| CMSC 516 | Advanced Natural Language Processing | 3 |
| STAT 534 | Statistical Data Science I | 3 |
| Minor course | 3 | |
| Open electives | 3 | |
| Apply to the M.S. program | ||
| Term Hours: | 12 | |
| Fifth year | ||
| Fall semester | ||
| CMSC 681 | Data Science Capstone Project I | 3 |
| M.S. Computer Science and Statistics and Operations Research electives 1 | 6 | |
| Term Hours: | 9 | |
| Spring semester | ||
| CMSC 682 | Data Science Capstone Project II | 3 |
| M.S. Computer Science and Statistics and Operations Research electives | 6 | |
| Term Hours: | 9 | |
See the Graduate Bulletin for the list of computer science and statistics and operations research electives.
Play course video for Introduction to Focused Inquiry: Investigation and Communication