Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Welcome to CISC101 Elements of Computing Science I ILC213, Tuesdays and Thursdays 9:00am, May 2 to June 10 Prof. Alan McLeod ([email protected]) Goodwin Hall Rm.550 TA – Lili Barbour ([email protected]) Spring 2006 CISC101 - Prof. McLeod 1 Course Web Site • Note that all my lecture slides are (or will be!) on the web site: http://www.cs.queensu.ca/home/cisc101spring • Site also has syllabus, lab exercises, and will have links to assignments when they have been written. Spring 2006 CISC101 - Prof. McLeod 2 Today • Introduction to course – – – – – Introduce TA? Introduce students! Overview of Syllabus Grading Textbook • What’s an algorithm? • What’s a program? • What is “Java” and why use it? Spring 2006 CISC101 - Prof. McLeod 3 Introductions All Round! • Can you log in? Go to course web site: www.cs.queensu.ca/home/cisc101spring • (Later – try logging into WebCT site). • Who wants to use a computer at home? • Who will use a textbook? • What’s your computer background? • What do you want to get out of this course? Spring 2006 CISC101 - Prof. McLeod 4 Lab/Tutorial • Lab is Jeffrey Hall 155 (basement) • When? Up to you! – Tuesday afternoon? – Wednesday? – Thursday afternoon? • No lab this week before our Thursday lecture. Spring 2006 CISC101 - Prof. McLeod 5 What is the Course About? • How to create algorithms. • How to build a program from an algorithm. • How to use programming elements common to modern computer languages. • Provide a basic foundation for further development of your programming skills. • Having fun, whenever possible! Spring 2006 CISC101 - Prof. McLeod 6 Course Topics - Programming • Java basics – – – – – – – – Variable declaration Expressions Conditionals Loops Input/Output (“I/O”) Methods Arrays … Spring 2006 CISC101 - Prof. McLeod 7 Course Topics - Generic • How to express a sequence of steps as an algorithm. • How to code an algorithm so that a computer can carry out the steps. • Learn good coding style and how to create documentation. • Learn debugging techniques. • Writing efficient code. • Learn some useful algorithms. Spring 2006 CISC101 - Prof. McLeod 8 Grading • The scheme: 25% assignments 25% midterm 50% final exam Spring 2006 CISC101 - Prof. McLeod 9 What Else? • Keep an eye on the web site - especially the main page. New content is frequently added, and the main page contains announcements. • Make sure I have your preferred E-mail address. • Any questions? Spring 2006 CISC101 - Prof. McLeod 10 What is an Algorithm? • An experiment: – Suppose we need to tell someone who has never washed socks before (like my 18yr old son…) how to roll them up. – We know they have two hands and understand English. – No graphics allowed! Spring 2006 CISC101 - Prof. McLeod 11 Socks - Cont. • Observations – Not always easy to provide precise instructions! – Parts of the instructions are repetitious - it is nice to have some mechanism to allow us to repeat some “blocks” of instructions. – Suppose we did such a good job with these instructions that we were hired to write similar instructions for other clothing items - it would be nice to re-use some parts of these instructions… – Anything else? Spring 2006 CISC101 - Prof. McLeod 12 So, What is an Algorithm? • We just developed one! • A set of precise, unambiguous instructions that lead to the solution of a problem. Spring 2006 CISC101 - Prof. McLeod 13 What is a Program? • The sock instructions were in English. • If we have to communicate an algorithm to a computer, we’ll need to use a language that is more easily interpreted than English. • A computer “language” is a very small subset of the human communication language. • That’s because computers are very stupid!! • They only do exactly what you tell them. Spring 2006 CISC101 - Prof. McLeod 14 Computer Architecture (PC) Spring 2006 CISC101 - Prof. McLeod 15 Acronyms!! • CPU - “Central Processing Unit” – The heart of the computer. – Consists of millions of transistors on a single chip. – Next slide shows the physical layout of a pentium chip. Spring 2006 CISC101 - Prof. McLeod 16 Spring 2006 CISC101 - Prof. McLeod 17 CPU - Cont. • The latest: Dual Core – two processors on one chip! • As hardware, they are characterized by their clock speed, which controls the number of operations per second that they can carry out. • The first PC contained an 8080 chip, introduced in 1979 that had a clock speed of 2 MHz or (2,000,000 cycles per second). • Now Pentium IV’s operate at at least 2 GHz! Spring 2006 CISC101 - Prof. McLeod 18 CPU - Cont. • Responsible for: – Locating and carrying out program instructions from RAM. – Carrying out arithmetic operations on data stored temporarily in a few “registers”. – Moving data between RAM and other storage devices (except for those devices that can use “DMA” - Direct Memory Access). Spring 2006 CISC101 - Prof. McLeod 19 CPU - Cont. • A CPU can only carry out machine language instructions. • All high level program instructions must be reduced to machine code before the CPU can do anything with them. Spring 2006 CISC101 - Prof. McLeod 20 RAM and ROM • “Random Access Memory” – Volatile memory - when the power goes off, bye-bye go the bits! – Ultimately, numbers are stored in binary format (1 or 0) - more on this topic later! – RAM holds data and program instructions. • “Read Only Memory” – Not volatile. – Contains code and (BIOS) data used to start (“boot”) the computer. Spring 2006 CISC101 - Prof. McLeod 21 Other Components • Disk storage: – Data stored on magnetic or optical media. – Not volatile! (Hopefully!) – Disk read/write operations are much slower than operations carried out in RAM by the CPU. – Program code is first loaded from the disk to RAM and then executed. Spring 2006 CISC101 - Prof. McLeod 22 Other Components • Data ports – Serial (RS232), Parallel, USB, PS2, etc. – Providing input/output for the user via the keyboard, mouse, monitor, sound card, microphone, printer, scanner, joystick, webcam (etc. - you get the idea!) • Modem, Network card and/or Wireless Adapter – Provide a means of connecting to other computers. Spring 2006 CISC101 - Prof. McLeod 23 What is a Program? - Cont. • A program is an algorithm expressed using a language that can be understood (interpreted) by a computer. • Many such languages exist: – Some are closest to how the computer “thinks” (in binary!), such as machine language: 582134 6A2204 6B2311 502132 (means “X = Y + Z - W”) Spring 2006 CISC101 - Prof. McLeod 24 Computer Languages • Each hexadecimal “byte” (8 bits, where a bit is either 1 or 0) of this language is translated into binary code that can be used at the microprocessor level. Spring 2006 CISC101 - Prof. McLeod 25 Computer Languages - Cont. • Machine language requires very little interpretation by the computer, but has very little resemblance to anything that a human can understand. • Next comes Assembler language: Spring 2006 CISC101 - Prof. McLeod 26 Assembler Language Example BEEPSEG BEEP BEEP BEEPSEG SEGMENT ASSUME PROC MOV MOV INT INT ENDP ENDS END BYTE PUBLIC CS:BEEPSEG ‘PROG’ DL,7 AH,2 33 32 • Any guess as to what this does? Spring 2006 CISC101 - Prof. McLeod 27 Computer Languages - Cont. • Each assembly language command would need to be interpreted to several machine language commands. • The next generation of computer languages went up one more level, getting closer to something readable - for example: Fortran, Cobol and Lisp. • These languages led to an explosion of over 200 languages being developed in the 60’s and 70’s, such as Basic, Pascal, C, Ada and Smalltalk. Spring 2006 CISC101 - Prof. McLeod 28 Java • Java was developed about 15 years ago! • Java is an Object-Oriented language that is very high level - meaning that it is close to being easily readable. • This means that one command in Java could require many, many machine language instructions to execute. Spring 2006 CISC101 - Prof. McLeod 29 A Very Brief History of Java • The language was first developed by James Gosling at Sun Microsystems in 1991. – He was designing a language, called “Oak”, for the “Green Project”. – The Green Project envisaged the centralized control of many processorbased devices in the home. – “Oak” was designed to be a robust, efficient language with maximum portability to different processors. – The Green Project flopped… – But “Oak” was to soon become “Java”! Spring 2006 CISC101 - Prof. McLeod 30 Java History, Cont. • As soon as Internet use started to blossom in the early 90’s, a need arose to have web pages do more than just display static text and graphics. • Web pages needed to be “programmable”, so that they could do more - especially so that they could interact with the viewer of the page. • The problem is that web pages are viewed on a wide variety of platforms, from Mac’s to Unix to IBM-PC’s. • So any page-embedded language would need to run on all these platforms. Spring 2006 CISC101 - Prof. McLeod 31 Java History, Cont. • In 1994, Sun demonstrated the use of Java in small bundles of code embedded in a web page called “applets”. • Netscape browsers started supporting applets in 1995, starting Java’s rise to fame. • Sun programmers continued to develop a code base for the language, demonstrating that Java could be used for more than just applets, and that full-blown applications could be written in this high-level language. Spring 2006 CISC101 - Prof. McLeod 32 How Java Works • The Java language standard (the “syntax”) is identical for all platforms. • A compiler (“JDK”, or “Java Development Kit”) which is designed to run on your development platform, compiles your source code to a “byte code” file (“*.class” file extension). • The byte code file is platform-independent, and is the thing you attach to your web page as an applet. • Every browser written for every platform and OS, can have an embedded code processor called a JVM, or “Java Virtual Machine”, built-in. Spring 2006 CISC101 - Prof. McLeod 33 How Java Works, Cont. • The JVM takes the byte code and executes it by generating the machine code that will be recognized by the platform that is running the browser. Remote Server (Unix) Local Client (Wintel PC) HTML File Netscape Browser Internet Applet Spring 2006 Applet Byte code files CISC101 - Prof. McLeod JVM 34 How Java Works, Cont. • Of course it did not take long before people took the JVM out of the browser so that they could run stand-alone Java applications. • The concept of “write once, run anywhere” is very appealing! • And, Sun distributes the JDK’s for free (see java.sun.com), making development on many platforms inexpensive. • Java now has 2.5 million application programmers worldwide. No other language has ever grown this quickly! Spring 2006 CISC101 - Prof. McLeod 35 How Java Works, Cont. • So, Java can be used either to create applets for use in web pages or for stand-alone applications. • Most “Integrated Development Environments” or “IDE”’s will support the development of either kind of program. Spring 2006 CISC101 - Prof. McLeod 36 How Java Works, Cont. • All IDE’s (or “Integrated Development Environments”) must use the appropriate JDK from Sun in the background. • Two components of the JDK are the programs “javac.exe” and “java.exe”. • javac.exe is the byte code compiler, and java.exe is the JVM which executes the byte code file. • “Compilation” is the process of converting the *.java file to a *.class file (the byte code file). This is done by calling javac.exe in the background, and supplying that program with all the required command line parameters. Spring 2006 CISC101 - Prof. McLeod 37 How Java Works, Cont. • The java.exe program: – – – – – accepts the byte code file, links in any required libraries, creates executable code in memory converts it to machine language and sends it to the CPU. • The java.exe program must know the right machine language commands only for the type of CPU it is designed for! Spring 2006 CISC101 - Prof. McLeod 38 Source text Text Editor successful Eclipse or BlueJ Bytecode binary Compiler Executable binary not successful Linker Errors javac.exe Loader Library binary Input Data java.exe Spring 2006 CISC101 - Prof. McLeod Output Data 39 How Java Works, Cont. • So, Java can be used either to create applets for use in web pages or for stand-alone applications. • Most “Integrated Development Environments” or “IDE”’s will support the development of either kind of program. Spring 2006 CISC101 - Prof. McLeod 40 Why Java for CISC101? • The choice of the language is fairly arbitrary. • Java is: – – – – – Multiplatform, Modern, Object - Oriented, Supported by a Large User Base, Not Vendor-Specific, Fundamentally Sound. • Other good languages: C, C++, C#, Delphi (pascal), Visual Basic, Turing, etc. Spring 2006 CISC101 - Prof. McLeod 41 Why Java? - Cont. • “IDE” - Integrated Development Environments (like those from Microsoft) make it easier to build GUI Interfaces. • “GUI” - Graphical User Interface. • We don’t want to get hung up on all the GUI elements necessary to build a “Windows” program. • Learn structural programming first. • Need a simple development environment, not one that is oriented only towards Windows platform development. Spring 2006 CISC101 - Prof. McLeod 42 Why Java? - Cont. • Use Java to demonstrate your knowledge of programming. • In particular, we will use “Java II” which is also referred to as “JDK, version 1.5” or “Java 5.0”. • Two development tools are recommended: BlueJ and Eclipse. • Available here and in in Jeff Lab. Spring 2006 CISC101 - Prof. McLeod 43 Development Environments - Cont. • You can use any environment you wish (JBuilder, Sun JDK, BlueJ, Eclipse, etc.) - but we cannot be expected to support them all. • The programs you write and submit could be run on any platform in any environment. • Let “us” have a look at three possible development environments: – DOS command line (java.sun.com) – BlueJ (www.bluej.org) – Eclipse (www.eclipse.org) Spring 2006 CISC101 - Prof. McLeod 44 Three Environments • Which to use? • Use DOS if you like pain… • BlueJ is simple but not realistic. • Eclipse is a “real” tool – this is the one I’m going to use in class most often. Spring 2006 CISC101 - Prof. McLeod 45 For Example - HelloWorld.java • In Notepad: // The "HelloWorld" class. public class HelloWorld { public static void main (String[] args) { System.out.println("Hello World!"); } // end main method } // end HelloWorld class Spring 2006 CISC101 - Prof. McLeod 46 For Example - HelloWorld.class • In Notepad: Êþº¾ HelloWorld java/lang/Object main ([Ljava/lang/String;)V Code LineNumberTable Ljava/io/PrintStream; out java/lang/System Hello World! (Ljava/lang/String;)V println java/io/PrintStream <init> ()V HelloWorld.java SourceFile ! % ² ¶ ± ! Spring 2006 CISC101 - Prof. McLeod *· ± 47 Next Time • Down to the business of learning Java: – – – – – – Primitive types Variable declaration Operators Expressions Mixed type expressions Casting • A program “template” • Screen output • Screen input Spring 2006 CISC101 - Prof. McLeod 48