200 likes | 271 Views
Lecture 0 CSIS10A Overview. Welcome to CSIS10A (5 mins ) . Typical format for class meetings New material first (monitors off, notebooks out) Practice new material (like a lab) Syllabus Aim of this course (learning Java) Course assumes no prior knowledge of programming.
E N D
Welcome to CSIS10A (5 mins) • Typical format for class meetings • New material first (monitors off, notebooks out) • Practice new material (like a lab) • Syllabus • Aim of this course (learning Java) • Course assumes no prior knowledge of programming. • What is a program? A set of step-by-step instructions that directs a computer to solve some problem. • Pretty much anything you can do with a computer, you can do by programming in Java
Do introductions (15 mins) • class website: www.mpcfaculty.net/tom_rebold/CSIS10A.htm • Click on "Tell me about yourself" • Name • Major and what year • Why taking the course • Something unique about yourself • then we go around and tell each other
Do administrative stuff (10 mins) • Few if any handouts will be printed. They will be posted on the web instead. • No late work (model solutions, quick turnaround) • For conflicts with class meetings: let me know now! • We will use the online textbook JavaNotes by Eck • Textbook does not always line up with class, but is a great reference – I will provide notes for each lab. • We will use online labs by Michael Kowalczk, used with permission. We will thank him at the end of class! • Academic dishonesty • Office hours, and by appointment • Computer science tutor will be available – Steve Bruemmer our instructional tech, 9-5 most days
Do PB & J demonstration (20 mins) • Get into groups and write up instructions (10 mins) • Present the results and have me follow those directions (10 mins)
PBJ Debrief • Talk about observations; similarities to programming • Explicitness • Sequence, selection, repetition • Dependencies - when does order matter? • Closing open files and stuff • What is a basic command? • Unexpected uses of software • Infinite loops
Course will be challenging, fun, painful at times - much like making a sandwich • But, you will make yourself more marketable or may get sold on computer science!
What the parts do • CPU • ``The brain''; performs relatively basic operations • It only executes machine language • The machine language varies from CPU to CPU • Storage • Primary storage/random-access memory/RAM/``memory'' • Fast, but volatile and expensive • Secondary storage/hard drive/hard disk • Cheap and non-volatile, but slow • Input devices (the ``I'' in ``I/O'') • Mouse, keyboard • Output devices (the ``O'' in ``I/O'') • Monitor, speakers, printer
How hardware relates to programming • Your .java program files are files, therefore found on the hard drive (typically) • Programs need to run fast, so the computer uses primary memory for programs that are currently running. • There are ways to communicate with I/O devices in Java.
Communicating instructions to the computer • Problem: We want to give instructions to the CPU, but the CPU's language is hard for humans to read, write, and understand. How do we handle this? • One (painful) solution: Just program in machine code • Why is this so painful? Just note this C code:main() { printf("hello, world"); } • does the same thing as the machine code on the next slide. • Since machine code depends on the CPU, the program would only work on a limited number of machines anyway
"Hello World" program in machine code • 127 69 76 70 1 1 1 0 0 0 0 0 0 0 0 0 2 0 3 0 1 0 0 0 224 130 4 8 52 0 0 0 88 7 0 0 0 0 0 0 52 0 32 0 7 0 40 0 28 0 25 0 6 0 0 0 52 0 0 0 52 128 4 8 52 128 4 8 224 0 0 0 224 0 0 0 5 0 0 0 4 0 0 0 3 0 0 0 20 1 0 0 20 129 4 8 20 129 4 8 19 0 0 0 19 0 0 0 4 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 128 4 8 0 128 4 8 188 4 0 0 188 4 0 0 5 0 0 0 0 16 0 0 1 0 0 0 188 4 0 0 188 148 4 8 188 148 4 8 8 1 0 0 12 1 0 0 6 0 0 0 0 16 0 0 2 0 0 0 208 4 0 0 208 148 4 8 208 148 4 8 208 0 0 0 208 0 0 0 6 0 0 0 4 0 0 0 4 0 0 0 40 1 0 0 40 129 4 8 40 129 4 8 32 0 0 0 32 0 0 0 4 0 0 0 4 0 0 0 81 229 116 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 4 0 0 0 47 108 105 98 47 108 100 45 108 105 110 117 120 46 115 111 46 50 0 0 4 0 0 0 16 0 0 0 1 0 0 0 71 78 85 0 0 0 0 0 2 0 0 0 2 0 0 0 5 0 0 0 3 0 0 0 6 0 0 0 5 0 0 0 1 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 68 0 0 0 0 0 0 0 221 0 0 0 18 0 0 0 46 0 0 0 0 0 0 0 54 0 0 0 18 0 0 0 53 0 0 0 164 132 4 8 4 0 0 0 17 0 14 0 1 0 0 0 0 0 0 0 0 0 0 0 32 0 0 0 21 0 0 0 0 0 0 0 0 0 0 0 32 0 0 0 0 95 74 118 95 82 101 103 105 115 116 101 114 67 108 97 115 115 101 115 0 95 95 103 109 111 110 95 115 116 97 114 116 95 95 0 108 105 98 99 46 115 111 46 54 0 112 114 105 110 116 102 0 95 73 79 95 115 116 100 105 110 95 117 115 101 100 0 95 95 108 105 98 99 95 115 116 97 114 116 95 109 97 105 110 0 47 115 47 103 99 99 45 51 46 52 46 52 47 105 51 56 54 95 99 101 110 116 52 48 47 108 105 98 0 71 76 73 66 67 95 50 46 48 0 0 0 0 2 0 2 0 1 0 0 0 0 0 0 0 1 0 1 0 36 0 0 0 16 0 0 0 0 0 0 0 16 105 105 13 0 0 2 0 115 0 0 0 0 0 0 0 160 149 4 8 6 5 0 0 176 149 4 8 7 1 0 0 180 149 4 8 7 2 0 0 85 137 229 131 236 8 232 97 0 0 0 232 184 0 0 0 232 179 1 0 0 201 195 0 255 53 168 149 4 8 255 37 172 149 4 8 0 0 0 0 255 37 176 149 4 8 104 0 0 0 0 233 224 255 255 255 255 37 180 149 4 8 104 8 0 0 0 233 208 255 255 255 49 237 94 137 225 131 228 240 80 84 82 104 20 132 4 8 104 192 131 4 8 81 86 104 148 131 4 8 232 191 255 255 255 244 144 144 85 137 229 83 232 0 0 0 0 91 129 195 151 18 0 0 82 139 131 252 255 255 255 133 192 116 2 255 208 88 91 201 195 144 144 144 144 144 144 144 144 144 144 144 85 137 229 131 236 8 128 61 196 149 4 8 0 116 12 235 28 131 192 4 163 192 149 4 8 255 210 161 192 149 4 8 139 16 133 210 117 235 198 5 196 149 4 8 1 201 195 144 85 137 229 131 236 8 161 204 148 4 8 133 192 116 33 184 0 0 0 0 133 192 116 24 199 4 36 204 148 4 8 232 124 124 251 247 141 182 0 0 0 0 141 191 0 0 0 0 201 195 144 144 85 137 229 131 236 8 131 228 240 184 0 0 0 0 131 192 15 131 192 15 193 232 4 193 224 4 41 196 199 4 36 168 132 4 8 232 20 255 255 255 201 195 144 144 85 137 229 87 86 83 131 236 12 232 0 0 0 0 91 129 195 214 17 0 0 232 190 254 255 255 141 131 24 255 255 255 141 147 24 255 255 255 137 69 240 41 208 49 246 193 248 2 57 198 115 22 137 215 137 246 255 20 178 139 77 240 41 249 70 193 249 2 57 206 137 250 114 238 131 196 12 91 94 95 201 195 137 246 85 137 229 87 86 83 232 0 0 0 0 91 129 195 133 17 0 0 141 131 24 255 255 255 141 187 24 255 255 255 41 248 193 248 2 131 236 12 141 112 255 235 5 144 255 20 183 78 131 254 255 117 247 232 54 0 0 0 131 196 12 91 94 95 201 195 144 144 144 144 144 144 144 144 144 144 85 137 229 83 131 236 4 187 188 148 4 8 161 188 148 4 8 235 7 131 235 4 255 208 139 3 131 248 255 117 244 88 91 93 195 144 85 137 229 83 232 0 0 0 0 91 129 195 23 17 0 0 80 232 150 254 255 255 89 91 201 195 0 0 3 0 0 0 1 0 2 0 104 101 108 108 111 44 32 119 111 114 108 100 0 0 0 0 0 0 0 0 255 255 255 255 0 0 0 0 255 255 255 255 0 0 0 0 0 0 0 0 1 0 0 0 36 0 0 0 15 0 0 0 86 0 0 0 12 0 0 0 152 130 4 8 13 0 0 0 132 132 4 8 4 0 0 0 72 129 4 8 5 0 0 0 212 129 4 8 6 0 0 0 116 129 4 8 10 0 0 0 125 0 0 0 11 0 0 0 16 0 0 0 21 0 0 0 0 0 0 0 3 0 0 0 164 149 4 8 2 0 0 0 16 0 0 0 20 0 0 0 17 0 0 0 23 0 0 0 136 130 4 8 17 0 0 0 128 130 4 8 18 0 0 0 8 0 0 0 19 0 0 0 8 0 0 0 254 255 255 111 96 130 4 8 255 255 255 111 1 0 0 0 240 255 255 111 82 130 4 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 208 148 4 8 0 0 0 0 0 0 0 0 198 130 4 8 214 130 4 8 0 0 0 0 0 0 0 0 200 148 4 8 0 71 67 67 58 32 40 71 78 85 41 32 51 46 52 46 54 32 50 48 48 54 48 52 48 52 32 40 82 101 100 32 72 97 116 32 51 46 52 46 54 45 56 41 0 0 71 67 67 58 32 40 71 78 85 41 32 51 46 52 46 54 32 50 48 48 54 48 52 48 52 32 40 82 101 100 32 72 97 116 32 51 46 52 46 54 45 56 41 0 0 71 67 67 58 32 40 71 78 85 41 32 51 46 52 46 52 0 0 71 67 67 58 32 40 71 78 85 41 32 51 46 52 46 52 0 0 71 67 67 58 32 40 71 78 85 41 32 51 46 52 46 52 0 0 71 67 67
One (bad) solution: Try to make a system where we can just type in instructions with natural language, and have the computer translate that into machine code. • Extremely difficult • Very ambiguous; for example, in ``I called the guy with the cell phone'' - who is carrying the cell phone?
One (better) solution: Use an intermediate language that is somewhat easy for humans to use (i.e. Pascal, C++, etc.), and have the computer translate that into machine code. This translator is called a compiler. • Compiled languages such as C work in this way.
Running programs the Java way • In Java, the computer simulates an imaginary CPU with very particular specifications. • This imaginary CPU is called the Java virtual machine (or JVM). • Java simulates the JVM much like an emulator simulates a Super-Nintendo • Main advantage: The same code can be made to run on any machine without modification (see previous slide). • Example: Good for Java applets on the web • Another advantage: Much better security can be implemented when running code in a virtual machine. • Example: again, crucial for Java applets on the web • One disadvantage: Simulating the JVM makes the program run slower • One caveat: There can actually be variations in your program from machine to machine, for a number of reasons • Different I/O devices • Different library implementations (or bugs) • Bugs in a JVM implementation (yes, it happens)
Source file compiler bytecode • The JVM's language is bytecode, which is found inside .class files. • The compiler converts java files into class files • Class files are not human readable • See the bytecode for the HelloWorld.java program
Java source file public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); }}
Java Bytecode for previous slide 202 254 186 190 0 0 0 49 0 34 1 0 10 72 101 108 108 111 87 111 114 108 100 7 0 1 1 0 16 106 97 118 97 47 108 97 110 103 47 79 98 106 101 99 116 7 0 3 1 0 6 60 105 110 105 116 62 1 0 3 40 41 86 1 0 4 67 111 100 101 12 0 5 0 6 10 0 4 0 8 1 0 15 76 105 110 101 78 117 109 98 101 114 84 97 98 108 101 1 0 18 76 111 99 97 108 86 97 114 105 97 98 108 101 84 97 98 108 101 1 0 4 116 104 105 115 1 0 12 76 72 101 108 108 111 87 111 114 108 100 59 1 0 4 109 97 105 110 1 0 22 40 91 76 106 97 118 97 47 108 97 110 103 47 83 116 114 105 110 103 59 41 86 1 0 16 106 97 118 97 47 108 97 110 103 47 83 121 115 116 101 109 7 0 16 1 0 3 111 117 116 1 0 21 76 106 97 118 97 47 105 111 47 80 114 105 110 116 83 116 114 101 97 109 59 12 0 18 0 19 9 0 17 0 20 1 0 13 72 101 108 108 111 44 32 87 111 114 108 100 33 8 0 22 1 0 19 106 97 118 97 47 105 111 47 80 114 105 110 116 83 116 114 101 97 109 7 0 24 1 0 7 112 114 105 110 116 108 110 1 0 21 40 76 106 97 118 97 47 108 97 110 103 47 83 116 114 105 110 103 59 41 86 12 0 26 0 27 10 0 25 0 28 1 0 4 97 114 103 115 1 0 19 91 76 106 97 118 97 47 108 97 110 103 47 83 116 114 105 110 103 59 1 0 10 83 111 117 114 99 101 70 105 108 101 1 0 15 72 101 108 108 111 87 111 114 108 100 46 106 97 118 97 0 33 0 2 0 4 0 0 0 0 0 2 0 1 0 5 0 6 0 1 0 7 0 0 0 47 0 1 0 1 0 0 0 5 42 183 0 9 177 0 0 0 2 0 10 0 0 0 6 0 1 0 0 0 14 0 11 0 0 0 12 0 1 0 0 0 5 0 12 0 13 0 0 0 9 0 14 0 15 0 1 0 7 0 0 0 55 0 2 0 1 0 0 0 9 178 0 21 18 23 182 0 29 177 0 0 0 2 0 10 0 0 0 10 0 2 0 0 0 16 0 8 0 17 0 11 0 0 0 12 0 1 0 0 0 9 0 30 0 31 0 0 0 1 0 32 0 0 0 2 0 33
A source file contains source code and is really just a simple text file. It contains (among other things) instructions for the computer to execute. • A ``.java'' ending is used to distinguish it as a Java source file • Java files have special structure so that the computer can translate it into machine code. • Use a text editor or an IDE (in this class we use BlueJ but you can also use Eclipse) to create source and make changes to it. • We'll make a simple "Hello World" program now!