David Evans - Courses

UVA Undergraduate | UVA Graduate | Udacity | Outreach | Reverse Chronological List

UVA Undergraduate Courses

cs1010: Computing for Future Leaders and Citizens
Official name: Introduction to Information Technology
Spring 2024
cs1120: Introduction to Computing: Explorations in Language, Logic, and Machines (also known as Computer Science: From Ada and Euclid to Quantum Computing and the World Wide Web)
Spring 2016
Fall 2011 [Course Evaluation]
Fall 2009
Spring 2007 (as cs150)
Fall 2005 (as cs150)
Spring 2004 (as cs200)
Spring 2003 (as cs200) [Reviews]
Spring 2002 (as cs200) [SEAS Survey, Course Improvement Survey]

UTF Proposal (2001): University of Virginia Teaching Fellowship: Teaching Introductory Computer Science as a Liberal Art

Textbook (under development, 2007-2011): Introduction to Computing: Explorations in Language, Logic, and Machines

cs2102: Discrete Mathematics
Fall 2017 (co-taught with Mohammad Mahmoody)
Fall 2016
cs2220: Engineering Software
Fall 2010 [Classes]
Fall 2006 (as cs205)
Fall 2003 (as cs201J) [SEAS Evaluations, Course Improvement Survey]
Fall 2002 (as cs201J) [Evaluations]

Course Proposal: NSF CCLI: Teaching Software Engineering Using Lightweight Analysis

cs216: Program and Data Representation (Spring 2006)

cs3102: Theory of Computation

Fall 2021 (co-taught with Nathan Brunell)
Fall 2020 (co-taught with Nathan Brunell)
Fall 2019 (co-taught with Nathan Brunell)
Spring 2010
Spring 2008 (as cs302)

cs3501: Everyday Ethics and Quotidian Quandries for Computer Scientists

Spring 2021 (this was a fully virtual pandemic-lockdown class, with most sessions meeting using Rally). [Schedule] and [Final Projects].

cs4414: Operating Systems

Introduction to Operating Systems, using the Rust programming language and focusing on building secure, robust, and scalable computing systems.

Spring 2014 (includes edited video lectures)
Fall 2013

cs4501: Computational Biology / Biological Computing
Spring 2022
cs4501: Cryptocurrency
Cryptocurrency Cafe, Spring 2015
Cryptocurrency Cabal, Fall 2015
cs4501/econ4559: Markets, Mechanisms, and Machines
Spring 2020 (co-taught with Denis Nekipelov from Economics)
Spring 2019 (co-taught with Denis Nekipelov from Economics)
cs588: Cryptology: Principles and Applications
Spring 2005
Fall 2001 [SEAS Evaluation]
Fall 2000 (as cs551: Security and Privacy on the Internet: Keeping Secrets, Thwarting Imposters and Disarming Malicious Code) [SEAS Evaluation, Course-Specific Evaluation]
PAVS 4500: How will Artificial Intelligence change Humanity?
Pavillion Seminar offered through the College of Arts and Sciences.

Fall 2018 [Proposal (PDF)]

UVa Graduate Courses

cs655: Programming Languages
Spring 2001
Spring 2000 [SEAS Evaluation]
Special Topics Seminars (listed as cs651, cs6501, or cs851)

cs6501: Risks and Benefits of Generative AI and LLMs (Fall 2023)
cs6501: Security and Privacy of Machine Learning (Spring 2018)
cs6501: Understanding an Securing TLS (TLSeminar) (Spring 2017)
cs6501: Data Hacking "Show-and-Tell"inar (Fall 2014)
cs6501: Great Works in Computer Science (Spring 2013)
cs6501: Principles Of Knowledge Engineering and Reconstruction (Spring 2011)
cs6501: Security Seminar (Fall 2009)
cs851: Web Applications Security Seminar (Fall 2007)
cs851: Malware Seminar (Fall 2004)
cs851/651: Cryptography Applications Bistro (CrAB Seminar) (Spring 2004)
cs851: Biologically-Inspired Computing (with Jim Cohoon) (Spring 2003)

Udacity Courses

These courses are open to anyone, and you can start any time.

cs101: Introduction to Computer Science (Building a Search Engine) (Course Notes)

This course uses building a search engine as a vehicle for learning about computer science and Python programming. It has enrolled over 500,000 students (since launching in February 2012. Selected news articles: Prospect Magazine, Chronicle. Blog post describing my experiences developing cs101: CS101: One Year Later.

cs387: Applied Cryptography [Course Materials]

According to InformationWeek, this the #1 Online Class To Pump Up IT Careers, although it is more meant as a fun introduction to cryptography. It has enrolled over 70,000 students. Daniel Winter, with help from other students in the class, produced a textbook for the class.

Outreach Courses

Autonomy, “Machine Learning”, and “Artificial Intelligence”, Judge Advocate General's School Emerging Techonologies Conference, January 2024. Short introduction to AI for military lawyers.
     Part 1: 1679 – 2019 [PDF]
     Part 2: 2019 – 2029 [PDF]
What Every Hacker Should Know about Theory of Computation. Lecture on universal computation at HackerSchool, New York, October 2014.
Engineering Cryptosystems. Four-session introduction to understanding and building secure cryptosystems targeted to software engineers and project managers without previous background in cryptography, developed for MicroStrategy, Inc., and given at the AMC Movie Theater in Tyson's Corner Mall, Falls Church, Virginia in October 2013.)
Cryptography in World War II. Four-class course for Jefferson Institute for Life-Long Learning.
Dragon Crypto. Two-day cryptography course for middle school students.

Reverse Chronological List

cs1010: Computing for Future Leaders and Citizens (official name: Introduction to Information Technology) (Spring 2024)
cs6501: Risks and Benefits of Generative AI and LLMs (Fall 2023)
cs3102: Theory of Computation (co-taught with Mohammad Mahmoody)
Spring 2022: cs4501: Computational Biology / Biological Computing
Fall 2021: cs3102: Theory of Computation (co-taught with Nathan Brunelle)
Spring 2021: cs3501: Everyday Ethics and Quotidian Quandries for Computer Scientists
Fall 2020: cs3102: Theory of Computation (co-taught with Nathan Brunelle)
Spring 2020: cs4501/econ4559: Markets, Mechanisms, and Machines (co-taught with Denis Nekipelov)
Fall 2019: cs3102: Theory of Computation (co-taught with Nathan Brunelle)
Spring 2019: cs4501/econ4559: Markets, Mechanisms, and Machines (co-taught with Denis Nekipelov)
Fall 2018: PAVS 4500: How will Artificial Intelligence change Humanity?
Spring 2018: cs6501: Security and Privacy of Machine Learning
Fall 2017: cs2102: Discrete Mathematics (co-taught with Mohammad Mahmoody)
Spring 2017: cs6501: Understanding an Securing TLS (TLSeminar)
Fall 2016: cs2102: Discrete Mathematics
Spring 2016: cs1120: Introduction to Computing: Explorations in Language, Logic, and Machines
Fall 2015: cs4501: Cryptocurrency Cabal
Spring 2015: cs4501: Cryptocurrency Cafe
Fall 2014: cs6501: Data Hacking "Show-and-Tell"inar
Spring 2014: cs4414: Operating Systems
Fall 2013: cs4414: Operating Systems
Spring 2013: cs6501: Great Works in Computer Science
April 2012: cs387: Applied Cryptography (Udacity) [Materials]
February 2012: cs101: Introduction to Computer Science (Building a Search Engine) (Udacity) [Materials]
Fall 2011: cs1120: Introduction to Computing: Explorations in Language, Logic, and Machines
Spring 2011: cs6501: Principles Of Knowledge Engineering and Reconstruction
Fall 2010: cs2220: Engineering Software
Spring 2010: cs3102: Theory of Computation
Fall 2009: cs1120: Introduction to Computing
Fall 2009: cs6501: Security Seminar
Fall 2008, Spring 2009: On Sabbatical
Spring 2008: cs302: Theory of Computation
Spring 2008: cs493: Web Browser Seminar (created and taught by Adrienne Felt)
Fall 2007: cs851: Web Application Security Seminar
Spring 2007: cs150: Computer Science: From Ada and Euclid to Quantum Computers and the World Wide Web
Fall 2006: cs205: Engineering Software
Spring 2006: cs216: Program and Data Representation
Fall 2005: cs150: Computer Science: From Ada ...
Spring 2005: cs588: Cryptology: Principles and Applications
Fall 2004: cs851: Malware Seminar
Spring 2004: cs200: Computer Science: From Ada ...
Spring 2004: cs851/651: Cryptography Applications Bistro (CrAB)
Fall 2003: cs201J: Engineering Software
Spring 2003: cs200: Computer Science: From Ada ...
Spring 2003: cs851: Biologically-Inspired Computing
Fall 2002: cs201J: Engineering Software
Spring 2002: cs200: Computer Science: From Ada ...
Fall 2001: cs588: Cryptology
Spring 2001: cs655: Programming Languages
Fall 2000: cs551: Security and Privacy
Spring 2000: cs655: Programming Languages