Compsci 101, Fall 2012 20.1 LWoC l Review Recommender, dictionaries, files  How to create recommendations in order? food.txt  Toward a Duke eatery-recommender.

Slides:



Advertisements
Similar presentations
Programming Languages Wrap-up. Your Toolkit Object-oriented Imperative Functional Logic.
Advertisements

Computability & Complexity. Scenario I can’t write this program because I’m too dumb.
Nathan Brunelle Department of Computer Science University of Virginia Theory of Computation CS3102 – Spring 2014 A tale.
CSE332: Data Abstractions Lecture 27: A Few Words on NP Dan Grossman Spring 2010.
Today - Limits of computation - Complexity analysis examples.
Analysis of Algorithms CS 477/677
Chapter 11: Limitations of Algorithmic Power
CS10 The Beauty and Joy of Computing Lecture #23 : Limits of Computing Thanks to the success of the Kinect, researchers all over the world believe.
Halting Problem. Background - Halting Problem Common error: Program goes into an infinite loop. Wouldn’t it be nice to have a tool that would warn us.
Writing algorithms using the while-statement. Previously discussed Syntax of while-statement:
CSE 131 Computer Science 1 Module 1: (basics of Java)
CPS Today’s topics l Computability ä Great Ideas Ch. 14 l Artificial Intelligence ä Great Ideas Ch. 15 l Reading up to this point ä Course Pack.
Week 4-5 Java Programming. Loops What is a loop? Loop is code that repeats itself a certain number of times There are two types of loops: For loop Used.
CPS What is Computer Science? What is it that distinguishes it from the separate subjects with which it is related? What is the linking thread.
Computability and Modeling Computation What are some really impressive things that computers can do? –Land the space shuttle (and other aircraft) from.
Duke University Computer Science 1 Why Computer Science is Uglier and Prettier than Mathematics Owen Astrachan Duke University
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Summary and Exam COMP 102.
Cs3102: Theory of Computation Class 18: Proving Undecidability Spring 2010 University of Virginia David Evans.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 12: Recursion Problem Solving, Abstraction, and Design using C++
Compsci 100, Fall ’.1 Views of programming l Writing code from the method/function view is pretty similar across languages  Organizing methods.
ICAPRG301A Week 4Buggy Programming ICAPRG301A Apply introductory programming techniques Program Bugs US Navy Admiral Grace Hopper is often credited with.
Class 37: Computability in Theory and Practice cs1120 Fall 2011 David Evans 21 November 2011 cs1120 Fall 2011 David Evans 21 November 2011.
Tonga Institute of Higher Education Design and Analysis of Algorithms IT 254 Lecture 8: Complexity Theory.
CS 11 java track: lecture 1 Administrivia need a CS cluster account cgi-bin/sysadmin/account_request.cgi need to know UNIX
Compsci 06/101, Spring What is Computing? Informatics? l What is computer science, what is its potential?  What can we do with computers in.
CSE 131 Computer Science 1 Module 1: (basics of Java)
Basics of Java IMPORTANT: Read Chap 1-6 of How to think like a… Lecture 3.
Netprog: Java Intro1 Crash Course in Java. Netprog: Java Intro2 Why Java? Network Programming in Java is very different than in C/C++ –much more language.
CSC 413/513: Intro to Algorithms NP Completeness.
CSC 172 P, NP, Etc. “Computer Science is a science of abstraction – creating the right model for thinking about a problem and devising the appropriate.
Complexity Non-determinism. NP complete problems. Does P=NP? Origami. Homework: continue on postings.
Software Design 8.1 A Rose by any other name…C or Java? l Why do we use Java in our courses (royal we?)  Object oriented  Large collection of libraries.
CSCI 3160 Design and Analysis of Algorithms Tutorial 10 Chengyu Lin.
Computer Science and Everything 1 Big Ideas in Computer Science l “Mathematics is the Queen of the Sciences” Carl Friedrich Gauss l What is Computer Science?
Halting Problem Introduction to Computing Science and Programming I.
Compsci 100, Fall What is Computing? Informatics? l What is computer science, what is its potential?  What can we do with computers in our lives?
CompSci What can be computed l What class of problems can be solved? ä Google Datacenter, Desktop computer, Cell phone, pencil? ä Alan Turing proved.
Compsci 06/101, Spring What is Computing? Informatics? l What is computer science, what is its potential?  What can we do with computers in.
Chapter 5 – Part 3 Conditionals and Loops. © 2004 Pearson Addison-Wesley. All rights reserved5-2 Outline The if Statement and Conditions Other Conditional.
Compsci 100, Spring What’s left to talk about? l Transforms  Making Huffman compress more  Understanding what transforms do Conceptual understanding,
Beauty and Joy of Computing Limits of Computing Ivona Bezáková CS10: UC Berkeley, April 14, 2014 (Slides inspired by Dan Garcia’s slides.)
Fall 2002CS 150: Intro. to Computing1 Streams and File I/O (That is, Input/Output) OR How you read data from files and write data to files.
CPS 100, Fall What is Computing? Informatics? l What is computer science, what is its potential?  What can we do with computers in our lives?
CompSci Problem: finding subsets l See CodeBloat APT, requires finding sums of all subsets  Given {72, 33, 41, 57, 25} what is sum closest (not.
CPS What is Computer Science? What is it that distinguishes it from the separate subjects with which it is related? What is the linking thread.
CS10: The Beauty and Joy of Computing Lecture #22 Limits of Computing Warning sign posted at Stern Hall. Also, Apple releases new operating.
Limits to Computation How do you analyze a new algorithm? –Put it in the form of existing algorithms that you know the analysis. –For example, given 2.
Complexity & Computability. Limitations of computer science  Major reasons useful calculations cannot be done:  execution time of program is too long.
The Beauty and Joy of Computing Lecture #23 Limits of Computing Researchers at Facebook and the University of Milan found that the avg # of “friends” separating.
CSE 311 Foundations of Computing I Lecture 28 Computability: Other Undecidable Problems Autumn 2011 CSE 3111.
Compsci 06/101, Fall What is Computing? Informatics? l What is computer science, what is its potential?  What can we do with computers in our.
CompSci 100e 12.1 Sorting: In 2 Slides l Why do people study sorting?  Because we have to  Because sorting is beautiful  Example of algorithm analysis.
Mid-Year Review. Coding Problems In general, solve the coding problems by doing it piece by piece. Makes it easier to think about Break parts of code.
Chapter 12 Theory of Computation Introduction to CS 1 st Semester, 2014 Sanghyun Park.
1 1. Which of these sequences correspond to Hamilton cycles in the graph? (a) (b) (c) (d) (e)
Compsci 101.2, Fall Plan for LDO101 l Ethical webpage scraping  Illustrate power of regular expressions  Python makes trying things relatively.
Chapter 5 – Part 3 Conditionals and Loops. © 2004 Pearson Addison-Wesley. All rights reserved2/19 Outline The if Statement and Conditions Other Conditional.
CompSci Today’s Topics Computer Science Noncomputability Upcoming Special Topic: Enabled by Computer -- Decoding the Human Genome Reading Great.
Software Engineering Algorithms, Compilers, & Lifecycle.
Coming up Implementation vs. Interface The Truth about variables Comparing strings HashMaps.
CSC 172 P, NP, Etc.
CompSci 101 Introduction to Computer Science
Introduction to Computing Science and Programming I
Content Programming Overview The JVM A brief look at Structure
Bottom up meets Top down
What is Computing? Informatics?
Views of programming Writing code from the method/function view is pretty similar across languages Organizing methods is different, organizing code is.
CSE 311: Foundations of Computing
What is Computer Science at Duke?
From bit to byte to char to int to long
Presentation transcript:

Compsci 101, Fall LWoC l Review Recommender, dictionaries, files  How to create recommendations in order? food.txt  Toward a Duke eatery-recommender system, tools? l Test2, reworked, grades, more  The good news, the regular news, the fiscal cliff, … l Limits of Computation  Can you do anything with enough knowledge and time?  Why?

Compsci 101, Fall What is Computing? Informatics? l What is computer science, what is its potential?  What can we do with computers in our lives?  What can we do with computing for society?  Will networks transform thinking/knowing/doing?  Society affecting and affected by computing?  Changes in science: biology, physics, chemistry, …  Changes in humanity: access, revolution (?), … l Privileges and opportunities available if you know code  Writing and reading code, understanding algorithms  Majestic, magical, mathematical, mysterious, …

Compsci 101, Fall What can be programmed? l What class of problems can be solved ?  Hadoop, Cloud, Mac, Windows8, Android,…  Alan Turing contributions Halting problem, Church-Turing thesis l What class of problems can be solved efficiently ?  Problems with no practical solution What does practical mean?  We can't find a practical solution Solving one solves them all Would you rather be rich or famous?

Compsci 101, Fall Schedule students, minimize conflicts l Given student requests, available teachers  write a program that schedules classes  Minimize conflicts l Add a GUI too  Web interface  … I can’t write this program because I’m too dumb

Compsci 101, Fall One better scenario I can’t write this program because it’s provably impossible I can’t write this program but neither can all these famous people Still another scenario, is this better?

Compsci 101, Fall Summary of Problem Categories l Some problems can be solved 'efficiently'  Run large versions fast on modern computers  What is 'efficient'? It depends l Some problems cannot be solved by computer.  Provable! We can't wait for smarter algorithms l Some problems have no efficient solution  Provably exponential 2 n so for "small" n … l Some have no known efficient solution, but …  If one does they all do!

Compsci 101, Fall Entscheidungsproblem l What can we program?  What kind of computer? l What can't we program?  Can't we try harder? l Can we write a program that will determine if any program P will halt when run on input S ?  Input to halt: P and S  Output: yes/no halts

Compsci 101, Fall Good sites: l What is social bookmarking?  Why is del.icio.us interesting?  Who posts, who visits? l What about a website of interesting websites?  What would you expect to find there?  Would the site list itself? l What about sites that list/link to themselves?  What about a site with all sites that list themselves?

Compsci 101, Fall Bad sites: l Sites listing bad sites (don’t visit them?)  Where would this be useful?  What about censorship (internationally?)  Is this a good site or a bad site? l What about sites that list/link themselves?  Is haz.ardo.us there? l Website of all the sites that don’t list themselves?  Is notlisted.com listed on notlisted.com ?

Compsci 101, Fall halting module/problem: writing doesHalt """ function doesHalt returns True if progname halts when run on input, and False if progname doesn't halt (infinite loop) """ def doesHalt(progname,input): #code here name = "SpreadingNews.py" data = "input.txt" if doesHalt(name,data): print "program ended!" We're assuming doesHalt exists – how to use it?  It works for any program and any data! Not just one, that's important in this context

Compsci 101, Fall How to tell if X stops/halts on Y import halting def runHalt(): prog = "SpreadingNews.py"; input = "["abc", "def", "hij"]" if halting.doesHalt(prog,input): print prog,"stops" else: print prog,"loops 4ever" l Can user enter name of program, X? Input, Y?  What's the problem with this program?

Compsci 101, Fall Consider this module Confuse.py import halting print "enter name of program", prog = raw_input() if halting.doesHalt(prog,prog): while True: pass print "finished" We want to show writing doesHalt is impossible  Proof by contradiction:  Assume possible, show impossible situation results l Can a program read a program? Itself?

Compsci 101, Fall Some problems take forever, but … l Can we visit all cities, no repeats, using Southwest, for less than $123,  RDU->MCO->…->…->…->…->DEN  RDU->DEN->…->…->…->…->MCO  repeat and test, what's the issue here?  Can we find shortest path for packets on Internet? Yes!  Can we find longest path for silent meditation? No!  We don't know how, but if we did!!! l Contrast towers of Hanoi, 2 n moves always!

Compsci 101, Fall Are hard problems easy? Clay PrizeClay Prize l P = easy problems, NP = “hard” problems  P means solvable in polynomial time Difference between N, N 2, N 10 ?  NP means non-deterministic, polynomial time guess a solution and verify it efficiently l Question: P = NP ?  if yes, a whole class of difficult problems, the NP-complete problems, can be solved efficiently  if no, no hard problems can be solved efficiently  showing the first problem was NP complete was an exercise in intellectual bootstrapping, satisfiability/Cook/(1971)

Compsci 101, Fall How is Python like all other programming languages, how is it different?

Compsci 101, Fall A Rose by any other name…C or Java? l Why do we use [Python|Java] in courses ?  [is|is not] Object oriented  Large collection of libraries  Safe for advanced programming and beginners  Harder to shoot ourselves in the foot l Why don't we use C++ (or C)?  Standard libraries weak or non-existant (comparatively)  Easy to make mistakes when beginning  No GUIs, complicated compilation model  What about other languages?

Compsci 101, Fall Why do we learn other languages? l Perl, Python, PHP, Ruby, C, C++, Java, Scheme, ML,  Can we do something different in one language? In theory: no; in practice: yes  What languages do you know? All of them.  In what languages are you fluent? None of them l In later courses why do we use C or C++?  Closer to the machine, understand abstractions at many levels  Some problems are better suited to one language

Compsci 101, Fall Find all unique/different words in a file Across different languages: do these languages have the same power?

Compsci 101, Fall Unique Words in Python #! /usr/bin/env python def main(): f = open('/data/melville.txt', 'r') words = f.read().strip().split() allWords = set() for w in words: allWords.add(w) for word in sorted(allWords): print word if __name__ == "__main__": main()

Compsci 101, Fall Unique words in Java import java.util.*; import java.io.*; public class Unique { public static void main(String[] args) throws IOException{ Scanner scan = new Scanner(new File("/data/melville.txt")); TreeSet set = new TreeSet (); while (scan.hasNext()){ String str = scan.next(); set.add(str); } for(String s : set){ System.out.println(s); }

Compsci 101, Fall Unique words in C++ #include using namespace std; int main(){ ifstream input("/data/melville.txt"); set unique; string word; while (input >> word){ unique.insert(word); } set ::iterator it = unique.begin(); for(; it != unique.end(); it++){ cout << *it << endl; } return 0; }

Compsci 101, Fall Unique words in PHP <?php $wholething = file_get_contents("file:///data/melville.txt"); $wholething = trim($wholething); $array = preg_split("/\s+/",$wholething); $uni = array_unique($array); sort($uni); foreach ($uni as $word){ echo $word." "; } ?>

Compsci 101, Fall Kernighan and Ritchie l First C book, 1978 l First ‘hello world’ l Ritchie: Unix too!  Turing award 1983 l Kernighan: tools  Strunk and White l Everyone knows that debugging is twice as hard as writing a program in the first place. So if you are as clever as you can be when you write it, how will you ever debug it? Brian Kernighan

Compsci 101, Fall How do we read a file in C? #include int strcompare(const void * a, const void * b){ char ** stra = (char **) a; char ** strb = (char **) b; return strcmp(*stra, *strb); } int main(){ FILE * file = fopen("/data/melville.txt","r"); char buf[1024]; char ** words = (char **) malloc(5000*sizeof(char **)); int count = 0; int k;

Compsci 101, Fall Storing words read when reading in C while (fscanf(file,"%s",buf) != EOF){ int found = 0; // look for word just read for(k=0; k < count; k++){ if (strcmp(buf,words[k]) == 0){ found = 1; break; } if (!found){ // not found, add to list words[count] = (char *) malloc(strlen(buf)+1); strcpy(words[count],buf); count++; } l Complexity of reading/storing? Allocation of memory ?

Compsci 101, Fall Sorting, Printing, Freeing in C qsort(words,count,sizeof(char *), strcompare); for(k=0; k < count; k++) { printf("%s\n",words[k]); } for(k=0; k < count; k++){ free(words[k]); } free(words); } l Sorting, printing, and freeing  How to sort? Changing sorting mechanism?  Why do we call free? Where required?