Daniel Graham

Assistant Professor
Unit: School of Engineering and Applied Science
Department: Department of Computer Science
Office location and address
351 McCormick Rd
Charlottesville, Virginia 22903
CS 1501: Special Topics in Computer Science
Credits: 1
Student led special topic courses which vary by semester.
STS 1501: Special Topics in Engineering & Society
Credits: 1
Student led special topic courses which vary by semester.
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, 1113, or 1120 with a grade of C- or higher; or the CS 1110 placement test.
CS 2130: Computer Systems and Organization 1
Credits: 4
This course covers topics on the computer architecture abstraction hierarchy ranging from a step above silicon to a step below modern programming languages. Students in this course will learn to write low-level code in C and Assembly, how data is stored in memory, the basics of hardware design from gates and registers through general-purpose computers, and legal, ethical, and security issues related to these topics. CS 1100 - CS 1199 and either familiarity with Java, C++, or another C-like language, or concurrent enrollment in CS 2100
CS 3330: Computer Architecture
Credits: 3
Includes the organization and architecture of computer systems hardware; instruction set architectures; addressing modes; register transfer notation; processor design and computer arithmetic; memory systems; hardware implementations of virtual memory, and input/output control and devices. Prerequisite: CS 2150 with a grade of C- or higher. CS 2330 recommended. Students may not receive credit for both CS 3330 and ECE 3430. CPE majors cannot use this course to fulfill their program of study.
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 asymtotic 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.
ECE 4457: Computer Networks
Credits: 3
A first course in communication networks for upper-level undergraduate students. Topics include the design of modern communication networks; point-to-point and broadcast network solutions; advanced issues such as Gigabit networks; ATM networks; and real-time communications. Cross-listed as CS 4457. Prerequisite:  CS 3330 or ECE 3430
CS 4501: Special Topics in Computer Science
Credits: 1–3
Content varies annually, depending on instructor interests and the needs of the department. Similar to CS 5501 and CS 7501, but taught strictly at the undergraduate level. Prerequisite: Instructor permission; additional specific requirements vary with topics.
CS 4720: Mobile Application Development
Credits: 3
Mobile computing devices have become ubiquitous in our communities. In this course, we focus on the creation of mobile solutions for various modern platforms, including major mobile operating systems. Topics include mobile device architecture, programming languages, software engineering, user interface design, and app distribution. Prerequisite: CS 2150 with a grade of C- or higher.
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 with a grade of C- or better
CS 4980: Capstone Research
Credits: 1–3
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 2150 with a grade of C- or higher
CS 4991: Capstone Technical Report
Supports the writing of the technical report component of the fourth-year thesis, credit for which is given in STS 4600. Students will write the report assuming a non-technical audience. The course is part of the CS 4XXX elective option in the fourth-year CS thesis track. BS CS 4th years (both first & second majors) and pre- or co-requisite STS 4500
CS 4993: Independent Study
Credits: 1–3
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.
CS 4998: Distinguished BA Majors Research
Credits: 3
Required for Distinguished Majors completing the Bachelor of Arts degree in the College of Arts and Sciences. An introduction to computer science research and the writing of a Distinguished Majors thesis. Prerequisites: CS 2150 with a grade of C- or higher and CS BA major status.
CS 6890: Industrial Applications
Credits: 1
A graduate student returning from Curricular Practical Training can use this course to claim one credit hour of academic credit after successfully reporting, orally and in writing, a summary of the CPT experience to his/her academic advisor.
CS 7993: Independent Study
Credits: 1–12
Detailed study of graduate course material on an independent basis under the guidance of a faculty member.
CS 7995: Supervised Project Research
Credits: 3
Formal record of student commitment to project research for the Master of Computer Science degree under the guidance of a faculty advisor.
CS 8897: Graduate Teaching Instruction
Credits: 1–12
For master's students who are teaching assistants.
CS 8999: Thesis
Credits: 1–12
Formal record of student commitment to thesis research for the Master of Science degree under the guidance of a faculty advisor. May be repeated as necessary.
CS 9897: Graduate Teaching Instruction
Credits: 1–12
For doctoral students who are teaching assistants.