The Bachelor of Science in Computer Science is built on a rigorous, highly concentrated, accredited curriculum of computer science courses, and includes concentrations in cybersecurity, data science and software engineering. The program provides a strong foundation in the discipline and includes advanced study in several important areas of computer science.
The degree requires a minimum of 120 credit hours and includes undergraduate requirements, general education requirements and computer science major requirements.
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
- Communicate effectively in a variety of professional contexts
- Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles
- 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
Special requirements
The B.S. 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.
Based on the results of the Computer Science Placement Test, students may be required to take CMSC 254, which then can count toward the degree requirements as an elective.
Degree requirements for Computer Science, Bachelor of Science (B.S.)
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 | Introduction to Object-oriented Programming | 4 |
CMSC 256 | Introduction to Data Structures | 4 |
CMSC 257 | Computer Systems | 4 |
CMSC 302 | Introduction to Discrete Structures | 3 |
CMSC 303 | Introduction to the Theory of Computation | 3 |
CMSC 304 | Programming Languages | 3 |
CMSC 311 | Computer Organization | 3 |
CMSC 312 | Introduction to Operating Systems | 3 |
CMSC 355 | Fundamentals of Software Engineering | 3 |
CMSC 401 | Algorithm Analysis with Advanced Data Structures | 3 |
CMSC 408 | Databases | 3 |
CMSC 440 | Data Communication and Networking | 3 |
CMSC 441 & CMSC 451 | Senior Design Studio I (Laboratory/Project Time) and Senior Project I | 3 |
CMSC 442 & CMSC 452 | Senior Design Studio II (Laboratory/Project Time) and Senior Project II | 3 |
• Major electives | ||
CMSC upper-level electives | 9 | |
Ancillary requirements | ||
ECON 205 | The Economics of Product Development and Markets (satisfies general education BOK for social/behavioral science and AOI for global perspectives) | 3 |
ENGR 395 | Professional Development | 1 |
MATH 200 | Calculus with Analytic Geometry I (satisfies general education quantitative foundations) | 4 |
MATH 201 | Calculus with Analytic Geometry II | 4 |
STAT 212 | Concepts of Statistics | 3 |
Humanities electives (from list below) | 6 | |
MATH course (300 to 400 level) | 3 | |
Natural science option: Select from BIOL, CHEM or PHYS course with a lab (3-5 credits satisfy general education BOK for natural science and AOI for scientific and logical reasoning) 1 | 4-5 | |
Open electives | ||
Select any course. | 9-10 | |
Total Hours | 120 |
The minimum number of credit hours required for this degree is 120.
CMSC upper-level electives
Course | Title | Hours |
---|---|---|
CMSC 410 | Introduction to Quantum Computing | 3 |
CMSC 411 | Computer Graphics | 3 |
CMSC 412 | Social Network Analysis and Cybersecurity Risks | 3 |
CMSC 413 | Introduction to Cybersecurity | 3 |
CMSC 414 | Computer and Network Security | 3 |
CMSC 415 | Introduction to Cryptography | 3 |
CMSC 420 | Software Project Management | 3 |
CMSC 425 | Introduction to Software Analysis and Testing | 3 |
CMSC 426 | Software as a Service | 3 |
CMSC 427 | Design and Implementation of User Interfaces | 3 |
CMSC 428 | Mobile Programming: iOS | 3 |
CMSC 435 | Introduction to Data Science | 3 |
CMSC 436 | Artificial Intelligence | 3 |
CMSC 437 | Introduction to Natural Language Processing | 3 |
CMSC 438 | Machine Learning | 3 |
CMSC 491 | Topics in Computer Science | 1-3 |
CMSC 492 | Independent Study | 2-4 |
CMSC 506 | Computer Networks and Communications | 3 |
Approved humanities electives
Course | Title | Hours |
---|---|---|
Select six credits from the following programs or subject areas: | 6 | |
African-American studies | ||
American studies | ||
Anthropology | ||
School of the Arts | ||
English | ||
Foreign language | ||
History | ||
Philosophy | ||
Psychology | ||
Religious studies | ||
Social work | ||
Sociology | ||
Urban studies |
Some courses in other programs (including most honors modules and other courses that focus on human behavior, communication and/or social interaction) may be counted toward this requirement with departmental approval.
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.
Freshman year | ||
---|---|---|
Fall semester | Hours | |
CMSC 235 | Computing and Data Ethics | 3 |
CMSC 254 | Introduction to Problem-solving | 4 |
UNIV 111 Play course video for Focused Inquiry I | Focused Inquiry I (satisfies general education UNIV foundations) | 3 |
General education course | 3 | |
Humanities elective (from list) | 3 | |
Term Hours: | 16 | |
Spring semester | ||
CMSC 255 | Introduction to Object-oriented Programming | 4 |
ECON 205 | The Economics of Product Development and Markets (satisfies general education BOK for social/behavioral science and AOI for global perspectives) | 3 |
MATH 200 | Calculus with Analytic Geometry I (satisfies general education quantitative foundations) | 4 |
UNIV 112 Play course video for Focused Inquiry II | Focused Inquiry II (satisfies general education UNIV foundations) | 3 |
Term Hours: | 14 | |
Sophomore year | ||
Fall semester | ||
CMSC 256 | Introduction to Data Structures | 4 |
CMSC 302 | Introduction to Discrete Structures | 3 |
MATH 201 | Calculus with Analytic Geometry II | 4 |
UNIV 200 | Advanced Focused Inquiry: Literacies, Research and Communication (satisfies general education UNIV foundations) | 3 |
Term Hours: | 14 | |
Spring semester | ||
CMSC 304 | Programming Languages | 3 |
CMSC 311 | Computer Organization | 3 |
ENGR 395 | Professional Development | 1 |
STAT 212 | Concepts of Statistics | 3 |
General education course | 3 | |
Humanities electives (from list) | 3 | |
Term Hours: | 16 | |
Junior year | ||
Fall semester | ||
CMSC 257 | Computer Systems | 4 |
CMSC 303 | Introduction to the Theory of Computation | 3 |
CMSC 355 | Fundamentals of Software Engineering | 3 |
Natural science option (satisfies general education BOK for natural science and AOI for scientific and logical reasoning) (select one): | 3-5 | |
CHEM 101 & CHEZ 101 | General Chemistry I and General Chemistry Laboratory I | 4 |
PHYS 207 | University Physics I | 5 |
BIOL 151 & BIOZ 151 | Introduction to Biological Sciences I and Introduction to Biological Science Laboratory I | 4 |
General education course | 3 | |
Term Hours: | 17-18 | |
Spring semester | ||
CMSC 401 | Algorithm Analysis with Advanced Data Structures | 3 |
CMSC 408 | Databases | 3 |
CMSC 440 | Data Communication and Networking | 3 |
MATH course (300 to 400 level) | 3 | |
General education course (select BOK for humanities/fine arts) | 3 | |
Term Hours: | 15 | |
Senior year | ||
Fall semester | ||
CMSC 441 | Senior Design Studio I (Laboratory/Project Time) | 2 |
CMSC 451 | Senior Project I | 1 |
CMSC upper-level electives | 6 | |
Open electives | 6 | |
Term Hours: | 15 | |
Spring semester | ||
CMSC 312 | Introduction to Operating Systems | 3 |
CMSC 442 | Senior Design Studio II (Laboratory/Project Time) | 2 |
CMSC 452 | Senior Project II | 1 |
CMSC upper-level elective | 3 | |
Open electives | 3-4 | |
Term Hours: | 13 | |
Total Hours: | 120-121 |
The minimum number of credit hours required for this degree is 120.
Accelerated B.S. and M.S.
The accelerated B.S. and M.S. program allows qualified students to earn both the B.S. 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 six hours of graduate courses toward both the B.S. and M.S. degrees. Thus, the two degrees may be earned with a minimum of 144 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 (no later than two semesters prior to graduating with a baccalaureate degree, that is, before the end of the spring semester of their junior year) an Accelerated Program Declaration Form to be approved by the graduate program director. Limited spaces may be available in the accelerated program. Academically qualified students may not receive approval if capacity has been reached.
Minimum qualifications for entrance to this accelerated program include completion of 30 undergraduate credit hours including six computer science courses CMSC 255, CMSC 256, CMSC 257, CMSC 302, CMSC 303 and CMSC 311; an overall GPA of 3.0; and a GPA of 3.4 in the six courses identified above. Successful applicants would enter the program in the fall semester of their senior year.
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 no later than a semester prior to graduation with the baccalaureate degree, that is, before the end of the fall semester of the senior year. 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. Three reference letters (including one from the computer science undergraduate program director and at least one more from a computer science faculty member) must accompany the application. Students who do not meet the minimum GPA requirements may submit GRE scores to receive further consideration.
Degree requirements
The Bachelor of Science 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. At most, six of these graduate credits will substitute for open 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, are:
Course | Title | Hours |
---|---|---|
Maximum for shared credits is 12. | ||
CMSC 501 | Advanced Algorithms | 3 |
CMSC 502 | Parallel Algorithms | 3 |
CMSC 510 | Regularization Methods for Machine Learning | 3 |
CMSC 516 | Advanced Natural Language Processing | 3 |
CMSC 525 | Introduction to Software Analysis, Testing and Verification | 3 |
CMSC 591 | Topics in Computer Science | 3 |
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 257 | Computer Systems | 4 |
CMSC 303 | Introduction to the Theory of Computation | 3 |
CMSC 355 | Fundamentals of Software Engineering | 3 |
Approved natural science course (BIOL, CHEM or PHYS course that counts toward the major in that science) | 4-5 | |
Select one of the following: | ||
Introduction to Biological Sciences I and Introduction to Biological Science Laboratory I | ||
General Chemistry I and General Chemistry Laboratory I | ||
University Physics I | ||
General education course | 3 | |
Contact undergraduate and graduate program directors | ||
Term Hours: | 17-18 | |
Spring semester | ||
CMSC 401 | Algorithm Analysis with Advanced Data Structures | 3 |
CMSC 408 | Databases | 3 |
CMSC 440 | Data Communication and Networking | 3 |
MATH upper-level (300 to 400) | 3 | |
General education course (select BOK for humanities/fine arts) | 3 | |
Secure approval from undergraduate program director | ||
Apply to the M.S. program | ||
Term Hours: | 15 | |
Senior year | ||
Fall semester | ||
CMSC 441 | Senior Design Studio I (Laboratory/Project Time) | 2 |
CMSC 451 | Senior Project I | 1 |
CMSC 501 | Advanced Algorithms | 3 |
CMSC 516 | Advanced Natural Language Processing | 3 |
Open electives | 6 | |
Term Hours: | 15 | |
Spring semester | ||
CMSC 312 | Introduction to Operating Systems | 3 |
CMSC 442 | Senior Design Studio II (Laboratory/Project Time) | 2 |
CMSC 452 | Senior Project II | 1 |
CMSC 525 | Introduction to Software Analysis, Testing and Verification (counts toward B.S. and M.S.) | 3 |
CMSC 5XX (Select fourth shared graduate course from list above.) | 3 | |
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 257 | Computer Systems | 4 |
CMSC 303 | Introduction to the Theory of Computation | 3 |
CMSC 355 | Fundamentals of Software Engineering | 3 |
Approved natural science course (BIOL, CHEM or PHYS course that counts toward the major in that science) | 4-5 | |
Select one of the following: | ||
Introduction to Biological Sciences I and Introduction to Biological Science Laboratory I | ||
General Chemistry I and General Chemistry Laboratory I | ||
University Physics I | ||
General education course | 3 | |
Contact undergraduate and graduate program directors | ||
Term Hours: | 17-18 | |
Spring semester | ||
CMSC 401 | Algorithm Analysis with Advanced Data Structures | 3 |
CMSC 408 | Databases | 3 |
CMSC 440 | Data Communication and Networking | 3 |
MATH upper-level (300 to 400) | 3 | |
General education course (select BOK for humanities/fine arts) | 3 | |
Term Hours: | 15 | |
Secure approval from the undergraduate program director | ||
Apply to the M.S. program | ||
Senior year | ||
Fall semester | ||
CMSC 441 | Senior Design Studio I (Laboratory/Project Time) | 2 |
CMSC 451 | Senior Project I | 1 |
CMSC 501 | Advanced Algorithms | 3 |
CMSC 516 | Advanced Natural Language Processing | 3 |
Open electives | 6 | |
Term Hours: | 15 | |
Spring semester | ||
CMSC 312 | Introduction to Operating Systems | 3 |
CMSC 442 | Senior Design Studio II (Laboratory/Project Time) | 2 |
CMSC 452 | Senior Project II | 1 |
CMSC 525 | Introduction to Software Analysis, Testing and Verification (counts toward B.S. and M.S.) | 3 |
CMSC 5XX (Select fourth shared graduate course from list above.) | 3 | |
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.