Courses
Undergraduate Computer Science Courses
1000 Level Courses
2000 Level Courses
3000 Level Courses
4000 Level Courses
Anticipated Undergraduate Course Offerings
(Last updated August 14, 2023)
The table below shows the courses the computer science department plans to offer through Spring 2025. This list should be considered tentative, and is subject to resource constraints and enrollment. See the Virginia Tech Time Table for scheduling details for specific semesters.
Course offering key:
- "N" are for non-majors; students intending to major or minor in CS should not take these courses
- "C" satisfy the CS capstone requirement
- "E" are taught by ECE faculty
- "M" are taught by Math faculty
- "S" are taught by Stat faculty
Summer 2023 Anticipated Offerings:
- Summer I: 1064, 1114, 2104, 2114, 2505, 3114, 3604, 3714, 4104, 4824
- Summer II: 1064, 1114, 2114, 2506, 3114, 3304, 3704, 3754
Fall 2023 |
Spring 2024 |
Fall 2024 |
Spring 2025 |
||
---|---|---|---|---|---|
CS 1014 | Intro to Computational Thinking | N | N | N | N |
CS 1044 | Intro to Programming in C | N | N | N | |
CS 1054 | Intro to Programming in Java | N | N | N | |
CS 1064 | Intro to Programming in Python | N | N | N | N |
CS 1114 | Intro to Software Design | x | x | x | x |
CS 1944 | Computer Science 1st Year Seminar | x | x | x | x |
CS 2064 | Intermediate Programming in Python | x | x | x | x |
CS 2104 | Intro to Problem Solving in CS | x | x | x | x |
CS 2114 | Software Design and Data Structures | x | x | x | x |
CS 2505 | Intro to Computer Organization I | x | x | x | x |
CS 2506 | Intro to Computer Organization II | x | x | x | x |
CS 3114 | Data Structures & Algorithms | x | x | x | x |
CS 3214 | Computer Systems | x | x | x | x |
CS 3304 | Comparative Languages | x | x | x | x |
CS 3314 | Prog Lang Theory & Practice | x | x | x | x |
CS 3414 | Numerical Methods | x | x | x | x |
CS 3604 | Professionalism in Computer Science | x | x | x | x |
CS 3634 | Computer Science Foundations for CMDA | M | M | M | M |
CS 3654 | Intro Data Analytics & Visualization | x |
x | x |
x |
CS 3704 | Intermediate Software Design & Engineering | x | x | x | x |
CS 3714 | Mobile Software Development | x | x | x | x |
CS 3724 | Intro to Human-Computer Interaction | x | x | x | x |
CS 3744 | GUI Programming and Graphics | x | x | x | x |
CS 3754 | Cloud Software Development | x | x | x | x |
CS 3824 | Intro to Computational Biology & Bioinformatics | x | x | ||
CS 4104 | Data and Algorithm Analysis | x | x | x | x |
CS 4114 | Formal Languages | x | x | x | x |
CS 4124 | Theory of Computation | x | x | ||
CS 4134 | Quantum Computation and Information Processing | x | x | ||
CS 4204 | Computer Graphics | x | x | ||
CS 4234 | Parallel Computation | x | x | ||
CS 4254 | Computer Network Architecture and Programming | x | x | ||
CS 4264 | Principles of Computer Security | x | x | x | x |
CS 4284 | Systems & Networking Capstone | C | C | C | |
CS 4304 | Compiler Design | x | |||
CS 4414 | Issues in Scientific Computing | M | C | M | C |
CS 4504 | Computer Organization | E | x | E | x |
CS 4604 | Intro to Data Base Management Systems | x | x | x | x |
CS 4624 | Multimedia/Hypertext | C | C | C | C |
CS 4634 | Design of Information | ||||
CS 4644 | Creative Computing Studio | x | x | ||
CS 4654 | Intermediate Data Analytics and Machine Learning | S | S | S | S |
CS 4664 | Data-Centric Computng Capstone | C | C | C | C |
CS 4704 | Software Engineering Capstone | C | C | C | C |
CS 4774 | HCI Design Experience | x | x | x | x |
CS 4784 | Human-Computer Interaction Capstone | C | C | C | C |
CS 4804 | Intro to Artificial Intelligence | x |
x | x | |
CS 4824 | Machine Learning | x | x | x |
x |
CS 4884 | Computational Biology & Bioinformatics Capstone | x | x | ||
CS 4944 | Senior Seminar | x | x | x | x |
Capstone Courses
Computer science majors must take at least one course from an approved list of capstone courses. The purpose of this requirement is to ensure that students have at least one course that synthesizes and integrates skills and knowledge acquired throughout the CS undergraduate curriculum, and which includes a significant design experience, where teamwork and written and oral communication are a key part of that design experience.
Characteristics of a Capstone Course
Although the various 4000 level courses designated as capstone courses focus on different problem domains and may be organized differently, all capstone courses are distinguished by the following characteristics:
- 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.
Approved CS Capstone Courses
- CS 4284: Systems & Networking Capstone
- CS 4274: Secure Computing Capstone
- CS 4414: Issues in Scientific Computing (when taught by CS faculty)
- CS 4624: Multimedia, Hypertext & Information Access
- CS 4634: Design of Information
- CS 4644: Creative Computing Studio
- CS 4664: Data-Centric Computing Capstone
- CS 4704: Software Engineering Capstone
- CS 4784: Human-Computer Interaction Capstone
- CS 4884: Computational Biology & Bioinformatics Capstone
In addition, individual CS 4994 Undergraduate Research projects where the supervising faculty member ensures the characteristics of a capstone course listed above are present (including working on a team, examining multiple design alternatives, providing significant written, oral and visual deliverables, evaluating or assessing merit of the solution, etc.) may be counted for capstone credit with prior approval from the Associate Department Head. For such CS 4994 projects, the supervising faculty member should include a request for capstone credit with an explanation of how capstone characteristics are achieved in the project proposal.
Technical Electives
Any Computer Science 3/4/5000-level course that is not otherwise used to fulfill a Computer Science requirement can be used as a technical elective.
Examples of non-CS courses that have been accepted as technical electives are below. Important: The inclusion of a course on this list does not guarantee access to the course for Computer Science majors. Some of these courses may be restricted by major, and instructor's permission would be needed to take the course. Others have prerequisites that must be met to be eligible to take the course.
Course Number | Title |
---|---|
ACIS 4514 | Database Management Systems (duplicates CS 4604, i.e. cannot receive credit for both) |
ACIS 4524 | Software Development Project |
ACIS/BIT 4554 | Networks & Telecommunications in Business |
ACIS/BIT 4564 | OO Systems Development for Business |
ACIS 4684 | Information Systems Security and Assurance |
AOE 4434 | Introduction to Computational Fluid Dynamics |
ART 3504 | Creative Code |
ART 3704 | Rotating topics having to do with computer animation, game design, etc |
ART 4504 | TS: Art Direction, Topics in Multimedia Studio |
BIT 4424 | Business Information Visualization & Analytics (also offered as BIT 4984 Special Study: Business Info Visual & Analytics) |
BIT 4434 | Computer Simulation in Business |
BIT 4444 | Decision Support Systems |
BIT 4494 | Network Simulation, Modeling & Analysis in Business |
BIT 4514 | Database Technology for E-Business (duplicates CS 4604) |
BIT 4544 | Advanced Methods in Business Analytics |
BIT 4574 | Advanced Networking for Business |
BIT 4614 | Information Security |
CMDA 3605 | Mathematical Modeling: Methods and Tools I |
CMDA 3606 | Mathematical Modeling: Methods and Tools II |
CMDA 4604 | Intermediate Topics in Math Modeling |
CMDA 4864 | Computational Modeling & Data Analytics Capstone |
COMM 4374 | New Communications Technology |
ECE 3504 | Digital Design I (old number used through Summer 2013) |
ECE 3534 | Microprocessor System Design |
ECE 3544 | Digital Design I |
ECE 3574 | Applied Software Engineering |
ECE 4510 | Genetic Algorithms |
ECE 4524 | Artificial Intelligence and Engineering Applications |
ECE 4550 | Real Time Systems |
ECE 4560 | Computer and Network Security Fundamentals |
ECE 4564 | Network Application Design |
ECE 4580 | Digital Image Processing |
ECE 4704 | Principles of Robotic Systems |
ECE 4984 | Special Study (depending on topic) |
ECON 4424 | Theory of Games and Economic Behavior |
ENGE 4984 | Special study (depending on topic) |
GEOG/GEOL 4084 | Modeling with GIS |
GEOG 4314 | Analysis in GIS |
GEOG 4324 | Algorithms in GIS |
MATH 4175 | Cryptography I |
MATH 4176 | Cryptography II |
MATH 4445 | Introduction to Numerical Analysis |
MATH 4454 | Applied Mathematical Modeling |
MATH 5454 | Graph Theory |
ME 4524 | Robotics and Automation |
ME 4984 | SS: Research Topics in Robotics (Fall 2017) |
MUS 3064 | Digital Sound Manipulation |
MUS 3065 | Computer Music & Multimedia I |
MUS 3066 | Computer Music & Multimedia II |
PHYS 4755 | Intro to Computational Physics |
PHYS 4984 | Special Study (depending on topic) |
Requests to have a non-CS course (not already on the list) approved as a technical elective are made by submitting a syllabus (not course description) by email to your academic advisor. For consideration, the course must have significant technical content relevant to the science or application of computing.
Note: This includes non-CS Independent Study (4974) and Undergraduate Research (4994) courses. Special Study (4984) courses from outside the Computer Science Department may be approved, but only if the request is submitted for review before the start of the course.
For any new course approved as a technical elective, students will have to submit a course substitution request to ensure the credit is applied appropriately. Please submit this form once you have completed the course.