3. 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
4. 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
5. 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.
6. 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.”
7. 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.”
8. 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.)
9. Key Questions
• What is a computer?
• How does a computer work?
• When you write code and execute it, what
is really happening?
• Reading Discussion
12. 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.
13. 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.
18. Discussion
• What are some characteristics that
exemplify the hacker attitude and
mindset?
19. 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.
20. 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.”