Welcome to. Instructor Marc Pomplun CS 470/670. Introduction to Artificial Intelligence 1/26/2016. Spring Selectivity in Complex Scenes

Similar documents
Chapter 11 :: Functional Languages

Functional Programming

Functional Languages. CSE 307 Principles of Programming Languages Stony Brook University

Welcome to CS 135 (Winter 2018)

Programming Language Pragmatics

Functional Programming

Functional Languages. Hwansoo Han

Functional Programming. Big Picture. Design of Programming Languages

Functional Programming Lecture 1: Introduction

Introduction to Functional Programming

Com S 541. Programming Languages I

COS 326 Functional programming: an elegant weapon for the modern age

Functional Programming Principles in Scala. Martin Odersky

Introduction to Nate Foster Spring 2018

Functional Programming

8/27/17. CS-3304 Introduction. What will you learn? Semester Outline. Websites INTRODUCTION TO PROGRAMMING LANGUAGES

CS457/557 Functional Languages

SOFTWARE ARCHITECTURE 6. LISP

Functional Programming Lecture 13: FP in the Real World

Anders Møller Michael Schwartzbach Erik Ernst Hans Hüttel

CS 565: Programming Languages. Spring 2008 Tu, Th: 16:30-17:45 Room LWSN 1106

Stop coding Pascal. Saturday, April 6, 13

COMS 1003 Fall Introduction to Computer Programming in C. History & Computer Organization. September 15 th

PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING

CS 242. Fundamentals. Reading: See last slide

Processors. Nils Jansen and Kasper Brink. (based on slides from Jeroen Keiren, Marc Seutter and David N. Jansen)

CSCE 314 TAMU Fall CSCE 314: Programming Languages Dr. Flemming Andersen. Haskell Basics

Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

Welcome to CS 135 (Fall 2018) Themes of the course. Lectures. cs135/

What computers just cannot do. COS 116: 2/28/2008 Sanjeev Arora

Lambda Calculus see notes on Lambda Calculus

COSE212: Programming Languages. Lecture 0 Course Overview

CS 314 Principles of Programming Languages

Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

Concepts of Programming Languages

Learning Scala: Practical Functional Programming For The JVM By Jason Swartz

Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)


4/19/2018. Chapter 11 :: Functional Languages

! Broaden your language horizons! Different programming languages! Different language features and tradeoffs. ! Study how languages are implemented

Recursive Functions of Symbolic Expressions and Their Computation by Machine Part I

Concepts of Programming Languages

15. Functional Programming

CS270 Computer Organization Fall 2017

Introduction. chapter Functions

CS 3110 Lecture 1 Course Overview

COS 326 Func,onal Programming: An elegant weapon for the modern age David Walker Princeton University

Introduction. A. Bellaachia Page: 1

Practice Midterm Exam Solutions

Component V Supporting Materials / Learn More Interesting Facts. Interesting Facts

ITT8060 Advanced Programming

More Lambda Calculus and Intro to Type Systems

Computers and programming languages introduction

Java Programming. Zheng-Liang Lu. Java 308 Spring Department of Computer Science & Information Engineering National Taiwan University

CS383 PROGRAMMING LANGUAGES. Kenny Q. Zhu Dept. of Computer Science Shanghai Jiao Tong University

Programming Languages 2nd edition Tucker and Noonan"

UG3 Compiling Techniques Overview of the Course

Introduction to Computing Systems: From Bits and Gates to C and Beyond 2 nd Edition

Foundations. Yu Zhang. Acknowledgement: modified from Stanford CS242

Lecture 5: The Halting Problem. Michael Beeson

1320 Principles Of Computer Science I

A Theory of Parallel Computation The π-calculus

General Concepts. Abstraction Computational Paradigms Implementation Application Domains Influence on Success Influences on Design

Week 2: The Clojure Language. Background Basic structure A few of the most useful facilities. A modernized Lisp. An insider's opinion

Introduction to Concepts in Functional Programming. CS16: Introduction to Data Structures & Algorithms Spring 2017

Wayne State University Department of Computer Science CSC 5991: Advanced Web Technologies. Functional (Scala) Programming for the Web.

CMPSCI 201: Architecture and Assembly Language

Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

CMSC 330: Organization of Programming Languages. Administrivia

Organization of Programming Languages CS3200/5200N. Lecture 11

COP4020 Programming Languages. Functional Programming Prof. Robert van Engelen

What is a programming language?

CSc 372. Comparative Programming Languages. 2 : Functional Programming. Department of Computer Science University of Arizona

by the evening of Tuesday, Feb 6

From the λ-calculus to Functional Programming Drew McDermott Posted

Functional Programming Languages (FPL)

CMSC 313 COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE PROGRAMMING LECTURE 01, SPRING 2013

Overview of the Class

Lambda Calculus LC-1

CSE 114, Computer Science 1 Course Information. Spring 2017 Stony Brook University Instructor: Dr. Paul Fodor

Al al-bayt University Prince Hussein Bin Abdullah College for Information Technology Computer Science Department

Programming Systems in Artificial Intelligence Functional Programming

Principles of Programming Languages COMP251: Functional Programming in Scheme (and LISP)

Fundamentals of Artificial Intelligence COMP221: Functional Programming in Scheme (and LISP)

Compiler Design. Dr. Chengwei Lei CEECS California State University, Bakersfield

Lecture 2. Programs and Pseudocode. Daily Puzzle

CS A331 Programming Language Concepts

To be or not programmable Dimitri Papadimitriou, Bernard Sales Alcatel-Lucent April 2013 COPYRIGHT 2011 ALCATEL-LUCENT. ALL RIGHTS RESERVED.

Class Structure. Prerequisites

Artificial Intelligence in the World. Prof. Levy Fromm Institute Spring Session, 2017


PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING

CISC 4090 Theory of Computation

61A LECTURE 1 FUNCTIONS, VALUES. Steven Tang and Eric Tzeng June 24, 2013

} Evaluate the following expressions: 1. int x = 5 / 2 + 2; 2. int x = / 2; 3. int x = 5 / ; 4. double x = 5 / 2.

LECTURE 16. Functional Programming

! Broaden your language horizons. ! Study how languages are implemented. ! Study how languages are described / specified

Overview of the Class

Recursion. Tjark Weber. Functional Programming 1. Based on notes by Sven-Olof Nyström. Tjark Weber (UU) Recursion 1 / 37

COURSE OVERVIEW. Introduction to Computer Engineering 2015 Spring by Euiseong Seo

Transcription:

Welcome to CS 470/670 Introduction to Artificial Intelligence Office: Lab: Instructor Marc Pomplun S-3-171 S-3-135 Office Hours: Tuesdays 4:00pm 5:30pm Thursdays 7:00pm 8:30pm Spring 2016 Instructor: Marc Pomplun Phone: E-Mail: 287-6443 (office) 287-6485 (lab) marc@cs.umb.edu 1 2 The Visual Attention Lab The EyeLink-2K System Eye movement research 3 4 Example: Distribution of Visual Attention 5 6 1

7 8 9 10 Modeling of Brain Functions 11 12 2

layer l +1 layer l Modeling of Brain Functions unit and connection in the interpretive network unit and connection in the gating network unit and connection in the top-down bias network Computer Vision: layer l -1 13 14 Human-Computer Interfaces: Now back to CS 470/670: Course Kit: Nils J. Nilsson, Artificial Intelligence: A New Synthesis, Morgan Kaufmann 1998, ISBN 1-55860- 467-7. On the Web: http://www.cs.umb.edu/~marc/cs470/ (contains all kinds of course information and also my slides in PPTX and PDF formats, updated after each session) 15 16 Your Evaluation 6 sets of exercises software projects: 25% non-programming questions: 10% midterm (75 minutes) 25% final exam (2.5 hours) 40% Grading For the assignments, exams and your course grade, the following scheme will be used to convert percentages into letter grades: 95%: A 90%: A- 86%: B+ 82%: B 78%: B- < 50%: F 74%: C+ 70%: C 66%: C- 62%: D+ 56%: D 50%: D- 17 18 3

Artificial Intelligence (AI) AI The History AI is as old as computing, whose theory started in the 1930 with Alan Turing, Alonzo Church, and others 1941 Konrad Zuse, Germany, general purpose computer 1943 Britain (Turing and others) Colossus, for decoding 1945 ENIAC, US. John von Neumann a consultant 1956 Dartmouth Conference organized by John McCarthy (inventor of LISP) The term Artificial Intelligence was coined at Dartmouth, which was intended as a two month study. 19 20 AI The Achievements Computers land 200 ton jumbo jets unaided every few minutes. Search systems like Google are not perfect but provide very effective information retrieval. Robots cut slots for hip joints better than surgeons. The chess program Deep Blue beat world champion Kasparov in 1997. Medical expert systems can outperform doctors in many areas of diagnosis Self-driving cars are beginning to enter the market. IBM s Watson beats humans at Jeopardy. Programs such as Siri communicate via natural language. 21 Artificial vs. Human Intelligence Today s computers can do many well-defined tasks (for example, arithmetic operations), much faster and more accurate than human beings. However, the computers interaction with their environment is not very sophisticated yet. How can we test whether a computer has reached the general intelligence level of a human being? Turing Test: Can a computer convince a human interrogator that it is a human? But before thinking of such advanced kinds of machines, we will start developing our own extremely simple intelligent machines. 22 Why AI? One of major divisions in AI (and you can see it in the definitions on the previous slide) is between Those who think AI is the only serious way of finding out how we work (since opening heads does not yet give much insight into this) and Those who want computers to do very smart things, independently of how we work. This is the important distinction between Cognitive Scientists vs. Engineers. Symbolism vs. Connectionism There is another major division in the field of Artificial Intelligence: Symbolic AI represents information through symbols and their relationships. Specific Algorithms are used to process these symbols to solve problems or deduce new knowledge. Connectionist AI represents information in a distributed, less explicit form within a network. Biological processes underlying learning, task performance, and problem solving are imitated. 23 24 4

Paradigms of Computation You all know the Turing machine, conceived by Alan Turing as a theoretical Model of automatic computation. It uses a tape head that reads and writes symbols on an infinite tape. Based on the currently read symbol and the machine s current state, the head moves to the left or right or writes a new symbol, and the state is updated. These state transition rules constitute the program. It is believed (but has not been proven) that this machine can compute all functions that can be computed in principle. 25 Turing Machines Turing machines inspired the construction of the first computers, which were based on the von-neumann architecture. Here, digital memory stores the program and data, including the machine state. A Central Processing Unit (CPU) sequentially executes individual instructions in the program through memory read and write operations. This fundamental architecture is still shared by most of today s computers. 26 Imperative Programming This architecture is also reflected in most modern programming languages such as Java, C, C++, C#, Python, or Matlab. Their programs consist of sequences of instructions, each of which changes the system s state, such as the values of variables or other memory content. Such languages are called imperative languages. Object-oriented programming provides mechanisms for encapsulation of functional program and data units but is still based on the imperative paradigm. Lambda (λ) Calculus Roughly at the same time when Turing developed his Turing machine, Alonzo Church devised a different paradigm of computation, called lambda calculus. It is based on anonymous functions described by lambda expressions. By mechanisms such as composition and recursion, lambda expressions can represent complex computations. It can be shown that Turing machines and lambda calculus have identical computational power, which is believed to be universal (Church-Turing thesis, 1937). 27 28 Lambda (λ) Calculus Lambda calculus provides a more abstract, mathematical description of an algorithm. Such descriptions are typically more concise and elegant than those provided by Turing machines. On the other hand, Turing-machine style computation can be directly translated into hardware, which is much more difficult for lambda calculus. Nevertheless, there are programming languages that are based on lambda calculus, and they are referred to as functional languages. The most striking feature of purely functional programming is that there is no state. This means that our variables are not variable, i.e., cannot change their values! In other words, they are immutable and only represent some constant value. The execution of a program only involves the evaluation of functions. This sounds weird what are the advantages and disadvantages of functional programming? 29 30 5

The advantage of having no state is that functions have no side effects. Therefore, we can be sure that whenever we evaluate a function with the same inputs, we will get the same output, and nothing in our system changed due to this evaluation. This prevents most of the bugs that commonly occur in imperative programming. You will learn about other advantages during the next few lectures The main problem with strictly preventing side effects is that user input and output during program execution become impossible. To enable such user interaction, we have to sometimes allow state changes. It is then important to separate such impure code from the rest of the program. There are many functional languages, with some being as old as the earliest imperative ones. Examples are: LISP, Scheme, Haskell, Erlang, R, Clojure, Scala, OCaml, and F#. 31 32 Functional programming is not the best solution to every problem, just like object-oriented programming is not, either. In the context of symbolic AI, you will see how functional programming allows you to write very concise, readable, and reusable code. Even if you rarely or never use it again afterwards, it will give you a different perspective on programming and may change the way you program. Haskell and Frege In this course, we will use Haskell, because its purity forces you to use functional programming principles. Specifically, we will use its dialect Frege, which generates code for the Java Virtual Machine. This way your programs can interact with Java programs, especially the Isola game interface for our tournament. 33 34 Frege Resources I recommend that you read Chapters 1 and 2 of Learn you a Haskell and experiment with the language a bit. Frege Resources Free Haskell tutorials: http://learnyouahaskell.com/ http://book.realworldhaskell.org/ Differences between Haskell and Frege: https://github.com/frege/frege/wiki/differencesbetween-frege-and-haskell You can play around with Frege online: http://try.frege-lang.org/ Get the Frege compiler here: https://github.com/frege/frege Here is a Frege plugin for Eclipse: https://github.com/frege/eclipse-plugin You should definitely look at the plugin tutorial: https://github.com/frege/eclipse-plugin/wiki/fregide- Tutorial 35 36 6