320 likes | 442 Views
600.103 FUNDAMENTALS OF PRACTICAL COMPUTING Ken Church. Intended audience: Students considering a major in science, engineering or medicine Small Class Diversity: Geeks Mainstream like Calculus &“typing” College High School Elementary School
E N D
600.103 FUNDAMENTALS OF PRACTICAL COMPUTING Ken Church • Intended audience: • Students considering a major in • science, engineering or medicine • Small Class • Diversity: Geeks Mainstream • like Calculus &“typing” • College High School Elementary School • Fun (not too much work) Sell the field • Practical: • Please bring laptops to class if you can • Familiarize students with lots of stuff (breadth) • Not just a single programming language (not depth) • Fundamentals: • Lots more to Computer Science than hacking
Teamwork, Web-work, etc. • Encourage teamwork, Google, Wikipedia, etc. • Homework: • Submit by email to Kenneth.Church@jhu.edu • Due Tuesday morning at sunrise • So I have time to adjust my Tuesday lectures (if necessary) • Target: 2 hours per hour of class • 1 hour installing software, plus • 1 hour of exercises (as opposed to problem sets) • Homework comes with hints (as opposed to recipes) • Feel free to ask for more hints (Kenneth.Church@jhu.edu) • Example: Use Google to figure out how to install • R (a stat package) • LISP (http://www.newlisp.org/) • cygwin (Unix for Windows)
Cheating • Please don’t, but if you do, you are only cheating yourself • I want to encourage teamwork & web-work • Because they are great ways to learn • “Although you may work in small groups, each student must submit his/her own program and the code may not be a copy of others’ code. You may share ideas and help – but you must write your own code and your assignment MUST be SUBSTANTIALLY different from all others.” • Ok to submit a team effort (especially if you tell me who you are working with) • If you can’t do the homework, explain why • My bad • Software package doesn’t work for your machine • I asked for more than 2 hours (feel free to stop after 2 hours) • Homework is for your benefit (and mine) • Homework will be graded: satisfactory (or not) • Exams (mid-term & final) Grades • Goal: Learn from the homework You’ll do fine on the exams
First Four Weeks • Symbolic Programming (how CS was taught in 1970s) • Practical: Familiarize students with stat package(s), • As well as symbolic alternatives: LISP & Wolfram Alpha • Fundamental: • Stuff you can’t do with your favorite stat package • LISP: Recursion, Eval, Symbolic Differentiation • Lambda Calculus (“Small is Beautiful” beyond reason; Church’s Thesis & Computability) • Unix for Poets (“Small is Beautiful”) • How to program (without realizing that it is programming) • How to use tr, awk & those other crazy Unix utilities (pipes) • Examples: count words (and ngrams); find interesting word associations. • More Unix for Poets • Python & NLTK (Natural Language Toolkit): • Unix for Poets (without Unix) • Formal Language Theory & Chomsky Hierarchy
Symbolic Features(Bet you can’t do this with your favorite statistics package) • Complex Numbers: Sqrt(-1) • Roots (without approximations) • Differentiation (without approximations) • Integration (without approximations) • The On-Line Encyclopedia of Integer Sequences • Eval
Newton’s Methodhttp://archives.math.utk.edu/visual.calculus/3/newton.5/
Newton’s Methodhttp://archives.math.utk.edu/visual.calculus/3/newton.5/
More RecursionLecture3/recursive_examples.lsp (define (fact x) (if (<= x 1) 1 (* x (fact (- x 1))))) (define (fib x) (if (<= x 2) 1 (+ (fib (- x 1)) (fib (- x 2))))) (define (len x) (if (empty? x) 0 (+ 1 (len (rest x))))) (define (rev x) (if (empty? x) x (append (rev (rest x)) (list (first x)))))
Symbolic DifferentiationLecture1/deriv.lsphttp://mitpress.mit.edu/sicp/full-text/sicp/book/node39.html
Church’s Thesishttp://en.wikipedia.org/wiki/Effectively_calculable • Effective Procedure • always give some answer • always give the right answer • always be completed in a finite number of steps • work for all instances of problems of the class • Recursively Computable • Three definitions later found to be equiv to one another • general recursion • Turing machines • λ-calculus • Church's thesis: • Effectively Procedure = Recursively Computable • Not a mathematical statement No proof
Recursion & Factorial http://www.allisons.org/ll/FP/Lambda/Introduction/
Summary: Symbolic Features(Bet you can’t do this with your favorite statistics package) • Complex Numbers: Sqrt(-1) • Roots (without approximations) • Differentiation (without approximations) • Integration (without approximations) • The On-Line Encyclopedia of Integer Sequences • Eval
First Four Weeks • Symbolic Programming (how CS was taught in 1970s) • Practical: Familiarize students with stat package(s), • As well as symbolic alternatives: LISP & Wolfram Alpha • Fundamental: • Stuff you can’t do with your favorite stat package • LISP: Recursion, Eval, Symbolic Differentiation • Lambda Calculus (“Small is Beautiful” beyond reason; Church’s Thesis & Computability) • Unix for Poets (“Small is Beautiful”) • How to program (without realizing that it is programming) • How to use tr, awk & those other crazy Unix utilities (pipes) • Examples: count words (and ngrams); find interesting word associations. • More Unix for Poets • Python & NLTK (Natural Language Toolkit): • Unix for Poets (without Unix) • Formal Language Theory & Chomsky Hierarchy
Homework: Questions Kenneth.Church@jhu.edu • Install (hint: Google) • R (a stat package) • LISP (http://www.newlisp.org/) • cygwin (Unix for Windows); skip if you have Unix • Send me an email with: • Subject: 600.103 Homework #1 from <name> • Body: screen shots (see next couple of slides) • Due Tuesday morning (at sunrise)
Homework: sqrt(4) • Screenshots of sqrt(4) and sqrt(-4) from • R • Wolfram Alpha • Newton’s Method http://archives.math.utk.edu/visual.calculus/3/newton.5 • LISP • For Newton’s Method, what settings generate • sqrt(4) 2 v. sqrt(4) -2 • Are there any settings so that sqrt(4) NaN? • In R, show me the following plot • x = seq(-4,4,1/10) • plot(x, x^2 - 4) • abline(h=0) • abline(v=c(-2,2), col="red")
Fibonacci • Use NewLisp& Encyclopedia of Integer Sequences to compute Fibonacci • F(n) = F(n-1) + F(n-2), F(0)=F(1)=1 • What is F(15)?
Readings • The Roots of LISP • Use Google to find the article • “The unusual thing about Lisp-- in fact, the defining quality of Lisp-- is that it can be written in itself.” • The Halting Problem (Wikipedia) • What does this have to do with Computability?