Sunday, July 8, 2012

CodeSchool.org

http://codeschool.org/core-units/

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

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.

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: pdfpptx
  • Notes: html
  • Quiz questions: html, doc
  • Java miscellany: htmldoc

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