Here are my responses to your responses to the question “What do you want to know about me or the course?” on the “Beginning of Course Survey”. If you think of any new questions you would like answered, or follow-ups on these, feel free to ask them in the Canvas discussion or by email!
Since I had to look it up, the SIS description is here:
How computers create, preserve, manipulate and communicate information and the concepts and tools used to that end. Units include how computers work, web technologies, creating web pages, algorithms and logic, basic programming, and solving problems with spreadsheets. Students will learn to recognize computational problems and develop basic skill sets to solve future problems in their discipline of study. No prior programming experience required. Cannot be taken for credit by students in SEAS.It is actually quite a good description, and overlaps around 80% with what we will do in this course.
We’ll definitely talk about the underlying technologies used in blockchains. I expect we’ll also have a class on how cryptocurrencies work and fail (and asking this question increases the likelihood!). In 2015, I taught a full course on cryptocurrencies, and there are many very interesting technical ideas involve in blockchain and cryptocurrency. I’m mostly disappointed, though, in how things have evolved since then.
My first general answer is that I like to teach courses where I learn new things, so always try to find opportunities to teach courses in new areas (which this course does qualify for in many ways!). Over recent years, I’ve taught classes in Computational Biology, Computing and Economics, Ethics, and Generative AI and Large Language Models (as well as Theory of Computation, which I’ve taught several times, but still learn new things each time I teach it). Although you might be surprised by this, this course gives me lots of opportunities to learn new things — as a broad course covering aspects of computing most essential for non-computer scientists, it includes many topics I haven’t had much chance to learn about in previous courses.
The more specific answer for this course is that I do think it is increasingly more important that people embarking on careers in other fields understand computing, than it is for us to produce more computer science majors. (Arguably, we are already producing too many computer scientists, although still not enough ones with deep understanding and relevant expertise in key areas.)
As a first offering (for me, although cs1010 has been around forever), its great that we can have a relatively small class. I think there are also some pretty strong structural hurdles to this class becoming large at UVA (mostly that it doesn’t count for any useful requirements, and doesn’t even count as credit for SEAS students). But, I think we should eventually get to a place where every student who isn’t majoring in computing would take a course like this one. My hope is that if this course goes well and grows within the current structure, it would lead to opportunities to develop a more widespread computing course for non-majors as well as materials (like a textbook) that could be useful elsewhere.
Computer Science is the only subject I know of that offers both the joy of discovery of fundamental truths (e.g., learning about the difference between countable and uncountable infinities, and the nature of universal computation) and the empowerment of being able to build amazing tools using nothing more than your imagination (which I hope you’ll experience at least some in this class).
The plans for this are still a bit in flux, but you will be doing some concrete programming in Project 3 to explore dynamic web sites. The connection between concepts and coding is strong in the sense that deeply understanding a concept usually required being able to program it, but there are many ways to understand concepts that are still valuable and more easily reached that do not require programming.
Maybe a little bit about your background like where you are from and how you got to UVA.
I grew up in suburban Detroit, Michigan, and went to a good public school in a pleasant, but very boring, area. I will probably not come as a great surprised to you that I was considered somewhat nerdy growing up.
I had my first experience with computers around first grade. At that time, my elementary school had a teletype terminal that you would use a phone coupler to call into a central machine, and you could play games like “Football” and “Oregon Trail”. When I was in second grade, my elementary school got Apple II computers, and we could earn time to use them by reading books. I did this as much as I could, and learned to program by looking at the source code for the games on the computer, which was BASIC code that you could easily read and change.
I came to UVA after finishing my PhD at MIT (actually a little bit before finishing, which is another story). I got here by car, driving down from Boston area.
(I answered about teaching CS above, so will just talk about hobbies here.)
Today, my hobbies are mostly revolve around what my kids are doing (which, perhaps oddly or prehaps unsurprisingly, ends up not that different from what my own hobbies were earlier). My daughter (age 11) is mostly into soccer and especially playing goalkeeper, so most of my weekends is about taking her to travel soccer games and tournaments. I never played above a recreational level (which regrettably ended for me with Covid), but go to world cups when possible, including New Zealand/Australia last summer. My son (almost 9) is not so much into sports, but loves chess and video games. When I was younger, I was also into music, mostly writing songs on piano and guitar.