Course information

Course Information
The information provided below does not supercede the approved degree check sheets, roadmaps, catalog descriptions and/or learning outcomes for any course. This information is offered to better help Computer Science students understand their degree requirements, how courses are offered, what they will learn, what to expect, and other information that will greatly assist them in making informed decisions about their educational journey.
Please confer with your assigned academic advisors as needed and required to extrapolate the information in personal academic planning.
Course Offerings
The Computer Science Department offers undergraduate courses in four terms throughout the year: Fall, Spring, Winter and Summer. Offerings are subject to change and advanced notice will be provided when possible.
1000 Level
- CS 1014: Introduction to Computational Thinking
- CS 1054: Introduction to Programming In Java (only offered in Fall term)
- CS 1064: Introduction to Programming in Python
- CS 1114: Introduction to Software Design
- CS 1944: Computer Science First Year Seminar
3000 Level
- CS 3114: Data Structures and Algorithms
- CS 3214: Computer Systems
- CS 3304: Comparative Languages
- CS 3314: Programming Language Theory and Practice (only offered in Fall term)
- CS 3414: Numerical Methods
- CS 3604: Professionalism in Computing
- CS 3634: Computer Science Foundations for CMDA
- CS 3654: Introduction to Data Analytics & Visualization
- CS 3704: Intermediate Software Design
- CS 3714: Mobile Software Design
- CS 3724: Introduction to Human Computer Interaction
- CS 3744: Introduction to GUI Programming & Graphics
- CS 3754: Cloud Software Development
- CS 3824: Introduction to Computational Biology and Bioinformatics
- CS 3984: Special Studies in Computer Science
2000 Level
- CS 2064: Intermediate Programming in Python
- CS 2104: Introduction to Problem Solving in Computer Science
- CS 2114: Software Design and Data Structures
- CS 2144: Competitive Problem Solving
- CS 2164: Foundations of Security Environments
- CS 2304: Topics in Programming Systems
- CS 2505: Computer Organization I
- CS 2506: Computer Organization II
4000 Level
- CS 4101: Algorithm and Society
- CS 4104: Data and Algorithm Analysis
- CS 4124: Theory of Computation
- CS 4134: Quantum Computing
- CS 4144: Competitive Problem Solving (Fall Only Course)
- CS 4254: Network Architecture Programming
- CS 4264: Principles of Computer Security
- CS 4274: Secure Computing Capstone
- CS 4304: Compiler Design
- CS 4414: Issues in Scientific Computing
- CS 4604: Introduction to Database Management Systems
- CS 4624: Multimedia/Hypertext Capstone
- CS 4654: Intermediate Data Analytics and Machine Learning
- CS 4804: Artificial Intelligence
- CS 4824: Machine Learning
- CS 4944: Senior Seminar
All courses offered in winter terms are fully online with synchronous and asynchronous sections.
- CS 1064: Introduction to Programming in Python
- CS 1944: Computer Science First Year Seminar
- CS 3604: Professionalism in Computing
1000 Level
- CS 1014: Introduction to Computational Thinking
- CS 1044: Introduction to Programming in C (only offered in Spring term)
- CS 1064: Introduction to Programming in Python
- CS 1114: Introduction to Software Design
- CS 1944: Computer Science First Year Seminar
3000 Level
- CS 3114: Data Structures and Algorithms
- CS 3214: Computer Systems
- CS 3274: Software Reverse Engineering
- CS 3304: Comparative Languages
- CS 3414: Numerical Methods
- CS 3604: Professionalism in Computing
- CS 3634: Computer Science Foundations for CMDA
- CS 3654: Introduction to Data Analytics & Visualization
- CS 3704: Intermediate Software Design
- CS 3714: Mobile Software Design
- CS 3724: Introduction to Human Computer Interaction
- CS 3744: Introduction to GUI Programming & Graphics
- CS 3754: Cloud Software Development
2000 Level
- CS 2064: Intermediate Programming in Python
- CS 2104: Introduction to Problem Solving in Computer Science
- CS 2114: Software Design and Data Structures
- CS 2164: Foundations of Security Environments
- CS 2304: Topics in Programming Systems
- CS 2505: Computer Organization I
- CS 2506: Computer Organization II
4000 Level
- CS 4094: Computer Science Capstone
- CS 4101: Algorithm and Society
- CS 4104: Data and Algorithm Analysis
- CS 4114: Formal Languages
- CS 4134: Quantum Computing
- CS 4164: Future of Security
- CS 4204: Computer Graphics
- CS 4224: Linux Kernel Programming
- CS 4504: Computer Organization III
- CS 4604: Introduction to Database Management Systems
- CS 4624: Multimedia/Hypertext Capstone
- CS 4654: Intermediate Data Analytics and Machine Learning
- CS 4774: HCI Design Experience (for HCI Minors Only)
- CS 4804: Artificial Intelligence
- CS 4824: Machine Learning
- CS 4894: Special Topics in Computer Science: Introduction to Extended Reality
- CS 4944: Senior Seminar
Courses In-Depth
What is a capstone course?
A capstone course:
- Requires synthesis and integration of knowledge and skills acquired across the curriculum to solve a significant open-ended problem.
- Provides a significant design experience in developing a solution, including the examination of multiple design alternatives, with justification for the final path taken.
- Uses teamwork.
- Requires significant written, oral and visual deliverables, including a summative report and presentation.
- Includes multiple reflection activities, perhaps repeated periodically, e.g., individual reflective writing assignments, design or code reviews, group or individual peer reviews.
- Includes an evaluation or assessment activity to gauge the merit the solution.
Students choose from one of ten themed capstone course options with themes ranging from computer security to software engineering and many things in between. At least 3-4 semesters prior to enrolling in a capstone, students selected capstones that met their interest and planned their CS electives to coincide with any prerequisite coursework for their preferred capstone. When enrolling for the senior year courses, students would attempt to get into their preferred capstone with varying level of success.
What is not changing?
- There will always be enough seats for all graduating students to enroll in a capstone to meet their degree requirements.
- Students will still have to course request a capstone.
- Students enrolled in multiple capstones will be dropped from the extra course(s).
- Graduating seniors in their final semester will have priority in capstones should we ever need to utilize a manual enrollment model managed by the Department.
- Students have the option to move between capstones as long as there are open and available seats.
- Students in the HCI minor will continue to enroll in CS 4774- HCI Design and will need to meet all of the associated prerequisites.
- The capstones will be taught by engaging, excited faculty with projects that will engage students at different levels of technical prowess.
Stay informed. Each semester, students will receive detailed information about the capstones being offered and the specific types of projects. For Fall 2025:
CRN | DAYS/TIMES | INSTRUCTOR | COURSE INFORMATION |
83579 | Tuesday & Thursday, 2:00pm-3:15pm | Dr. Pinar Yanardag | INFO |
83582 | Monday & Wednesday, 4:00pm-5:15pm | Dr. Wu-chun Feng | INFO |
83585 | Tuesday & Thursday, 11:15am-12:05pm* | Dr. Sally Hamouda | INFO |
83586 | Monday & Wednesday, 4:00pm-5:15pm | Rich Charles | INFO |
83589 | Monday & Wednesday, 2:30pm-3:45pm | Scott McCrickard | INFO |
83587 | Tuesday & Thursday, 5:00pm-6:15pm | Antuan Biyalik | INFO |
- Meet with your CS advisor regularly.
- During course request for the spring semester of your senior year, ensure that you select a CS capstone section.
- Once available, check your course request results. Do you have a section of CS capstone on your schedule?
- If not, please review the course options and make selections during the open add period.
- If you are a CS/DCC.SC major with an HCI minor, you need to be enrolled in a one of the CS capstone section specific to HCI. Only enroll in CS 4774 if you are an HCI minor with a major is outside of the CS Department.
- Again, breathe deeply and try not to spread misinformation.
- Refer back to this website for the latest information and meet with your advisor as needed.
The capstone is changing because we listen to our students. We recognize that while immensely useful, the original model could benefit from refining in its offerings, projects, delivery, and enrollment. These changes will enhance what and how you learn.
Although students will no longer need to align their CS elective course options toward a specific capstone, students are still highly encouraged to think about the areas of CS they want to explore and select electives to help them build that body of knowledge.
As of course request and add/drop for the Fall 2025 semester, students will notice the following changes:
- All capstone courses for CS/DCC/SC majors will be listed as CS 4624-Multimedia/Hyptertext. This is a placeholder number to ensure that course request and add/drop are not interrupted. This placeholder course number also ensures that your DARS does not go cattywampus while some backend logistics are being sorted.
- Spring 2026 and forward, CS 4094: Computer Science capstone will be the standard course number and will meet the capstone requirement for all CS/DCC/SC majors.
- For CS/DCC/SC majors, as of Fall 2025 to enroll in a CS Capstone will require passing grades in CS 2506 and CS 3114.
- Students are not restricted to capstones based on the CS electives they have taken and have the option to move between capstones without fear of not meeting a prerequisite specific to a CS elective.
- As all capstone prerequisites are the same, there should be no need for force/add requests. Force/add requests based on capacity will not be accepted nor approved and faculty cannot grant permission to override class capacity.
- Flexibility in course scheduling both in terms of selecting CS electives but also in choosing a capstone.
- Ability to explore a new topic/focus of CS.
- Tangible and practical experience through hands-on activities.
- Completion of a professional artifact, such as an app, model, or research paper, to utilize when applying for career opportunities.
- Opportunities to identify problems and solutions that matter to you and work on them under faculty supervision, guidance and support.
- The project becomes the most important part, not the elective taken and/or nuanced skill set.
- Each capstone will have similar grading standards and no course will be "easier" than the other in terms of how hard or easy the assignment deliverables are graded.
- Provide transparent, timely information as it becomes available.
- Update this website regularly with any changes and new information.
- Ensure that DARS are correctly processing and updating capstone changes so that your path to grauation is not interrupted.
- Listen to and consider your feedback.
Please know that we do not make these changes lightly and have thought them through in detail. We encourage you to read back through the details above carefully and reach out to your CS advisor as needed.
Depending upon the major or minor, students will take 1-4 courses of CS electives. These courses can be at the 3000, 4000, or 5000 course level. You can find more specific course requirements on your check sheet/roadmap for your major. There are a LOT of CS elective courses from which students can choose, and students can double count these electives to complete prerequisites towards other courses (like the capstone requirement) and/or a student in participating in one of CS' accelerated master's degree programs.
Courses taken for specific degree requirements cannot also be used as an elective (for example, CS 3654 may be an elective for students in the CS major, but is a degree requirement for students in the Data Centric Computing major). CS Courses at the 3000 and 4000 level are offered consistently throughout the academic school year. Courses at the 5000 course level are offered much more sporadically. Students will want to confirm their elective options with their CS advisor. Listed below are a broad list of Computer Science electives at the 3000 and 4000 course levels that are consistently offered. To see more information about the courses, review the course descriptions in the Undergraduate Catalog.
3000 level
- CS3414: Numerical Methods
- CS3634: Computer Science Foundations for CMDA
- CS3654: Introductory Data Analytics and Visualization
- CS3704: Intermediate Software Design and Engineering
- CS3714: Mobile Software Development
- CS3724: Introduction to Human-Computer Interaction
- CS3744: Introduction to GUI Programming and Graphics
- CS3754: Cloud Software Development
- CS3824: Introduction to Computational Biology and Bioinformatics
4000 level
- CS4204: Computer Graphics
- CS4214: Simulation and Modeling
- CS4234: Parallel Computation
- CS4254: Computer Network Architecture and Programming
- CS4264: Principles of Computer Security
- CS4304: Compiler Design and Implementation
- CS4414: Issues in Scientific Computing
- CS4504: Computer Organization
- CS4570: Wireless Networks and Mobile Systems
- CS4604: Introduction to Data Base Management Systems
- CS4644: Creative Computing Studio
- CS4654: Intermediate Data Analytics and Machine Learning
- CS4804: Introduction to Artificial Intelligence
- CS4824: Machine Learning
- CS 4984: Special Studies in Computer Science (vary by semester and topic)
- CS4974: Independent Study
- CS4994: Undergraduate Research
Computer Science courses are taken by students across Virginia Tech to fulfill core degree requirements, as electives, and to complete minors. Not all courses, however, can be taken by all students and those would be considered major or minor restricted courses. Major and minor restricted courses are courses that can only be taken by students when they have officially declared the program to which the program is restricted. There is no waiving of the major or minor requirement to enroll. Students will still have to meet all prerequisites in addition to being officially declared in the program to enroll in the course.
The following courses are restricted to students in the Computer Science, Data Centric Computing and Secure Computing majors:
- CS 1944: First Year Seminar in Computer Science
- CS 2104: Introduction to Problem Solving in Computer Science
- CS 2164: Foundations of Security Environments
- CS 2506: Introduction to Computer Organization II
- CS 3304: Comparative Languages
- CS 3314: Programming Languages Theory and Practice
- CS 3604: Professionalism in Computer Science
- CS 4944: Senior Seminar in Computer Science
- All courses with the Capstone designation
The following courses are restricted to students in the Computer Science, Data Centric Computing and Secure Computing majors and the minors in Computer Science and Human Computer Interaction:
- CS 2505: Introduction to Computer Organization I
- CS 3114: Data Structures anf Algorithms
- CS 3214: Computer Systems
- All 3000 level electives
- All 4000 level electives
The following courses cannot be taken by students in the Computer Science, Data Centric Computing and Secure Computing majors:
- CS 1014: Intro to Computational Thinking
- CS 1054: Introduction to Programming in Java
- CS 1064: Introduction to Programming in Python
- CS 2064: Intermediate Programming in Python
- CS 3634: Computer Science Foundations for Computational Modeling & Data Analytics
Operational course descriptions provide students with more information about what they will learn in the class, how the class is organized, what programming languages are emphasized (if any). As courses evolve, the operational course descriptions are subject to change.
This is a work in-progress and will continue to be updated regularly.
Taking Courses Elsewhere/Earning Course Credits for Computer Science Degree
Taking courses outside of Virginia Tech can include:
- enrolling as a non-degree seeking student at a two-year institution in the Virginia Community College System (e.g. NOVA, New River, Tidewater, etc.)
- enrolling as a non-degree seeking student at a four-year institution (e.g. UVA, GW, JMU, GMU, etc.)
- enrolling as an international exchange student at an accredited institution outside of the US through an Office of Global Education and/or Global Engineering program
Transferring from VCCS institution:
Any currently enrolled Virginia Tech student planning to transfer courses from a Virginia Community College should follow the below steps.
Step 1: Review the VCCS Guide to determine course equivalents
Step 2: Use the VCCS Course Search to see which VCCS sites teach the course equivalents
Step 3: Sign-up and complete the course(s)
Step 4: Submit official transcript with final grade(s) to Virginia Tech-- a grade of a "C" or better is required in any course to receive transfer credit. Parchment is recommended for transcript submission, if available.
Transferring from non-VCCS institution:
Any currently enrolled Virginia Tech student planning to transfer courses from a non-Virginia Community College (VCCS) will need to seek pre-authorization for their planned courses.
Step 1: Transfer Equivalency Database to understand the transferability of any courses planned to be taken at another institution.
Step 2.1: Meet with current CS advisor to begin planning.
Step 2.2 (if needed): Meet with Global Education and/or Global Engineering to begin the international exhange student process.
Step 3.1: Sign-up and complete the course(s)
Step 3.2 (if needed), Working with the Global Education and/or Global Engineering team(s), enroll in courses at the international institution.
Step 4: Submit official transcript with final grade(s) to Virginia Tech-- a grade of a "C" or better is required in any course to receive transfer credit. Parchment is recommended for transcript submission, if available.
Starting Summer 2025, VCCS’s CSC 215 Computer Systems will no longer be a direct equivalent to VT’s CS 2505. In order to receive credit for CS 2505, students will need to take CSC 215 AND CSC 205 Computer Organization. Moving forward, current Virginia Tech students who take these courses at a VCCS institution beginning Summer 2025 or later, will receive the following:
- only CSC 205 = CS 2XXX (3)
- only CS 215 = CS 2XXX (3)
- both CS 205 + CS 215 = CS 2505 (3) + CS 2XXX (3)
Beginning Fall 2025, there are changes to course substitutions to meet the prerequisites for CS 2114: Software Design and Data Structures and/or MATH 2534- Discrete Math:
The following courses will be accepted as meeting the course prerequisite:
- CS 1064: Introduction to Programming in Python + CS 2064: Intermediate Programming in Python (grade of C or higher)
- CS 1114: Introduction to Software Design (grade of C or higher)
The following courses taken at Virginia Tech and/or transferred into Virginia Tech will not be accepted as meeting the CS 2114: Software Design and Data Structures and/or MATH 2534: Discrete Math course prerequisite.
- CS 1054: Introduction to Programming in Java
- ECE 2514: Introduction to Computational Engineering
How Will This Impact Registration?
Current Students: If your major is already officially declared in one of our degree programs in Computer Science, Data Centric Computing, Secure Computing, or our Minor in Computer Science, this change will not impact you. If a passing grade was achieved in CS 1054 or ECE 2514 before your major was officially declared (or your minor was added), your previous coursework will be honored. To be enrolled, you will have to request a force/add to be added to CS 2114 and/or MATH 2534, if needed.
Future Students- Internal Changes of Major Already at Virginia Tech: If you intend to major in one of our degree programs in Computer Science, Data Centric Computing, or Secure Computing, or our Minor in Computer Science, and your major is officially changed as of Summer 2025 or later, you will be required to take one of other approved prerequisite courses or take the Credit by Exam (CBE) in CS 1114 and/or CS 2114).
Future Students- External Transfers to Virginia Tech: Students transferring from certain VCCS institutions may take an updated version of CS 1054 as part of their coursework prior to transferring to Virginia Tech. When transferring that credit to Virginia Tech, the new version of the course should equate as commensurate to CS 1114 and meet the prerequisite for CS 2114 and/or MATH 2534.
Next Steps: Current Virginia Tech Students planning to take any of these courses outside of Virginia Tech are encouraged to confirm approved substitutions and approved credits before enrolling to ensure that you receive the credits and meet prerequisites as intended.
The Computer Science Department currently offers two credit by exam options for students to earn course credit: CS 1114: Introduction to Software Design and CS 2114: Software Design and Data Structures. The exam is only offered during specific times of the semester, generally before enrollment opens/reopens for the subsequent semester.
Credit by exam to earn course credit for CS 1064: Introduction to Programming in Python will also be offered beginning in Fall 2025.
Credit By Exam Details
- University rules prohibit more than one attempt of Credit-By-Exam for each course, and a student’s total credit by exam cannot exceed 12 credit hours. Violation of this policy will be reported to the honor system.
- Students cannot attempt or receive credit by exam if they have previously audited or enrolled in the course at Virginia Tech and/or previously attempted the credit by exam.
- All exams offered by CS are taken online via Canvas and self-paced.
- Exam will be graded by the instructor, Dr. Stephen Edwards (passing requires 70% or the class average). You should receive your results within two weeks of taking the exam.
- Contact Dr. S. Edwards if you have not received your results within 3 weeks of taking the exam.
Registration Fees
The exam fee is $10 per credit hour. The fee will be charged to the student’s account; students will need to pay the fee through the Bursar’s office and upload the receipt in Canvas to confirm payment before they can begin the exam.
Computer Science Credit By Exam
CBE is offered for the following courses: CS 1114 and CS 2114. To access the exam information, please self-enroll using the links below. If a student intends to take both the 1114 and 2114 exams, they will need to self-enroll in both Canvas sites. All the steps to register are included in Canvas.
For more information: contact Dr. S. Edwards with any questions and/or concerns about the exam(s).
Undergraduate Academic Catalog
The Undergraduate Course Catalog is the official record of all approved degrees, majors, minors, courses, and course descriptions for the Bachelor of Science Degree in Computer Science. It is also includes a wealth of other information about university policies, and procedures.
Students that began at Virginia Tech before Fall 2024 should utilize their checksheet for the most accurate degree requirement information. A new catalog is created and approved for each academic year.
Undergraduate Catalog- Computer Science Section