A beginner should work through these core units in order, though where noted, some material can be skipped over or deferred.
The notes and quiz questions are originally in .doc format, and the slide presentations are originally in .pptx format. These documents use the fonts Inconsolata and Calibri (learn how to get Calibri on Linux.)
This unit is split into two parts, the latter of which can be deferred if you wish to move on:
This unit is split into two parts, the latter of which can be deferred if you wish to move on:
The notes and quiz questions are originally in .doc format, and the slide presentations are originally in .pptx format. These documents use the fonts Inconsolata and Calibri (learn how 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.- Intro: html
- Lecture video (part 1): Youtube (72 min.)
- Lecture video (part 2): Youtube (30 min)
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html
- Quiz questions: html
numbers as bits
How numbers are represented as bits.- Intro: html
- Lecture video: Youtube (46 min.)
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html
- Quiz questions: html
bits and text
Terminology for talking about bits and discussion of how text is represented as bits.- Intro: html
- Lecture video: Youtube (33 min.)
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html
- Quiz questions: html
hardware and operating system basics
The basic components of computer hardware and the low-level software that controls it all.- Intro: html
- Lecture video: Youtube (92 min.)
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html
- Quiz questions: html
programming languages
How source code becomes a running program, how languages are categorized, and a survey of important languages.- Intro: html
- Lecture video: Youtube (81 min.)
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html
- Quiz questions: html
the Javascript language
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. Some important material is only found in the supplement “Javascript continued”:- Intro: html
- Lecture video: Youtube (55 min.)
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Javascript continued: html
- Notes: html
- Quiz questions: html, doc
code practices
A discussion of what constitutes good code and how to write good code.- Lecture video: Youtube (69 min.)
the Internet
How the protocols of the Internet work, including discussion of IP, UDP, TCP, ICMP, and HTTP. For background material, you may need to first watch another unit intended for a more general audience (on Youtube).- Lecture video: Youtube (60 min.)
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
HTML and CSS
An intro to the essentials of creating web pages, HTML (Hypertext Markup Language) and CSS (Cascading Style Sheets).- Lecture video: Youtube (73 min.)
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
Javascript in the browser
How to use Javascript code to manipulate the elements of web pages.- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
2D graphics (with the HTML canvas)
An intro to 2D graphics programming using the canvas element in the browser.- Lecture video: Youtube (83 min.)
Object-Oriented Programming (OOP)
Object-Oriented Programming is a paradigm of programming in contrast to the more obvious “procedural” programming. Many popular languages, including Python and Java, explicitly favor the Object-Oriented style.- Intro: html
- Lecture video: Youtube (28 min)
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
- Python miscellany: html, doc
the Python language
The language Python is very close semantically to Javascript but adds more structured mechanisms for Object-Oriented Programming. Some features of the language are only discussed in the supplementary notes:- Intro: html
- Lecture video: Youtube (59 min)
- Lecture video (Python continued): Youtube (47 min)
- Lecture video (Python strings and collections): Youtube (55 min)
- Notes: html
- Notes (Python continued): html
- Notes (Python strings and collections): html
- Notes (additional Python miscellany): html
- Quiz questions: html, doc
Unix system calls
The essential system calls in Unix for files, managing processes, and interprocess communication.- Lecture video (part 1): Youtube
- Lecture video (part 2): Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
Unix terminals and shells
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 tools still 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 Again Shell). We’ll also discuss a few command-line programs commonly available on Unix systems and discuss how these programs can be tied together through the shell.- Lecture video: Youtube (85 min.)
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
the C language
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. Some features of the language are only discussed in the supplement “C continued”.This unit is split into two parts, the latter of which can be deferred if you wish to move on:
- Lecture video (part 1): Youtube (52 min.)
- Lecture video (part 2): Youtube (44 min.)
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- C continued: html
- Notes (part 1): html
- Notes (part 2): html
- Quiz questions: html
the Java language
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. Some features of the language are only discussed in the supplement “Java miscellany”.This unit is split into two parts, the latter of which can be deferred if you wish to move on:
- Lecture video (part 1): Youtube (109 min.)
- Lecture video (part 2): Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html
- Quiz questions: html, doc
- Java miscellany: html, doc
databases
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, which 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
server-side web programming
Most web sites operate with custom code that governs the storage and presentation of their user data and content. This usually involves storing and retrieving data from a database and generating an HTML response upon each request to the server. Web frameworks facilitate these common tasks. In this unit, we cover the basics of server-side web programming and a specific web framework for Python called web2py.- Lecture video: Youtube
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
version control with Mercurial
When we write code, it’s very nice to be able to keep track of all of our changes such that we can always go back to an earlier version when we mess something up. It’s also really important to coordinate our changes with others working on the same code. For these reasons, programmers use programs called version control systems to manage their code. We’ll focus on one such program called Mercurial.- Lecture video: Youtube (88 min.)
- Lecture transcript: txt
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
build tools
forthcoming. The whole process of translating source code and data files into a working program is called the build process. In most software projects, we end up building the project many times over as we develop the code, fix bugs, and change features, so it makes sense that we automate this whole process as much as possible. In this unit, we’ll discuss popular build tools, such as the Unix make program.- Lecture video: Youtube
- Lecture slides: pdf, pptx
- Notes: html, doc
- Quiz questions: html, doc
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
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
No comments:
Post a Comment