Prof. Jason Eisner MWF 3-4pm (sometimes 3-4:15)

Slides:



Advertisements
Similar presentations
Lesson 1:Introduction to Programming (Python/Java)
Advertisements

101.  When you communicate with people you use a language that you both understand.  The trick is that the computer does not speak English.  To communicate.
PROGRAMMING Introduction To Programming Definition Types Of Programming Languages Programming Language Paradigm Translator
1-1 Welcome to: CSC225 Introduction to Computer Organization Paul Hatalsky.
INTERNATIONAL CONFERENCE ON NATURAL LANGUAGE PROCESSING NLP-AI IIIT-Hyderabad CIIL, Mysore ICON DECEMBER, 2003.
CPSC 411, Fall 2008: Set 12 1 CPSC 411 Design and Analysis of Algorithms Set 12: Undecidability Prof. Jennifer Welch Fall 2008.
Computer Concepts 5th Edition Parsons/Oja Page 546 CHAPTER 11 Software Engineering Section A PARSONS/OJA Computer Programming.
CSC 200 Spring 2006 Instructor: Matt Kayala. What is a “Computer”? We all use them for all kinds of tasks: –Games –Word Processing Good at repetitive.
Data Structures Introduction. What is data? (Latin) Plural of datum = something given.
CS 201 Functions Debzani Deb.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Introduction to a Programming Environment
Programming. Software is made by programmers Computers need all kinds of software, from operating systems to applications People learn how to tell the.
Programming a computer. What does programming a computer mean ? Programming a computer: Since a computer can only execute machine instructions (encoded.
CSSE 533 – Database Systems Week 1, Day 1 Steve Chenoweth CSSE Dept.
Powered by DeSiaMore1 Programming Concepts David T. Makota Department of Computing & Information Technology (CIT) The Institute of Finance Management Dar.
Programming Languages: Telling the Computers What to Do Chapter 16.
Created by NW 2012 – please note all copyright on images used is property of copyright holder. Note: some of the more complicated descriptions are taken.
Abstraction IS 101Y/CMSC 101 Computational Thinking and Design Tuesday, September 17, 2013 Carolyn Seaman University of Maryland, Baltimore County.
High level & Low level language High level programming languages are more structured, are closer to spoken language and are more intuitive than low level.
Programming Paradigms
/425 Declarative Methods - J. Eisner /425 Declarative Methods Prof. Jason Eisner MWF 3-4pm (sometimes 3-4:15)
Invitation to Computer Science, Java Version, Second Edition.
/425 Declarative Methods - J. Eisner1 Encodings and reducibility.
Algorithms and their Applications CS2004 ( ) Dr Stephen Swift 1.2 Introduction to Algorithms.
Abstraction IS 101Y/CMSC 101 Computational Thinking and Design Tuesday, September 17, 2013 Marie desJardins University of Maryland, Baltimore County.
Unit Testing Maintaining Quality. How do you test? Testing to date…
Introduction 1 (Read Chap. 1) What is Programming? For some given problem: design a solution for it -- identify, organize & store the problem's data --
CSC 108H: Introduction to Computer Programming Summer 2012 Marek Janicki.
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
FIND THE VOLUME: 5 in 8 in 4 in.
Computer Applications in Business
EGR 2261 Unit 11 Pointers and Dynamic Variables
Learning to Program D is for Digital.
CSE 374 Programming Concepts & Tools
Application Development Theory
Advanced Compilers CMPSCI 710 Spring 2003 Lecture 1
Choice of Programming Language
Chapter 15 QUERY EXECUTION.
Computer Programming.
Lecturer: Mukhtar Mohamed Ali “Hakaale”
Sussex Neuroscience Coding Club title slide
Lesson 2: Building Blocks of Programming
High Level Programming Languages
CS 179 Project Intro.
PROGRAMMING What is it?.
CSCE 411 Design and Analysis of Algorithms
Richard Anderson Autumn 2015 Lecture 8 – Greedy Algorithms II
Encodings and reducibility
Lesson 1: Fundamentals of Programming
Object Oriented Practices
CS105 Introduction to Computer Concepts Intro to programming
Greedy Algorithms: Homework Scheduling and Optimal Caching
Programming.
Programming Languages
Welcome to: CSC225 Introduction to Computer Organization
The Purpose of this Course
Richard Anderson Winter 2019 Lecture 8 – Greedy Algorithms II
Tonga Institute of Higher Education IT 141: Information Systems
Algorithms vs. Programming
Query Optimization.
Tonga Institute of Higher Education IT 141: Information Systems
Richard Anderson Autumn 2016 Lecture 8 – Greedy Algorithms II
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
Arrays.
CS105 Introduction to Computer Concepts Intro to programming
Functions, Procedures, and Abstraction
Algorithms vs. Programming
Week 1 - Friday COMP 1600.
Richard Anderson Autumn 2019 Lecture 8 – Greedy Algorithms II
Presentation transcript:

Prof. Jason Eisner MWF 3-4pm (sometimes 3-4:15) 600.325/425 Declarative Methods Prof. Jason Eisner MWF 3-4pm (sometimes 3-4:15) 600.325/425 Declarative Methods - J. Eisner

What is this course about? What do you learn in a programming course? How to use a language (e.g., Java) to solve problems How the computer actually executes that language (Why do you need to know this?) Ok, this is a programming course We’ll survey several languages But they aren’t normal languages! 600.325/425 Declarative Methods - J. Eisner

Low-level vs. high-level languages One common language Can do anything (Turing-complete) Assembler C FORTRAN Lots of different tasks Compiler has limited freedom because you told it exactly what to do Programmer has freedom to write anything. Hopefully has a lot of free time, too. Low-level: Long, detailed programs written by anal-retentive programming gurus 600.325/425 Declarative Methods - J. Eisner

Low-level vs. high-level languages As before, but better organized Reusable building blocks (objects or modules) More abstract classes Interface is closer to how you think about the task Java, C++, OCaml … Useful basic classes Written by other people Lots of different tasks Compiler has limited freedom because someone told it exactly what to do Building up high-level objects from low-level ones But language and compiler are still low-level 600.325/425 Declarative Methods - J. Eisner

Low-level vs. high-level languages A higher-level language that can also do anything (Turing-complete) English and its obscure variants (Hindi, Chinese, German, …) Boy, wouldn’t you like to write this compiler? (take 600.465 NLP) (and 600.463 Algorithms) optimizing Really high level! Programming for the masses! 600.325/425 Declarative Methods - J. Eisner

Low-level vs. high-level languages A higher-level language that can also do anything (Turing-complete) Could we make a formal English-like language? “On each line, replace every third word by x’s, then sort the words by length …” It would have to know an awful lot of concepts (line, word, third, sort, length). Maybe just make a big library of specialized objects for those concepts? Some of those objects would need to have pretty powerful methods: “Schedule the classes to minimize time conflicts.” 600.325/425 Declarative Methods - J. Eisner

Low-level vs. high-level languages Another language that can do anything (Turing-complete) What would people write in here anyway? A lot of the same kinds of stuff over and over, actually So maybe it is good to build some powerful, general, reusable objects to handle cases that are either common or hard Then you don’t waste your time doing the same kind of thing again & again And you don’t waste your time figuring out how to do something new & hard 600.325/425 Declarative Methods - J. Eisner

Low-level vs. high-level languages Several specialized high-level languages “Tools for the job” Solvers: general algorithms (sometimes can choose among several wildly different solvers) SQL or Datalog Regexp patterns Constraint programs A lot of the same kinds of stuff over and over, actually So maybe it is good to build some powerful, general, reusable objects to handle cases that are either common or hard Then you don’t waste your time doing the same kind of thing again & again And you don’t waste your time figuring out how to do something new & hard 600.325/425 Declarative Methods - J. Eisner

Low-level vs. high-level languages Several specialized high-level languages “Tools for the job” Solvers: general algorithms SQL or Datalog Regexp patterns Constraint programs Query optimization – might even compile your query into machine code before running it To tell the database about your problem, use SQL (standard query language). More expressive than calling a database method! 600.325/425 Declarative Methods - J. Eisner

600.325/425 Declarative Methods - J. Eisner

Structure of this course Intro material What are languages? What do they look like? What’s a declarative language? What’s a solver? Encoding a problem in a language Reducing one language to another; NP-hardness Several actual languages. For each: Week 1: How does this language let me encode interesting problems? Homework: Encode a real problem and run a solver. Week 2: What strategies does the solver use to solve arbitrary problems written in the language? Project of your choice (for 425 students) 600.325/425 Declarative Methods - J. Eisner