Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Class 1: The Computer

Class 1: The Computer

Notes for 5/9/2013

Ian Luke Kane

May 09, 2013
Tweet

More Decks by Ian Luke Kane

Other Decks in Technology

Transcript

  1. Syllabus Review • Weekly Schedule • Class: Thursdays, 7pm -

    9:30pm • 1:00 Theory/Discussion • 0:20 Break Time • 1:10 Practical Workshop • Workshop Time
  2. Syllabus Review • Readings • All texts are freely available,

    though a few are available in other formats if you so desire. • The Cathedral and the Bazaar is the main discussion text. • Overview of other texts
  3. Syllabus Review • Assignments: • Readings: All listed due for

    class that week. • Code Assignments • Article Summaries: One due during first half of class, one due during second half. • Codeacademy.com: All listed due for class
  4. Syllabus Review • Grading • There will be no grading,

    per se. Having said that, the instructors will provide both midterm and final portfolio/status reviews. These reviews will be based on several factors, including technical improvement, adaptability, problem solving, and initiative/engagement. In addition, your activity on GitHub will serve as a public record of your accomplishments in the course.
  5. Course Broadness • This course will be very broad and

    will cover many deep topics. • We all come into this course will various levels of experience and technical skill. • “You also have to develop a kind of faith in your own learning capacity - a belief that even though you may not know all of what you need to solve a problem, if you tackle just a piece of it and learn from that, you'll learn enough to solve the next piece — and so on, until you're done.”
  6. On Learning • “I can't give complete instructions on how

    to learn to program here — it's a complex skill. But I can tell you that books and courses won't do it — many, maybe most of the best hackers are self-taught. You can learn language features — bits of knowledge — from books, but the mind-set that makes that knowledge into living skill can be learned only by practice and apprenticeship. What will do it is (a) reading code and (b) writing code.” • “Learning to program is like learning to write good natural language. The best way to do it is to read some stuff written by masters of the form, write some things yourself, read a lot more, write a little more, read a lot more, write some more ... and repeat until your writing begins to develop the kind of strength and economy you see in your models.”
  7. Cardinal Rule • If you have only a limited time

    to engage in the course for the week, always use your time on the practical skills. (Practice.)
  8. Key Questions • What is a computer? • How does

    a computer work? • When you write code and execute it, what is really happening? • Reading Discussion
  9. What is a computer? • A computer is a general

    purpose device that can be programmed to carry out a finite set of arithmetic or logical operations. Since a sequence of operations can be readily changed, the computer can solve more than one kind of problem. • Conventionally, a computer consists of at least one processing element, typically a central processing unit (CPU) and some form of memory. The processing element carries out arithmetic and logic operations, and a sequencing and control unit that can change the order of operations based on stored information. Peripheral devices allow information to be retrieved from an external source, and the result of operations saved and retrieved.
  10. How does a computer work? • Turing Machine • All

    you need is an infinitely long tape, a head that can read and write cells on the tape, and a table of instructions.
  11. • At the most basic level, this is what is

    happening when you write code and execute it. Crazy, right? You are flipping bits.
  12. Transistors • Intel Core 2 Extreme QX6700 Processor: 582 million

    transistors • Raspberry Pi (ARM1176JZF-S 700 MHz processor): 30K transistors
  13. The Hacker Attitude 1. The world is full of fascinating

    problems waiting to be solved. 2. No problem should ever have to be solved twice. 3. Boredom and drudgery are evil. 4. Freedom is good. 5. Attitude is no substitute for competence.
  14. Final Quote of the Day • “Work as intensely as

    you play and play as intensely as you work. For true hackers, the boundaries between "play", "work", "science" and "art" all tend to disappear, or to merge into a high- level creative playfulness. Also, don't be content with a narrow range of skills. Though most hackers self-describe as programmers, they are very likely to be more than competent in several related skills — system administration, web design, and PC hardware troubleshooting are common ones. A hacker who's a system administrator, on the other hand, is likely to be quite skilled at script programming and web design. Hackers don't do things by halves; if they invest in a skill at all, they tend to get very good at it.”