These core units should be a beginner’s starting point and are intended to be consumed in order. If you get tired of strictly following this progression, some supplementary units only require working up through a particular core unit, e.g. the supplementary unit, “The C Language (unit 2)”, can be done immediately after the core unit, “The C Language (unit 1)”, even if you haven’t finished the remaining core units.
The notes and quiz questions are originally in .doc format, and the slide presentations are originally in .pptx format. Of the fonts used, Inconsolata is free, but it’s a bit tricky to get Calibri on Linux.
a first programming language
Introduces a simple programming language called “Pigeon”. Covers expressions, variables, control flow, functions, global variables, et al.
- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: doc
- Quiz questions: doc
numbers as bits
How numbers are represented as bits.
- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: doc
- Quiz questions: html, doc
bits and text
Terminology for talking about bits and discussion of how text is represented as bits.
- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: doc
- Quiz questions: html, doc
hardware and operating system basics
The basic components of computer hardware and the low-level software that controls it all.
- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
programming languages
How source code becomes a running program, how languages are categorized, and a survey of important languages.
- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
the Javascript language (unit 1)
The popular language Javascript (not to be confused with Java, another popular language) is very close semantically to Pigeon, so it’s a natural choice for our first real language.
- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
the C language (unit 1)
The C programming language is one of the oldest and most influential languages still in use today. Unlike most other languages (including Pigeon and Javascript), C gives programmers a fine degree of control over the hardware, making it suitable for writing systems software (such as operating systems, like the Linux kernel) and for programs requiring high performance, such as the latest computer games.
- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
the Internet
forthcoming. How networks and the Internet work, including discussion of TCP/IP and DNS.
- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
the C language (unit 2)
Continues coverage of the C language. Goes into depth on “complex” pointer and array types, e.g. pointers to pointers, arrays of arrays, arrays of pointers, etc.
- Lecture video: Youtube
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
Unix system calls
forthcoming. The essential system calls in Unix for files, managing processes, and interprocess communication.
- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
Unix terminals and shells
forthcoming. Before graphical user interfaces, computer users interacted with the computer using a command line shell—basically, an interactive programming language in which each command the user types is immediately executed. Today, shells are still powerful tools used by programmers and system administrators. In this unit, we’ll focus on the shell language used most commonly in Unix systems, BASH (the Bourne AgainShell). We’ll also discuss the command-line programs commonly available on Unix systems and discuss how these programs can be tied together through the shell.
- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
the Java language (unit 1)
Unlike Javascript and C, the Java language heavily emphasizes Object-Oriented Programming. Since the late 1990’s, Java has been the most commonly used programming language. Java’s success has spawned an imitator from Microsoft called C# (“C sharp”), which differs in many details but is fundamentally similar. We cover Java instead of C# mainly because Java is somewhat simpler and still more popular.
- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
C, Java, and Javascript miscellany
C, Java, and Javascript have a number of features we skipped over, most of which are simply conveniences for writing more compact code. You needn’t master this material straight away, but you will encounter these features in real world code at some point. Because these details are too dull to cover in lecture form, we present them simply in written form.
software design and engineering
forthcoming. Once you can read and write code, there’s still much to learn about how to go about using code to solve problems.
- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
data structures and algorithms
forthcoming. There are only so many fundamental ways of organizing data. We’ll discuss these data structures and the algorithms associated with them.
- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
structured data formats
forthcoming. Structured data is data in which individual pieces of data (numbers, pieces of text, etc.) are related together in an organized way. A person, for instance, can be represented as structured data: a name (text), an age (number), an address (text), etc. We have standard formats for such data such as XML (Extensible Markup Language) and JSON (Javascript Object Notation), among others.
- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
the web
forthcoming. A survey of webpages, web servers, and web programming.
- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
databases
forthcoming. A database is a specialized program for storing large amounts of data in a way that can be searched and retrieved efficiently. For instance, a popular website like Amazon.com uses databases to store product and customer information. The most commonly used databases are relational databases, meaning they structure data in the style of the relational model. The programs we write typically communicate with a relational database using a query language called SQL (pronounced “sequel”, Structured Query Language).
- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
security and encryption basics
forthcoming. The basics of security and encryption and security aren’t nearly as arcane as you might imagine.
- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc