Goals of this course

This course is described in the catalog of courses as

Broad introduction to the nature, capabilities, and limitations of computing. Topics range from the way data is represented and stored, to the way today’s computers work, to the general ideas of algorithms and computational efficiency, to the future of computing. Covers Great Ideas across various areas of the field, including, for example, cryptography and internet security, problem solving, modeling and simulation, and artificial intelligence.

That’s a very broad description, and can be realized in many ways. This page outlines my goals for this instance of this course.

1 Answer questions

I love questions. I have broad knowledge of many areas of computing and would be delighted if every lecture was just me answering your questions. Of course, some questions might require some background knowledge to fully answer, but we have time to give that background knowledge. If your questions change the entire direction of the course, I’ll consider that a win.

2 Follow the conversation

Computers have successfully infiltrated every walk of modern life. But computing practitioners speak about them differently than other people. We want to prepare you to communicate with computing practitioners.

Every field has jargon, words with precise definitions needed to engage fully in the field. Unlike other technical fields, computing jargon is mostly based in English: it’s not like medicine where Latin words have technical meaning and English words don’t. In computing it’s perfectly valid to say something like

Most heaps1 Referring to the heap data structure, a way of organizing a collection of comparable values so that it’s easy to find the smallest one. and stacks2 Referring to the stack data structure, also called a LIFO (Last-in first-out), a way of organizing a collection of arbitrary values for each insertion and removal of items in a particular order. are stored on the heap3 Referring to the heap segment of computer memory which can store arbitrarily-sized values and add and remove them in arbitrary order., not the stack4 Referring to the stack segment of memory which stores temporary values used during computation in a way that lets the memory be easily re-used after the computation is complete., but if its size is small enough and known in advance then putting a stack or heap on the stack can make sense.

I’m not going to try to teach you the full computing jargon, but I am going to try to help you become more comfortable in conversations that contain compting jargon.

3 Work with computing professionals

I expect most if not all of you to work closely with computing professionals in your future. You might manage them, be on a team with them, be their clients, or make policies about their work. I want to help you interact productively with them, both by sharing some of how they understand their field and by preparing you to speak with them effectively.