|
Undergraduate Record 2020-2021 [ARCHIVED RECORD]
Computer Science (B.S.)
|
|
Return to: School of Engineering and Applied Science: Departments/Programs
Program Objectives Graduates of the Bachelor of Science in Computer Science program:
- Have the knowledge and skills that allow them to make tangible contributions in their profession.
- Have the knowledge and skills that allow them meet new technical challenges.
- Are able to contribute effectively to society.
- Are able to work effectively as team leaders and members.
- Have the ability to be innovators in the design, analysis and application of computer systems.
Grading Policy Majors and minors are required to maintain a C average or better in their CS courses.
|
Computer Science Curriculum (126 credits)
First Semester Credits: 15
Second Semester Credits: 17
- Math & Science Elective (See footnote 2 below) Credits: 3
- HSS Elective Credits: 3
or
Third Semester Credits: 16
APMA Elective (See footnote 3 below) Credits: 3
HSS Elective (See footnote 1 below) Credits: 3
Fourth Semester Credits: 15
STS 2xxx/3xxx Credits: 3
Unrestricted Elective (See footnote 4 below) Credits: 3
Fifth Semester Credits: 18
APMA Elective (See footnote 3 below) Credits: 3
HSS Elective (See footnote 1 below) Credits: 3
Unrestricted Elective (See footnote 4 below) Credits: 3
Sixth Semester Credits: 15
APMA Elective (See footnote 3 below) Credits: 3
Unrestricted Elective (See footnote 4 below) Credits: 3
HSS Elective (See footnote 1 below) Credits: 3
CS 3xxx/4xxx Elective Credits: 3
Seventh Semester Credits: 15
CS 3xxx/4xxx Elective Credits:3
CS 4970 (see Footnote 5 below) or CS 3XXX/4XXX Elective Credits: 3
Unrestricted Elective (See footnote 4 below) Credits: 3
Footnotes
(1) Chosen from the approved list available in A122 Thornton Hall.
(2) Chosen from: BIOL 2100 - Introduction to Biology w/ Laboratory: Cell Biology & Genetics; BIOL 2200 - Introduction to Biology w/ Laboratory: Organismal & Evolutionary Biology; CHEM 1420 - Introductory College Chemistry II; PHYS 2620 - Modern Physics; MSE 2090 - Introduction to Materials Science; any APMA course 2000 or higher, not already required by a student’s major, and does not duplicate material from another APMA course.
(3) Chosen from APMA 2130, 3080, 3100, 3120 or 3150 (but cannot take both 3120 and 3150). APMA 3100 is required to take during one of the semesters.
(4) Unrestricted electives may be chosen from any graded course in the University except mathematics courses below MATH 1310 and courses that substantially duplicate any others offered for the degree, including PHYS 2010, 2020; CS 1100, 1200; or any introductory programming course. Students in doubt as to what is acceptable to satisfy a degree requirement should get the approval of their advisor and the dean’s office, located in A122 Thornton Hall. APMA 1090 counts as a three-credit unrestricted elective.
(5) The CS capstone experience 4970 and 4971 requires 4th year standing.
Minor
Any student who is able to complete all of the requirements for a minor in Computer Science before graduation will be awarded the minor if they submit the minor request form at the beginning of their graduation semester.
Due to the demand for computing courses, the department can only accept a limited number of students to declare a minor in Computer Science. The CS department continues to work with the university to obtain resources that will allow more students to declare the Computer Science minor.
Students wishing to declare the minor will be considered after completing CS 2150. The normal deadline is March 1. Applicants who have already completed CS 2150 will be notified if they have been accepted as a CS minor by April 1. Applicants who are currently enrolled in CS 2150 will be notified if they have been accepted as a CS minor by June 1.
More information regarding the CS Minor can be found at
https://engineering.virginia.edu/departments/computer-science/academics/computer-science-undergraduate-programs/cs-minor
or by contacting cs-student-support@virginia.edu.
Computer Engineering students cannot get a Computer Science minor because their degree combines Computer Science and Electrical Engineering so they will automatically have the equivalent of the minor in CS.
Required courses (6 courses, 18 credits ):
Courses
- CS 1010 - Introduction to Information Technology Credits: 3
- CS 1110 - Introduction to Programming Credits: 3
- CS 1111 - Introduction to Programming Credits: 3
- CS 1112 - Introduction to Programming Credits: 3
- CS 1113 - Introduction to Programming Credits: 3
- CS 1120 - Introduction to Computing: Explorations in Language, Logic, and Machines Credits: 3
- CS 1501 - Special Topics in Computer Science Credits: 1
- CS 2102 - Discrete Mathematics Credits: 3
- CS 2110 - Software Development Methods Credits: 3
A second course in computing with an emphasis on modern software development and principles central to computer science. Topics include software requirements, testing, object-oriented design, abstraction, encapsulation, recursion, and time-complexity. Prerequisite: CS 1110, 1111, 1112, or 1120 with a grade of C- or higher. Credits / Units: 3 - CS 2150 - Program and Data Representation Credits: 3
- CS 2501 - Special Topics in Computer Science Credits:
- CS 2993 - Independent Study Credits:
- CS 2330 - Digital Logic Design Credits: 3
- CS 2910 - CS Education Practicum Credits: 1
- CS 3102 - Theory of Computation Credits: 3
- CS 3205 - HCI in Software Development Credits: 3
- CS 3240 - Advanced Software Development Techniques Credits: 3
- CS 3250 - Software Testing Credits: 3
An introduction to testing for assuring software quality. Covers concepts and techniques for testing software, including testing at the unit, module, subsystem, and system levels; automatic and manual techniques for generating and validating test data; the testing process; static vs. dynamic analysis; functional testing; inspections; testing in specific application domains; and reliability assessment. Prerequisite: CS 2150 of C- or higher. Credits / Units: 3 - CS 3330 - Computer Architecture Credits: 3
- CS 3710 - Introduction to Cybersecurity Credits: 3
Introduces students to the fields of cybersecurity. Both non-technical issues, such as ethics and policy, and technical issues are covered. Students see and experiment with a wide range of areas within cybersecurity, including: binary exploitation, encryption, digital forensics, networks, and modern threats. Prerequisites: CS 2110 or equivalent; have taken or concurrently enrolled in CS 2150. Credits / Units: 3 - CS 4102 - Algorithms Credits: 3
Introduces the analysis of algorithms and the effects of data structures on them. Algorithms selected from areas such as sorting, searching, shortest paths, greedy algorithms, backtracking, divide-and-conquer, and dynamic programming. Data structures include heaps and search, splay, and spanning trees. Analysis techniques include asymptotic worst case, expected time, amortized analysis, and reductions between problems. Prerequisite: CS 2102 and 2150 with grades of C- or higher, and APMA 1090 or MATH 1210 or MATH 1310. Credits / Units: 3 - CS 4240 - Principles of Software Design Credits: 3
- CS 4260 - Internet Scale Applications Credits: 3
Introduces students to the fields of cybersecurity. Both non-technical issues, such as ethics and policy, and technical issues are covered. Students see and experiment with a wide range of areas within cybersecurity, including: binary exploitation, encryption, digital forensics, networks, and modern threats. Prerequisites: CS 2110 or equivalent; have taken or concurrently enrolled in CS 2150. Credits / Units: 3 - CS 4330 - Advanced Computer Architecture Credits: 3
Provides an overview of modern microprocessor design. The topics covered in the course will include the design of super-scalar processors and their memory systems, and the fundamentals of multi-core processor design. Prerequisite: CS 2150 and CS 3330 with grades of C- or higher Credits / Units: 3 - CS 4414 - Operating Systems Credits: 3
- CS 4434 - Dependable Computing Systems Credits: 3
- CS 4444 - Introduction to Parallel Computing Credits: 3
- CS 4457 - Computer Networks Credits: 3
- CS 4458 - Internet Engineering Credits: 3
- CS 4501 - Special Topics in Computer Science Credits:
- CS 4610 - Programming Languages Credits: 3
- CS 4620 - Compilers Credits: 3
- CS 4630 - Defense Against the Dark Arts Credits: 3
Viruses, worms, and other malicious software are an ever-increasing threat to computer systems. There is an escalating battle between computer security specialists and the designers of malicious software. This course provides an essential understanding of the techniques used by both sides of the computer security battle. Prerequisite CS 3710. Credits / Units: 3 - CS 4640 - Programming Languages for Web Applications Credits: 3
- CS 4710 - Artificial Intelligence Credits: 3
- CS 4720 - Mobile Application Development Credits: 3
- CS 4730 - Computer Game Design Credits: 3
- CS 4740 - Cloud Computing Credits: 3
- CS 4750 - Database Systems Credits: 3
- CS 4753 - Electronic Commerce Technologies Credits: 3
- CS 4760 - Network Security Credits: 3
This course covers the principles of secure network communications and the application of network security. Topics include: attack types, attack surfaces, attack phases, network security devices.(a)symmetric key encryption, cryptographic hash function, authentication/identification techniques, key distribution, and data integrity assurance. Also, currently used security mechanisms and protocols will be discussed. Prerequisite: CS 3710. Credits / Units: 3 - CS 4774 - Machine Learning Credits: 3
An introduction to machine learning: the study of algorithms that improve their performance through experience. Covers both machine learning theory and algorithms. Introduces algorithms, theory, and applications related to both supervised and unsupervised learning, including regression, classification, and optimization and major algorithm families for each. Prerequisites: CS 2150; and either Math 3350 or APMA 3080; and one of APMA 3100, APMA 3110, MATH 3100, or equivalent. Credits / Units: 3 - CS 4810 - Introduction to Computer Graphics Credits: 3
- CS 4970 - Capstone Practicum I Credits: 3
This course is one option in the CS fourth-year thesis track. Under the practicum track, students will take two 3-credit courses, CS 4970 and CS 4971. These courses would form a year-long group-based and project-based practicum class. There would be an actual customer, which could be either internal (the course instructor, other CS professors, etc.) or external (local companies, local non-profits, etc.). Prerequisite: CS BS Major Status. CS 2150 with a grade of C- or higher. Credits / Units: 3 - CS 4971 - Capstone Practicum II Credits: 3
This course is one option in the CS fourth-year thesis track and is the continuation from CS 4970. Under the practicum track, students will take two 3-credit courses, CS 4970 and CS 4971. These courses would form a year-long group-based and project-based practicum class. There would be an actual customer, which could be either internal (the course instructor, other CS professors, etc.) or external (local companies, local non-profits, etc.). Prerequisite: CS BS Major Status, CS 4970. Credits / Units: 3 - CS 4980 - Capstone Research Credits:
This course is one option in the CS fourth-year thesis track. Students will seek out a faculty member as an advisor, and do an independent project with said advisor. Instructors can give the 3 credits across multiple semesters, if desired. This course is designed for students who are doing research, and want to use that research for their senior thesis. Note that this track could also be an implementation project, including a group-based project. Prerequisite: CS Major Status. CS 2150 with a grade of C- or higher
CS 4980 cannot be counted towards the CS Elective Course Requirement. Credits / Units: 1-3 - CS 4993 - Independent Study Credits:
In-depth study of a computer science or computer engineering problem by an individual student in close consultation with departmental faculty. The study is often either a thorough analysis of an abstract computer science problem or the design, implementation, and analysis of a computer system (software or hardware). Prerequisite: Instructor permission.
At most, 3 credits of CS 4993 (Directed Independent Study), can be counted towards the CS Elective courses requirement. Credits / Units: 1-3
|
|
|