University of Maine School of Computing and Information Science COS 470/570

Size: px
Start display at page:

Download "University of Maine School of Computing and Information Science COS 470/570"

Transcription

1 University of Maine School of Computing and Information Science COS 470/570 Assignment 1: Lisp and Robot Familiarization Assigned 8/28 Due 9/13 This assignment is meant to familiarize you with the tools you ll need in other assignments this semester. There are two parts, a Lisp assignment and a robot assignment. 1 Lisp Lisp is one of the primary languages used in AI, and most things you will do in this class will be in Lisp. Aside from this, there are other reasons to learn (or review) Lisp. For one thing, it is one of the most rapidly-growing languages in terms of use. In addition, many programs and other languages use concepts and, more often, syntax from Lisp, and some programs use Lisp itself. Also, learning different languages, especially ones that are quite different from ones they know, is a very good thing for computer science majors and it s required for accreditation. And, finally, if past experience is any guide, some of you might find that you fall in love with the language and want to keep using it. What others have said about Lisp: 1 Lisp is a programmable programming language. John Foderaro One of the most important and fascinating of all computer languages is Lisp... Douglas Hofstadter, Gödel, Escher, Bach: an Eternal Golden Braid The greatest single programming language ever designed. Alan Kay Lisp isn t a language, its a building material. Alan Kay Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot. Eric S. Raymond, How to Become a Hacker Emacs is written in Lisp, which is the only computer language that is beautiful. Neal Stephenson, In the Beginning was the Command Line 1 From wikiquote 2 via CLiki.

2 Greenspun s Tenth Rule: Any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp. 1.1 Getting started The first hurdle to using Lisp is finding and installing a Lisp interpreter. While the School has Lisp installed on the cluster in Neville Hall, you will probably want Lisp running on your own computer. Luckily, Lisp is very easy to find and install, whether you use Linux, a Mac, or Windows. The very simplest thing to do is to go to common-lisp.net 3 and download Lispbox 4, a free, preconfigured Lisp environment. This includes the Steel Bank Common Lisp interpreter (SBCL), the Emacs editor, the SLIME Emacs Lisp interface, a library manager (Quicklisp), and a compiler (Clozure). If you are more of a do-it-yourselfer, then you can download a Lisp interpreter and use it with whatever editor you want. (I strongly suggest Emacs, since it is an extraordinarily powerful editor that has a long history of playing nice with Lisp in fact, most of Emacs is written in Lisp.) I use SBCL on my Mac and Allegro Common Lisp on both Mac and Linux. SBCL is free and available from Allegro Common Lisp is an industrial-strength commercial Lisp, but the folks who sell it, Franz, Inc., have been gracious enough to provide a free version. You can get it at Franz s web site 5. I will also pass out a packet of information about using Emacs and Lisp. It is tailored, primarily for historical reasons, toward using Allegro CL. However, much of its information also applies to SBCL. With respect to programming in Lisp, early in the semester, I will have a two-hour Lisp review to help you become familiar (or refamiliarize yourself) with the language. The recommended textbook can also teach you Lisp rather quickly. In addition, there are many on-line resources for learning Lisp. A good place to look for these, and many other things Lisp-related, is at the Common Lisp Wiki, CLiki 6 or at Common-Lisp.net. 1.2 The Assignment For this assignment, you will do each of the following exercises. You will need to format and comment your code as described in the Lisp packet I will pass out. You will turn in your code and examples of it running electronically to cos470@umcs.maine.edu 1. first2: Simple list manipulation. Write a function, first2, that takes a list as its argument and returns the first two elements of that list as a new list. Note: this should return a list, not a dotted pair. For example, > (first2 (a b c d e f)) (a b) In this example and those to follow, the > sign means a Lisp interpreter prompt, with the line after being the result of evaluating the Lisp expression after the prompt

3 2. add1: Simple math. Write a function, add1, that takes an integer as an argument and returns that integer plus listadd: Recursion and iteration. (a) Write a function, listadd1, that will add 1 to each element in a list of integers: > (listadd1 ( )) ( ) This function should use recursion to do this. (b) Write another function, listadd2, that uses mapcar to do the same thing. (c) Write another function, listadd3, that uses one of Lisp s loop constructs (e.g., dolist, dotimes, or loop) to do the same thing. 4. flatten: Complex recursion. Write a recursive function, flatten, that takes as an argument a list that can include embedded lists and returns a list in which the embedded parentheses have been removed i.e., a list whose elements are all of the elements of all of the embedded lists. For example, > (flatten (a (b c) d (e (f (g (h) i))) j)) (A B C D E F G H I J) 5. last2: More complex list manipulation. Write a function, last2, that takes a list as its argument and returns the last two elements, e.g.: > (last2 (a b c d e)) (D E) 6. my-reverse: More complex list manipulation and recursion. Write a function, reverse, that reverses the order of the elements in a list: > (my-reverse (a b c 1 2 3)) (3 2 1 C B A) You must use recursion, and you may not use the built-in reverse function! 7. printlist: Using formatted output. Lisp has a function, format, for producing formatted output that is similar to C s printf facility. Use this function to write a function, printlist, that takes a list as an argument and produces the following output: > (printlist ( )) ;; "..." here replaces First element: 1 ;; the actual elements Second element: 2 Third element: 3 Fourth element: 4 Fifth element: 5 Sixth element: 6 Seventh element: 7 Eighth element: 8 Ninth element: 9 Tenth element: 10 Eleventh element: 11 ;;... etc.... Ninety-ninth element: 99 One hundredth element: 100 NIL CL-USER(15): 3

4 This should work for any list, with any number of elements (which need not be numeric). Note: the words first, second, etc., are ordinal numbers generated by format. Also note that format should be used to automatically capitalize the ordinal numbers. In order to do this problem, you ll need documentation for the format statement. The definitive source is Common Lisp: The Language, 2nd ed. 7, by Guy Steele. 8. copyfile: File IO. Write a function, copyfile, that takes two file names as arguments and copies the contents of the first file to the second. You cannot simply use Lisp s shell interface to get the operating system to do it for you. As in any programming language, you ll need to open and close the files. In Lisp, the easy way to do this is with the with-open-file special form; for example, to open a file foo and read all its contents, you could do: (with-open-file (in "foo" :direction :input) (loop with line with i = 1 until (eql :eof (setq line (read-line in nil :eof))) do (format t "Read line ~s~%" i) (incf i))) In this, in is a stream variable (which doesn t have to have the name in ) that is read from. This form is also used to write to files, with some slight changes, e.g.: (with-open-file (out "bar" :direction :output :if-exists :supersede :if-does-not-exist :create)...) You can use read to read an entire Lisp expression and write or print to write such an expression. You can read a line at a time with read-line and write an entire line with write-line. 2 Robots There are some very simple robots available for the class. Later, we will use them at least as simple agents, and hopefully for more as the semester progresses. This assignment will familiarize you with the robot Scribbler/Fluke robots. The robots we have were developed by Georgia Robotics (associated with Georgia Tech and Bryn Mawr College) for teaching introductory computer science. They are based on a very simple robot body, Parallax s Scribbler. By itself, the Scribbler robot from Parallax 8, has a very simple on-board computer, a BASIC Stamp. This is a microcontroller that is programmed using PBASIC. It has several sensors, including light sensors, IR (infrared) detectors, and a line detector (for line-following behavior). Effectors are primarily the wheels, but also some LEDs and a speaker. To this, Georgia Robotics added an IPRE (Institute for Personal Robots in Education) Fluke 9 board. This adds some additional IR sensors for object detection, some additional LEDs, and a color camera. Due to the configuration of the robot, the Fluke board mounts on the back, which means that the back of the robot now becomes the front. A benefit of this is that the robot + board now has IR sensors on the front and back. However, the biggest benefit of the board is that it adds Bluetooth communication. This is used to enable communication with an off-robot computer, such as a laptop, that can then remotely wiki.roboteducation.org 4

5 control the robot. The user can write programs in Python to control the robot, using the Myro robot control software 10. In this assignment, you will use Python to control the robot. However, I am currently in the process of writing a Lisp-to-Python interface that will allow your AI programs in future, written (of course) in Lisp, to interface with the robot directly. (If you choose to use a robot for your final project, then for that you may control it using either language.) 2.1 Getting Started First, you will need to check out a robot from me. It is likely, given the size of the class, that you will have a robot all to yourself. Otherwise, you may be asked to share. Your primary on-line resource for setting up and using the robot is the Wiki created by Institute for Personal Robots in Education 11 (IPRE), a joint project of Georgia Tech, Bryn Mawr College, and Microsoft research. The URL for this Wiki is: wiki.roboteducation.org In particular, you will find information on the Wiki about how to install Myro on your computer. There are instructions for Windows, Mac OS, and Linux. You will also find a version of the Myro reference manual that comes in print form with the robots. 2.2 The Assignment Your assignment is simple: set up and get familiar with a Scribbler/Fluke robot. Since we have only a few robots that are not in use already, you will need to share a robot with a partner. You may choose to work on the assignment together, or work individually, sharing the robot. The parts of this assignment are: 1. Check out a robot from me. 2. Install the Myro software on your computer. 3. Upgrade the firmware of the robot, if needed. (Instructions about how to do this are provided in the installation instructions.) 4. Make the robot execute the following algorithm: Begin: For i from 1 to 4 do: Take a picture and display it. Move 2 meters forward. Turn 90 degrees right. end for; end. 5. Make the robot do something cool. There s not much to turn in for this: just a short ( 1 page, probably) write-up noting any problems you had and telling me what cool thing you got the robot to do. Turn this in electronically. If you want, you can also turn in (via or by posting on a Web site) a video of the cool assignment. 10 wiki.roboteducation.org/myro_reference_manual 11 wiki.roboteduction.org/institute_for_personal_robots_in_education 5

INF4820: Algorithms for Artificial Intelligence and Natural Language Processing. Common Lisp Fundamentals

INF4820: Algorithms for Artificial Intelligence and Natural Language Processing. Common Lisp Fundamentals INF4820: Algorithms for Artificial Intelligence and Natural Language Processing Common Lisp Fundamentals Stephan Oepen & Murhaf Fares Language Technology Group (LTG) August 30, 2017 Last Week: What is

More information

INF4820: Algorithms for Artificial Intelligence and Natural Language Processing. More Common Lisp

INF4820: Algorithms for Artificial Intelligence and Natural Language Processing. More Common Lisp INF4820: Algorithms for Artificial Intelligence and Natural Language Processing More Common Lisp Stephan Oepen & Murhaf Fares Language Technology Group (LTG) September 6, 2017 Agenda 2 Previously Common

More information

Gene Kim 9/9/2016 CSC 2/444 Lisp Tutorial

Gene Kim 9/9/2016 CSC 2/444 Lisp Tutorial Gene Kim 9/9/2016 CSC 2/444 Lisp Tutorial About this Document This document was written to accompany an in-person Lisp tutorial. Therefore, the information on this document alone is not likely to be sufficient

More information

Week - 01 Lecture - 04 Downloading and installing Python

Week - 01 Lecture - 04 Downloading and installing Python Programming, Data Structures and Algorithms in Python Prof. Madhavan Mukund Department of Computer Science and Engineering Indian Institute of Technology, Madras Week - 01 Lecture - 04 Downloading and

More information

Department of Computer and information Science Norwegian University of Science and Technology

Department of Computer and information Science Norwegian University of Science and Technology Department of Computer and information Science Norwegian University of Science and Technology http://www.idi.ntnu.no/ A Crash Course in LISP MNFIT272 2002 Anders Kofod-Petersen anderpe@idi.ntnu.no Introduction

More information

A little bit of Lisp

A little bit of Lisp B.Y. Choueiry 1 Instructor s notes #3 A little bit of Lisp Introduction to Artificial Intelligence CSCE 476-876, Fall 2017 www.cse.unl.edu/~choueiry/f17-476-876 Read LWH: Chapters 1, 2, 3, and 4. Every

More information

Symbolic Computation and Common Lisp

Symbolic Computation and Common Lisp Symbolic Computation and Common Lisp Dr. Neil T. Dantam CSCI-56, Colorado School of Mines Fall 28 Dantam (Mines CSCI-56) Lisp Fall 28 / 92 Why? Symbolic Computing: Much of this course deals with processing

More information

Lecture Notes on Lisp A Brief Introduction

Lecture Notes on Lisp A Brief Introduction Why Lisp? Lecture Notes on Lisp A Brief Introduction Because it s the most widely used AI programming language Because Prof Peng likes using it Because it s good for writing production software (Graham

More information

Symbolic Programming. Dr. Zoran Duric () Symbolic Programming 1/ 89 August 28, / 89

Symbolic Programming. Dr. Zoran Duric () Symbolic Programming 1/ 89 August 28, / 89 Symbolic Programming Symbols: +, -, 1, 2 etc. Symbolic expressions: (+ 1 2), (+ (* 3 4) 2) Symbolic programs are programs that manipulate symbolic expressions. Symbolic manipulation: you do it all the

More information

n! = 1 * 2 * 3 * 4 * * (n-1) * n

n! = 1 * 2 * 3 * 4 * * (n-1) * n The Beauty and Joy of Computing 1 Lab Exercise 9: Problem self-similarity and recursion Objectives By completing this lab exercise, you should learn to Recognize simple self-similar problems which are

More information

Intro. Scheme Basics. scm> 5 5. scm>

Intro. Scheme Basics. scm> 5 5. scm> Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if

More information

Computer Science 322 Operating Systems Mount Holyoke College Spring Topic Notes: C and Unix Overview

Computer Science 322 Operating Systems Mount Holyoke College Spring Topic Notes: C and Unix Overview Computer Science 322 Operating Systems Mount Holyoke College Spring 2010 Topic Notes: C and Unix Overview This course is about operating systems, but since most of our upcoming programming is in C on a

More information

Scripted Components: Problem. Scripted Components. Problems with Components. Single-Language Assumption. Dr. James A. Bednar

Scripted Components: Problem. Scripted Components. Problems with Components. Single-Language Assumption. Dr. James A. Bednar Scripted Components: Problem Scripted Components Dr. James A. Bednar jbednar@inf.ed.ac.uk http://homepages.inf.ed.ac.uk/jbednar (Cf. Reuse-Oriented Development; Sommerville 2004 Chapter 4, 18) A longstanding

More information

Scripted Components Dr. James A. Bednar

Scripted Components Dr. James A. Bednar Scripted Components Dr. James A. Bednar jbednar@inf.ed.ac.uk http://homepages.inf.ed.ac.uk/jbednar SAPM Spring 2012: Scripted Components 1 Scripted Components: Problem (Cf. Reuse-Oriented Development;

More information

SCHEME AND CALCULATOR 5b

SCHEME AND CALCULATOR 5b SCHEME AND CALCULATOR 5b COMPUTER SCIENCE 6A July 25, 203 In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme programs,

More information

CSCE476/876 Fall Homework 3: Programming Assignment Using Emacs and Common Lisp. 1 Exercises (15 Points) 2. 2 Find (6 points) 4

CSCE476/876 Fall Homework 3: Programming Assignment Using Emacs and Common Lisp. 1 Exercises (15 Points) 2. 2 Find (6 points) 4 CSCE476/876 Fall 2018 Homework 3: Programming Assignment Using Emacs and Common Lisp Assigned on: Monday, September 10 th, 2018. Due: Monday, September 24 th, 2018. Contents 1 Eercises (15 Points) 2 2

More information

Common Lisp. In Practical Usage

Common Lisp. In Practical Usage Common Lisp In Practical Usage Contents A walk through Lisp history What the man in the street seems to think Some highlights of Common Lisp Lisp in production History The Beginnings Lisp grew from a

More information

UMaine COS 470/570: Emacs & Lisp Information

UMaine COS 470/570: Emacs & Lisp Information UMaine COS 470/570: Emacs & Lisp Information Roy M. Turner Spring 2017 Contents 1 What is Lisp, anyway? 4 2 Getting the software 5 2.1 Pre-packaged Lisp+Emacs................................. 5 2.2 Installing

More information

A Brief Introduction to Scheme (I)

A Brief Introduction to Scheme (I) A Brief Introduction to Scheme (I) Philip W. L. Fong pwlfong@cs.uregina.ca Department of Computer Science University of Regina Regina, Saskatchewan, Canada Scheme Scheme I p.1/44 Scheme: Feature Set A

More information

Introduction to Lisp

Introduction to Lisp Last update: February 16, 2010 Introduction to Lisp Dana Nau Dana Nau 1 Outline I assume you know enough about computer languages that you can learn new ones quickly, so I ll go pretty fast If I go too

More information

Intro to Programming. Unit 7. What is Programming? What is Programming? Intro to Programming

Intro to Programming. Unit 7. What is Programming? What is Programming? Intro to Programming Intro to Programming Unit 7 Intro to Programming 1 What is Programming? 1. Programming Languages 2. Markup vs. Programming 1. Introduction 2. Print Statement 3. Strings 4. Types and Values 5. Math Externals

More information

SCHEME The Scheme Interpreter. 2 Primitives COMPUTER SCIENCE 61A. October 29th, 2012

SCHEME The Scheme Interpreter. 2 Primitives COMPUTER SCIENCE 61A. October 29th, 2012 SCHEME COMPUTER SCIENCE 6A October 29th, 202 In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme programs, we will eventually

More information

SCHEME 7. 1 Introduction. 2 Primitives COMPUTER SCIENCE 61A. October 29, 2015

SCHEME 7. 1 Introduction. 2 Primitives COMPUTER SCIENCE 61A. October 29, 2015 SCHEME 7 COMPUTER SCIENCE 61A October 29, 2015 1 Introduction In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme programs,

More information

CSCI 2041: Advanced Language Processing

CSCI 2041: Advanced Language Processing CSCI 2041: Advanced Language Processing Chris Kauffman Last Updated: Wed Nov 28 13:25:47 CST 2018 1 Logistics Reading OSM: Ch 17 The Debugger OSM: Ch 13 Lexer and Parser Generators (optional) Practical

More information

Robot Programming with Lisp

Robot Programming with Lisp 2. Imperative Programming Institute for Artificial University of Bremen Lisp the Language LISP LISt Processing language 2 Lisp the Language LISP LISt Processing language (LISP Lots of Irritating Superfluous

More information

CS 480. Lisp J. Kosecka George Mason University. Lisp Slides

CS 480. Lisp J. Kosecka George Mason University. Lisp Slides CS 480 Lisp J. Kosecka George Mason University Lisp Slides Symbolic Programming Symbols: +, -, 1, 2 etc. Symbolic expressions: (+ 1 2), (+ (* 3 4) 2) Symbolic programs are programs that manipulate symbolic

More information

Common LISP Tutorial 1 (Basic)

Common LISP Tutorial 1 (Basic) Common LISP Tutorial 1 (Basic) CLISP Download https://sourceforge.net/projects/clisp/ IPPL Course Materials (UST sir only) Download https://silp.iiita.ac.in/wordpress/?page_id=494 Introduction Lisp (1958)

More information

AP Computer Science Unit 1. Writing Programs Using BlueJ

AP Computer Science Unit 1. Writing Programs Using BlueJ AP Computer Science Unit 1. Writing Programs Using BlueJ 1. Open up BlueJ. Click on the Project menu and select New Project. You should see the window on the right. Navigate to wherever you plan to save

More information

Computer Vision With Scribbler Robots

Computer Vision With Scribbler Robots Computer Vision With Scribbler Robots Jillian Pyle And Clark Rinker The Evergreen State College June 3, 2010 1 Introduction For the last five months we have been working on our project involving the scribbler

More information

Homework 1. Notes. What To Turn In. Unix Accounts. Reading. Handout 3 CSCI 334: Spring, 2017

Homework 1. Notes. What To Turn In. Unix Accounts. Reading. Handout 3 CSCI 334: Spring, 2017 Homework 1 Due 14 February Handout 3 CSCI 334: Spring, 2017 Notes This homework has three types of problems: Self Check: You are strongly encouraged to think about and work through these questions, but

More information

A Basic Guide to Using Matlab in Econ 201FS

A Basic Guide to Using Matlab in Econ 201FS A Basic Guide to Using Matlab in Econ 201FS Matthew Rognlie February 1, 2010 Contents 1 Finding Matlab 2 2 Getting Started 2 3 Basic Data Manipulation 3 4 Plotting and Finding Returns 4 4.1 Basic Price

More information

Imperative, OO and Functional Languages A C program is

Imperative, OO and Functional Languages A C program is Imperative, OO and Functional Languages A C program is a web of assignment statements, interconnected by control constructs which describe the time sequence in which they are to be executed. In Java programming,

More information

Computer Science 2500 Computer Organization Rensselaer Polytechnic Institute Spring Topic Notes: C and Unix Overview

Computer Science 2500 Computer Organization Rensselaer Polytechnic Institute Spring Topic Notes: C and Unix Overview Computer Science 2500 Computer Organization Rensselaer Polytechnic Institute Spring 2009 Topic Notes: C and Unix Overview This course is about computer organization, but since most of our programming is

More information

Debugging in LISP. trace causes a trace to be printed for a function when it is called

Debugging in LISP. trace causes a trace to be printed for a function when it is called trace causes a trace to be printed for a function when it is called ;;; a function that works like reverse (defun rev (list) (cons (first (last list)) (rev (butlast list)))) USER: (trace rev) ; note trace

More information

Artificial Intelligence. Section Notes: Week 1 September 2, 2010

Artificial Intelligence. Section Notes: Week 1 September 2, 2010 Artificial Intelligence Section Notes: Week 1 September 2, 2010 1 About the TA and Section Dwight Bell DwightBell@gmail.com (617) 752-2311 (google) (508) 740-0469 (cell) Section Website http://www.fas.harvard.edu/~lib220

More information

Reversing. Time to get with the program

Reversing. Time to get with the program Reversing Time to get with the program This guide is a brief introduction to C, Assembly Language, and Python that will be helpful for solving Reversing challenges. Writing a C Program C is one of the

More information

LISP. Everything in a computer is a string of binary digits, ones and zeros, which everyone calls bits.

LISP. Everything in a computer is a string of binary digits, ones and zeros, which everyone calls bits. LISP Everything in a computer is a string of binary digits, ones and zeros, which everyone calls bits. From one perspective, sequences of bits can be interpreted as a code for ordinary decimal digits,

More information

CS1 Lecture 3 Jan. 22, 2018

CS1 Lecture 3 Jan. 22, 2018 CS1 Lecture 3 Jan. 22, 2018 Office hours for me and for TAs have been posted, locations will change check class website regularly First homework available, due Mon., 9:00am. Discussion sections tomorrow

More information

Getting Started with Python

Getting Started with Python Getting Started with Python Python is a general purpose, high level programming language that is used in a variety of application domains. The Python language has a very clear and expressive syntax as

More information

Lecture #2 Kenneth W. Flynn RPI CS

Lecture #2 Kenneth W. Flynn RPI CS Outline Programming in Lisp Lecture #2 Kenneth W. Flynn RPI CS Items from last time Recursion, briefly How to run Lisp I/O, Variables and other miscellany Lists Arrays Other data structures Jin Li lij3@rpi.edu

More information

Announcement. Overview. LISP: A Quick Overview. Outline of Writing and Running Lisp.

Announcement. Overview. LISP: A Quick Overview. Outline of Writing and Running Lisp. Overview Announcement Announcement Lisp Basics CMUCL to be available on sun.cs. You may use GNU Common List (GCL http://www.gnu.org/software/gcl/ which is available on most Linux platforms. There is also

More information

Hello Button. An Introduction to Tcl/Tk

Hello Button. An Introduction to Tcl/Tk Hello Button An Introduction to Tcl/Tk Peter D. Hiscocks, James Gaston Syscomp Electronic Design Limited www.syscompdesign.com phiscock@ee.ryerson.ca May 16, 2006 Revised April 28, 2007 Abstract This paper

More information

Common Lisp: The Language By Guy L. Steele

Common Lisp: The Language By Guy L. Steele Common Lisp: The Language By Guy L. Steele Common LISP. The Language. Second Edition [Guy Steele] on Amazon.com. *FREE* shipping on qualifying offers. The defacto standard - a must-have for all LISP programmers.

More information

Communicating with the BOE-BOT

Communicating with the BOE-BOT ME 1030 Name: Due date: Introduction to Mechanical Engineering BOE BOT Collected Assignment #1 Communicating with the BOE-BOT Reading Assignment: 1. Refer to the following sections in the BOE BOT Textbook

More information

Introduction to the Emacs Editor

Introduction to the Emacs Editor Introduction to the Emacs Editor Scott D. Anderson Wellesley College Scott.Anderson@acm.org c Fall 2004 1 What is Emacs? Emacs is an editor: a program that allows you to modify files. Many of you have

More information

Symbolic Reasoning. Dr. Neil T. Dantam. Spring CSCI-561, Colorado School of Mines. Dantam (Mines CSCI-561) Symbolic Reasoning Spring / 86

Symbolic Reasoning. Dr. Neil T. Dantam. Spring CSCI-561, Colorado School of Mines. Dantam (Mines CSCI-561) Symbolic Reasoning Spring / 86 Symbolic Reasoning Dr. Neil T. Dantam CSCI-561, Colorado School of Mines Spring 2019 Dantam (Mines CSCI-561) Symbolic Reasoning Spring 2019 1 / 86 Introduction Definition: Symbolic Reasoning Inference

More information

CMSC131. Hardware and Software. Hardware

CMSC131. Hardware and Software. Hardware CMSC131 Hardware and Software Hardware Hardware is what makes up the physical machine. Two of the same type of machines can have different brands of hardware used to build them. eg : Hayes Modem -vs- US

More information

CMSC131. Hardware and Software

CMSC131. Hardware and Software CMSC131 Hardware and Software Hardware Hardware is what makes up the physical machine. Two of the same type of machines can have different brands of hardware used to build them. eg : Hayes Modem -vs- US

More information

Python is available at: https://www.python.org/ Why Python is awesome: https://www.python.org/about/success/

Python is available at: https://www.python.org/ Why Python is awesome: https://www.python.org/about/success/ The Python IDLE: Introduction This tutorial assumes you have a PYTHON 3 version of the programming language installed. (Current version at of this writing is Python 3.6) Python is available at: https://www.python.org/

More information

Lecture #24: Programming Languages and Programs

Lecture #24: Programming Languages and Programs Lecture #24: Programming Languages and Programs A programming language is a notation for describing computations or processes. These range from low-level notations, such as machine language or simple hardware

More information

5. Control Statements

5. Control Statements 5. Control Statements This section of the course will introduce you to the major control statements in C++. These control statements are used to specify the branching in an algorithm/recipe. Control statements

More information

Introduction To 64 Bit Windows Assembly Programming Epub Gratuit

Introduction To 64 Bit Windows Assembly Programming Epub Gratuit Introduction To 64 Bit Windows Assembly Programming Epub Gratuit This book introduces programmers to 64 bit Intel assembly language using the Microsoft Windows operating system. The book also discusses

More information

INF4820. Common Lisp: Closures and Macros

INF4820. Common Lisp: Closures and Macros INF4820 Common Lisp: Closures and Macros Erik Velldal University of Oslo Oct. 19, 2010 Erik Velldal INF4820 1 / 22 Topics for Today More Common Lisp A quick reminder: Scope, binding and shadowing Closures

More information

CS1 Lecture 3 Jan. 18, 2019

CS1 Lecture 3 Jan. 18, 2019 CS1 Lecture 3 Jan. 18, 2019 Office hours for Prof. Cremer and for TAs have been posted. Locations will change check class website regularly First homework assignment will be available Monday evening, due

More information

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

Functional Languages. CSE 307 Principles of Programming Languages Stony Brook University Functional Languages CSE 307 Principles of Programming Languages Stony Brook University http://www.cs.stonybrook.edu/~cse307 1 Historical Origins 2 The imperative and functional models grew out of work

More information

Senthil Kumaran S

Senthil Kumaran S Senthil Kumaran S http://www.stylesen.org/ Agenda History Basics Control Flow Functions Modules History What is Python? Python is a general purpose, object-oriented, high level, interpreted language Created

More information

Preface A Brief History Pilot Test Results

Preface A Brief History Pilot Test Results Preface A Brief History In Fall, 2005, Wanda Dann and Steve Cooper, originators of the Alice approach for introductory programming (in collaboration with Randy Pausch), met with Barb Ericson and Mark Guzdial,

More information

Allegro CL Certification Program

Allegro CL Certification Program Allegro CL Certification Program Lisp Programming Series Level I Presented by 1 About David Margolies Manager, Documentation, Franz Inc Been working with Lisp since 1984 dm@franz.com 2 About Franz Inc.

More information

Artificial Intelligence Lecture 1

Artificial Intelligence Lecture 1 Artificial Intelligence Lecture 1 istrative Matters Webpage: www.aass.oru.se/~ali/ai2008 Teacher: Amy Loutfi Hours: Fridays 10 12 Lab Assistant: Marcello Cirillo 2 istrative Matters Course book: Alison

More information

61A Lecture 28. Friday, November 4

61A Lecture 28. Friday, November 4 61A Lecture 28 Friday, November 4 The Logo Programming Language A teaching language: designed for introductory programming One syntactic form for all purposes: invoking a procedure Only two data types:

More information

AP Computer Science Unit 1. Writing Programs Using BlueJ

AP Computer Science Unit 1. Writing Programs Using BlueJ AP Computer Science Unit 1. Writing Programs Using BlueJ 1. Open up BlueJ. Click on the Project menu and select New Project. You should see the window on the right. Navigate to wherever you plan to save

More information

_CH17_525_10/31/06 CAL 101

_CH17_525_10/31/06 CAL 101 1-59863-307-4_CH17_525_10/31/06 17 One advantage that SONAR has over any other music-sequencing product I ve worked with is that it enables the user to extend its functionality. If you find yourself in

More information

CS251 Programming Languages Handout # 47 Prof. Lyn Turbak May 22, 2005 Wellesley College. Scheme

CS251 Programming Languages Handout # 47 Prof. Lyn Turbak May 22, 2005 Wellesley College. Scheme CS251 Programming Languages Handout # 47 Prof. Lyn Turbak May 22, 2005 Wellesley College 1 Scheme Overview Scheme Scheme is a block-structured, lexically-scoped, properly tail-recursive dialect of Lisp

More information

notice the '' you must have those around character values, they are not needed for integers or decimals.

notice the '' you must have those around character values, they are not needed for integers or decimals. C programming for the complete newbie Hello there im Krisis you may have seen me on irc.hackersclub.com. Well I thought it was about time to write an article like everyone else. But unlike many others

More information

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

Al al-bayt University Prince Hussein Bin Abdullah College for Information Technology Computer Science Department Al al-bayt University Prince Hussein Bin Abdullah College for Information Technology Computer Science Department 0901212 Python Programming 1 st Semester 2014/2015 Course Catalog This course introduces

More information

Mathematics. Name: Class: Transforming Life chances

Mathematics. Name: Class: Transforming Life chances Mathematics Name: Class: Transforming Life chances Children first- Aspire- Challenge- Achieve Aspire: To be the best I can be in everything that I try to do. To use the adults and resources available both

More information

Characteristic of the Proposed System. Characteristic of the Proposed System DFD. ER Diagram. Functions used DISADVANTAGES OF PRESENT WORKING SYSTEM

Characteristic of the Proposed System. Characteristic of the Proposed System DFD. ER Diagram. Functions used DISADVANTAGES OF PRESENT WORKING SYSTEM Table of contents:- Project Description Functions used Project Vision Feasibility Study Working Of Present System DISADVANTAGES OF PRESENT WORKING SYSTEM Characteristic of the Proposed System Characteristic

More information

Chris Simpkins (Georgia Tech) CS 2316 Data Manipulation for Engineers Python Overview 1 / 9

Chris Simpkins (Georgia Tech) CS 2316 Data Manipulation for Engineers Python Overview 1 / 9 http://xkcd.com/353/ Chris Simpkins (Georgia Tech) CS 2316 Data Manipulation for Engineers Python Overview 1 / 9 Python Python is a general-purpose programming language, meaning you can write any kind

More information

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. Simple Robot Simulator 2010 (SRS10) Written by Walter O. Krawec Copyright (c) 2013 Walter O. Krawec Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated

More information

Allegro CL Certification Program

Allegro CL Certification Program Allegro CL Certification Program Lisp Programming Series Level I Review David Margolies 1 Summary 1 A lisp session contains a large number of objects which is typically increased by user-created lisp objects

More information

Computer Science 21b: Structure and Interpretation of Computer Programs (Spring Term, 2004)

Computer Science 21b: Structure and Interpretation of Computer Programs (Spring Term, 2004) Computer Science 21b: Structure and Interpretation of Computer Programs (Spring Term, 2004) There are only 5 ideas in Computer Science, and by the end of this course, you ll know 3 of them --Harry Mairson

More information

ENVIRONMENT MODEL: FUNCTIONS, DATA 18

ENVIRONMENT MODEL: FUNCTIONS, DATA 18 ENVIRONMENT MODEL: FUNCTIONS, DATA 18 COMPUTER SCIENCE 61A Jon Kotker and Tom Magrino July 18, 2012 1 Motivation Yesterday, we introduced the environment model of computation as an alternative to the earlier

More information

COP 3275: Chapter 04. Jonathan C.L. Liu, Ph.D. CISE Department University of Florida, USA

COP 3275: Chapter 04. Jonathan C.L. Liu, Ph.D. CISE Department University of Florida, USA COP 3275: Chapter 04 Jonathan C.L. Liu, Ph.D. CISE Department University of Florida, USA Operators C emphasizes expressions rather than statements. Expressions are built from variables, constants, and

More information

Fractions and their Equivalent Forms

Fractions and their Equivalent Forms Fractions Fractions and their Equivalent Forms Little kids use the concept of a fraction long before we ever formalize their knowledge in school. Watching little kids share a candy bar or a bottle of soda

More information

CMPE 8 Lab 3: Introduction to the Scribbler 2 and SPIN

CMPE 8 Lab 3: Introduction to the Scribbler 2 and SPIN CMPE 8 Lab 3: Introduction to the Scribbler 2 and SPIN Lab Objectives By the end of this lab you should be able to: 1. Identify the key components of the Scribbler 2 robot. 2. Use the Propeller Tool IDE

More information

Laboratory 1: Eclipse and Karel the Robot

Laboratory 1: Eclipse and Karel the Robot Math 121: Introduction to Computing Handout #2 Laboratory 1: Eclipse and Karel the Robot Your first laboratory task is to use the Eclipse IDE framework ( integrated development environment, and the d also

More information

ag.el Documentation Release 0.45 Wilfred Hughes

ag.el Documentation Release 0.45 Wilfred Hughes ag.el Documentation Release 0.45 Wilfred Hughes Feb 25, 2018 Contents 1 Installation 3 1.1 Operating System............................................ 3 1.2 Emacs..................................................

More information

CS 106 Winter 2016 Craig S. Kaplan. Module 07 Recursion and fractals Topics. Recursion as an extension of hierarchical modelling Simple fractals

CS 106 Winter 2016 Craig S. Kaplan. Module 07 Recursion and fractals Topics. Recursion as an extension of hierarchical modelling Simple fractals CS 106 Winter 2016 Craig S. Kaplan Module 07 Recursion and fractals Topics Recursion as an extension of hierarchical modelling Simple fractals Readings Learning Processing, Section 13.11 Nature of Code,

More information

Introduction to MATLAB

Introduction to MATLAB Introduction to MATLAB Aapo Nummenmaa, PhD Athinoula A. Martinos Center for Biomedical Imaging, Massachusetts General Hospital, Harvard Medical School, Boston Background Overview! What is MATLAB?! MATLAB=(MATrix

More information

ECE 2036 Lab 1: Introduction to Software Objects

ECE 2036 Lab 1: Introduction to Software Objects ECE 2036 Lab 1: Introduction to Software Objects Assigned: Aug 24/25 2015 Due: September 1, 2015 by 11:59 PM Reading: Deitel& Deitel Chapter 2-4 Student Name: Check Off/Score Part 1: Check Off/Score Part

More information

Hello World! Computer Programming for Kids and Other Beginners. Chapter 1. by Warren Sande and Carter Sande. Copyright 2009 Manning Publications

Hello World! Computer Programming for Kids and Other Beginners. Chapter 1. by Warren Sande and Carter Sande. Copyright 2009 Manning Publications Hello World! Computer Programming for Kids and Other Beginners by Warren Sande and Carter Sande Chapter 1 Copyright 2009 Manning Publications brief contents Preface xiii Acknowledgments xix About this

More information

Reading: Chapter 17 Homework: All exercises from Chapter 17 Due: 10/27 Correction: Chapter 16 homework is due 10/25

Reading: Chapter 17 Homework: All exercises from Chapter 17 Due: 10/27 Correction: Chapter 16 homework is due 10/25 Homework Reading: Chapter 17 Homework: All exercises from Chapter 17 Due: 10/27 Correction: Chapter 16 homework is due 10/25 Copyright c 2002 2017 UMaine School of Computing and Information S 1 / 33 COS

More information

CS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 2: SEP. 8TH INSTRUCTOR: JIAYIN WANG

CS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 2: SEP. 8TH INSTRUCTOR: JIAYIN WANG CS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 2: SEP. 8TH INSTRUCTOR: JIAYIN WANG 1 Notice Class Website http://www.cs.umb.edu/~jane/cs114/ Reading Assignment Chapter 1: Introduction to Java Programming

More information

CSI Lab 02. Tuesday, January 21st

CSI Lab 02. Tuesday, January 21st CSI Lab 02 Tuesday, January 21st Objectives: Explore some basic functionality of python Introduction Last week we talked about the fact that a computer is, among other things, a tool to perform high speed

More information

Math 395 Homework #1 Due Wednesday, April 12

Math 395 Homework #1 Due Wednesday, April 12 Math 395 Homework #1 Due Wednesday, April 12 LaTex is a typesetting system that is widely used by mathematicians. It has the ability to typeset just about any mathematical notation, as well as complex

More information

CSCI 121: Anatomy of a Python Script

CSCI 121: Anatomy of a Python Script CSCI 121: Anatomy of a Python Script Python Scripts We start by a Python script: A text file containing lines of Python code. Each line is a Python statement. The Python interpreter (the python3 command)

More information

Introduction to Java Unit 1. Using BlueJ to Write Programs

Introduction to Java Unit 1. Using BlueJ to Write Programs Introduction to Java Unit 1. Using BlueJ to Write Programs 1. Open up BlueJ. Click on the Project menu and select New Project. You should see the window on the right. Navigate to wherever you plan to save

More information

A beginner s guide to (GNU) Emacs 24

A beginner s guide to (GNU) Emacs 24 A beginner s guide to (GNU) Emacs 24 Matthew Chan, themattchan.com, last updated November 2014 Part 0: Getting started Why Emacs? Emacs is the One True Editor. Emacs can do anything you can possibly think

More information

Try typing the following in the Python shell and press return after each calculation. Write the answer the program displays next to the sums below.

Try typing the following in the Python shell and press return after each calculation. Write the answer the program displays next to the sums below. Name: Date: Instructions: PYTHON - INTRODUCTORY TASKS Open Idle (the program we will be using to write our Python codes). We can use the following code in Python to work out numeracy calculations. Try

More information

Computer and Programming: Lab 1

Computer and Programming: Lab 1 01204111 Computer and Programming: Lab 1 Name ID Section Goals To get familiar with Wing IDE and learn common mistakes with programming in Python To practice using Python interactively through Python Shell

More information

LP/LispLite: Trivial Lisp Org Mode Conversion

LP/LispLite: Trivial Lisp Org Mode Conversion LP/LispLite: Trivial Lisp Org Mode Conversion Roy M. Turner Spring 2016 Contents 1 Introduction 3 2 Using the tool 3 3 Header/miscellaneous 3 4 Variables/parameters 4 4.1 Variable: =*short-comment-start-regexp*........................

More information

FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 2. ÚVOD DO LISPU: ATOMY, SEZNAMY, FUNKCE,

FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 2. ÚVOD DO LISPU: ATOMY, SEZNAMY, FUNKCE, FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 2. ÚVOD DO LISPU: ATOMY, SEZNAMY, FUNKCE, 2011 Jan Janoušek MI-FLP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti L I S P - Introduction L I S P

More information

CS2900 Introductory Programming with Python and C++ Kevin Squire LtCol Joel Young Fall 2007

CS2900 Introductory Programming with Python and C++ Kevin Squire LtCol Joel Young Fall 2007 CS2900 Introductory Programming with Python and C++ Kevin Squire LtCol Joel Young Fall 2007 Course Web Site http://www.nps.navy.mil/cs/facultypages/squire/cs2900 All course related materials will be posted

More information

Programming Fundamentals and Python

Programming Fundamentals and Python Chapter 2 Programming Fundamentals and Python This chapter provides a non-technical overview of Python and will cover the basic programming knowledge needed for the rest of the chapters in Part 1. It contains

More information

Introduction to Linux

Introduction to Linux Introduction to Linux The command-line interface A command-line interface (CLI) is a type of interface, that is, a way to interact with a computer. Window systems, punched cards or a bunch of dials, buttons

More information

AMS 200: Working on Linux/Unix Machines

AMS 200: Working on Linux/Unix Machines AMS 200, Oct 20, 2014 AMS 200: Working on Linux/Unix Machines Profs. Nic Brummell (brummell@soe.ucsc.edu) & Dongwook Lee (dlee79@ucsc.edu) Department of Applied Mathematics and Statistics University of

More information

Midterm 1 Review Document

Midterm 1 Review Document Midterm 1 Review Document CS61B Fall 2016 Antares Chen Introduction This document is meant to provide you supplementary practice questions for the upcoming midterm. It reflects all material that you will

More information

Welcome to CS61A! Last modified: Thu Jan 23 03:58: CS61A: Lecture #1 1

Welcome to CS61A! Last modified: Thu Jan 23 03:58: CS61A: Lecture #1 1 Welcome to CS61A! This is a course about programming, which is the art and science of constructing artifacts ( programs ) that perform computations or interact with the physical world. To do this, we have

More information

Homework. Reading: Chapter 17 Homework: All exercises from Chapter 17 Due: 10/27 Correction: Chapter 16 homework is due 10/25

Homework. Reading: Chapter 17 Homework: All exercises from Chapter 17 Due: 10/27 Correction: Chapter 16 homework is due 10/25 Homework Reading: Chapter 17 Homework: All exercises from Chapter 17 Due: 10/27 Correction: Chapter 16 homework is due 10/25 Copyright c 2002 2017 UMaine Computer Science Department 1 / 33 1 COS 140: Foundations

More information

by the evening of Tuesday, Feb 6

by the evening of Tuesday, Feb 6 Homework 1 Due 14 February Handout 6 CSCI 334: Spring 2018 Notes This homework has three types of problems: Self Check: You are strongly encouraged to think about and work through these questions, and

More information