David Evans - Courses

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.

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.

Other Outreach Courses

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 (4-class course for Jefferson Institute for Life-Long Learning)
Dragon Crypto (2-day cryptography course for middle school students)

UVa Undergraduate Courses

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
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

Spring 2010
Spring 2008 (as cs302)

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: Cryptocurrency
Cryptocurrency Cafe, Spring 2015
Cryptocurrency Cabal, Fall 2015
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]

UVa Graduate Courses

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

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)

Reverse Chronological List

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 (Spring 2013)
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