Introduction to Programming Instructor: Yong-nian Tang Brookhaven National Laboratory Working on accelerator control 631-344-7022 (BNL Phone #) tangy@sunysuffolk.edu Introduction to Programming Text Book: Introduction to Java Programming by Daniel Liang 10th edition 2 Introduction to Programming Download the text book: www2.sunysuffok.edu/tangy CST112 --- Introduction to programming Liang’s Introduction to Java Programming, 10th edition 3 Introduction to Programming Supply: USB drives to save files and transfer data. Very cheap when they are on sale. About $0.50 to $1 per GB, or even less. Every one should have one or two. 4 Introduction to Programming Course Web Pages: www2.sunysuffolk.edu/tangy/cst112 Outline Announcements Slides Projects Attendance and project status 5 Introduction to Programming Attendance Policy Attending classes is very important Firm but flexible policy If you can not attend a class, • call 344-7022 or • email tangy@sunysuffolk.edu Attendance Grades: 10% goes to the final grade. However, more points will be deducted for many absences. 6 Introduction to Programming Fail or Withdrawal One should go to registrar to formally withdraw from the class if quitting attending the class after some date. For example, one quits the class after the midterm exam. If you forget to formally withdraw, I usually assign W as your final grade if the College permits. However, if you need to get an F in order to get financial aid, please send me an email. If the College does not allow professors to assign W, I will assign F for lack of choices. 7 Introduction to Programming Grading Policy Specified in the outline In general, if one attends the classes, finishes lab work, exams and projects, one gets a relatively good grade. Do not worry about grades, to learn something is more important. 8 Introduction to Programming Topics The language we use is Java. Our goal is to be able to write medium size programs at the end of the class. I enjoy to answer questions from you and discuss them with you. Please be actively involved in the class activities. 9 Defining Computers A computer is an electronic device accepts input processes and stores data produces output Types of Computers Personal computers • Desktop • Notebook (Laptop) • Tablet PC Hand-helds: PDAs, MP3 players, Cell phones Mainframes Supercomputers Other computers (at home, in car…) Types of Computers Personal computers are used for general computing tasks. Hand-held computers fit in the palm of your hand and run on batteries. Mainframes are used by companies to provide centralized storage, processing, and management for large amounts of data. Supercomputers are the largest and fastest of computers, and can process an enormous volume of data. Types of Computers Desktop: (HP, Dell, IBM…) • Usually more powerful and cheaper than laptops • Needs separate monitor, not easy to move around • Could be replaced by laptops and tablets in the near future? Types of Computers Notebook, Netbook and tablet • Small & lightweight. Portable • Netbook: browsing Internet • Tablets (7” and 10”,…) Types of Computers Supercomputers are the largest and fastest computers. BNL Bluegene Mainframe s are very powerful computers, but not as powerful as supercomputers. Clusters: consists of hundreds and more processors. Computer Systems A computer system is made up of: Hardware — the physical components. Can be touched. If kicking it, your toe will get hurt. Software — the programs or lists of instructions. Can not be touched. Software could be more expensive than hardware. Why do most people KEEP using Windows system? Can we reduce the weight of a computer by deleting its software (files). No!!! Software has no weight. Hardware: major components Motherboard CPU (Central Processing Unit) Memory Storage devices I/O (Input/Output) devices Network devices Power supply, case, video card, sound card… Hardware: Motherboard Also called mainboard Located inside the computer case Holds and connects all essential components Hardware: CPU CPU - micro processor • A silicon chip designed to manipulate data • The brain of a computer. • 64-bit CPUs and 32bit CPUs Hardware: CPU (cont.) Intel, AMD, Apple, IBM… make CPUs. Its speed is determined by: • Clock speed (Hz) • Word size (32-bit and 64-bit) • Processor type • Usually, motherboard and CPU are the most expensive components in a computer. Highend video cards are not cheap either. Question 1. What are the two most expensive components in a computer? Hardware: Units of Memory and Storage Computer understands 0 and 1 only: on/off state, N/S pole, 0/5 volts… 1 (“on”) and 0 (“off”) are referred to as bits. Eight bits is a byte. Two bytes represent a unique character (Unicode) Decimal numbers and binary numbers. Hardware: Units of Memory and Storage Everything in the computer memory and storage devices is a number! A computer understands only numbers. Number number Character number (ASCII code) Grey level number ( usually 0 – 255) Color three numbers (R/G/B) Question 2. A byte can store 256 different numbers, why do we need two bytes to store an English character? Hardware: units of Memory and Storage Kilobyte (KB) = one thousand (1024) bytes Megabyte (MB) = one million (1024 KB) bytes Gigabyte (GB) = one billion bytes Terabyte (TB) = one trillion bytes Hardware: Memory Computer memory is a set of storage locations. Five types of memory: • • • • • Random access memory (RAM) Cache memory Virtual memory Read-only memory (ROM) Complementary metal oxide semiconductor memory (CMOS) Hardware: Memory RAM --- Random Access Memory • Sits on motherboard and closes to CPU • Also called volatile memory, primary memory, and main memory. • Most important memory type. • 256 MB to many GBs. • Fast CPU + big memory + (fast graphical card) a fast computer. Hardware: Memory Cache memory • Special high-speed memory chip on the motherboard or CPU • Stores frequently and recently accessed data and commands. • Usually 1 to ??? MB. • The bigger, the better, also more expensive. Hardware: Memory Virtual memory is extra memory that simulates RAM if more is needed. Limited by the memory space (word size). Read-only memory (ROM) is the permanent storage location for a set of instructions the computer uses. CMOS memory is semi-permanent information about where essential software is stored. Hardware: Storage Media Magnetic storage devices • Hard disks—several magnetic oxide covered metal platters usually sealed in a case inside the computer • Tape—inexpensive, slow, archival storage for large companies who need to back up large quantities of data. • Floppy disks: (almost) obsolete Hardware: Storage Media Optical storage devices • CD-R - store 700 MB of data • CD-RW: not reliable • DVD—can store between 4.7 and 15.9 GB of data; Blue-ray discs and HD-DVD can store between 15 and 50 GB of data Hardware: Storage Media Flash memory cards • Small, portable cards: rewritable • Used in digital cameras, handheld computers, video game controllers, and other devices • Most commonly-used: SD (HDSD) cards – Secure Digital. Hardware: Storage Media USB drive, USB flash drive • from 32 MB to 16 GB and • • • • more Plug directly into the USB port (hot operation) Rewritable Best portable storage Small and inexpensive: $1.50/GB Hardware: Differences between memory & storage Speed Persistent Size Location Memory Fast No Limited On board Storage Slow Yes Unlimited(?) External Question 3. When we talk about memory and storage, how do you compare computers and people? Hardware: Input/Output Input: • Data you type • Data by reading files • Data through Internet. • Data from sensors…… • Other sources Output: Display the result. Hardware: Input/Output Peripheral devices • Accomplish the input, output, and storage functions. • Not on the motherboard slow • I/O always is the slowest part of any program execution Hardware: I/O Devices Input devices: Keyboard Mouse Others Hardware: I/O Devices Output devices: • Monitors CRT monitors (almost obsolete) LCD and LED • Printers • Others Hardware: I/O Devices Monitor’s quality Screen Size (diagonal in inches) Resolution (in pixels) Setting the screen resolution. Hardware: I/O Devices Types of printers • Laser • Inkjet B/W printing: buy laser printers Color laser printer: very expensive cartridges. Inkjet printer Hardware: Printer Turn OFF the printer when not printing to prevent the heat from drying the cartridges. Use the power button to turn off the printer in order to make cartridges stay in the proper housing. Do not pull the power cord. Hardware: Video Card Integrated (on-board) and dedicated video cards Gaming: needs high-end video cards. High-end computers have dedicated video-cards Usually, a video card has its own memory; on-board video shares main memory. Microsoft Office 2007-Illustrated Introductory, Premium Video Edition 44 Hardware: Network Devices Network cables (Ethernet cables) Modems and routers Wireless cards and adapters Building a home wireless network: Not as hard as one thinks. Just follow the instructions. A Desktop Computer Motherboard and others The Back of a Computer Power connection Keyboard port Mouse port Audio connection Monitor port FireWire port USB ports Network port Speaker and microphone connections Phone line connection Computer ports and connections Software: major Components Operating system • Windows • Unix & Linux (open and free) • MacOS System utilities Application software Software: Introduction Software manipulates and processes data Data: Strings, numbers, figures, sounds, images, and graphics… Software: Introduction File --- named collection of stored data. • Executable file can be run to perform a specific task. • Data file contains data. Everything in a computer is represented by a number on disk and in memory. Software: Data Representations Every English character is represented by an ASCII number. ASCII numbers defined by ANSI. ANSI standard sample ASCII code Software: Data Representations ASCII --- American Standard code for Information Exchange ANSI --- American National Standards Institute Microsoft Office 2007-Illustrated Introductory, Premium Video Edition 53 Software: System Software System software helps the computer carry out it s basic operating tasks. • • • • Operating systems Utilities Device drivers Programming languages Software: System Software Operating system • Executes programs • controls the input and output (I/O) • allocates system resources and priorities • Schedules tasks • manages files on storage devices • guards against equipment failure • provides a graphical user interface (GUI) • Others Software: System Software Operating system • Programmer: develop and write the system • System administrator (SA): configure and maintain the system • End user: use the system Using GUI (Graphical User Interface) Manipulating files Software: System Software Major Operating systems • Windows by Microsoft: most recent version is Windows 10. • Unix/Linux: many flavors (Sun Solaris, HP-UX, IBM AIX, Redhat, Debian, Ubuntu…) • MacOS: only for Apple computers. 57 Software: System Software Which OS is better? • Windows: most popular. Easy to use. Many applications. Hardware/software installation is easy. Prone to virus attacks. • Unix/Linux: free. Popular in academic world. Hardware/software installation needs effort and expertise. More secure than Windows. • MacOS: nice GUI, stable and reliable. Pay a premium because it’s Apple. 58 Software: System Software We are users and we learn • Basic knowledge of file systems. • To use GUI of the system • To configure the system • To maintain the system 59 Software: System Software Utilities • Analyze, configure, optimize and maintain computer system: disk defragmenter, system restore… Device drivers • “Drives” a specific device (drive). • The main task to install a device is to install its driver. Software: System Software Programming languages • Used by a programmer to develop programs. • Most commonly used computer language: C, C++, Java, C#, Visual Basic, Fortran… Microsoft Office 2007-Illustrated Introductory, Premium Video Edition 61 Software: System Software Drive and Driver • Drive --- Hardware • Driver --- software to “drive” a specific drive. Examples: Hard (disk) drive --- Hard (disk) driver USB drive --- USB driver Printer --- Printer driver Microsoft Office 2007-Illustrated Introductory, Premium Video Edition 62 Software: System Software Icons (you might see additional icons on your screen) Gadgets (small programs; you might see additional or different gadgets on your screen) Start button Taskbar Quick Launch toolbar Windows Vista starting screen Software: Application Software Enables you to perform specific computer tasks Examples: web browsers, Microsoft Office, DBMS, …… Security Threats: virus (malware) Software programs infesting computers: Worms, Trojan horse, spyware, adware… Replicates itself and fill up disks Damages computer systems Erases files and wipes out disks Ties up network and computers. Slows down program execution Security Threats: viruses Pops up ads Keylogger: steals personal information Creates a back-door and lets remote users access your computer A bad virus spreads very fast and affects millions computers. 66 Security Threats: Sources of viruses Downloading virus-infected files Opening malicious emails and their attachments Infected disks and CDs Worst incidents: Melissa, ILOVEYOU 67 Security Threats: Anti-virus Firewall • Stop unwanted and unsolicited incoming network messages and data. • Can be either hardware or software. Antivirus software • Every computer must equip with an antivirus software. System and software update: • Automatic update Security Threats: Antivirus Microsoft: security_essentials (free) Paid: Norton, MacAfee, Trend Micro Free: • ClamAV: open source. For Unix/Linux , also for • • • • Windows Clamwin: variant of ClamAV for Windows Stopzilla Avast! AVG Anti-Virus 69 Security Threats: Antivirus There is no excuse not to install an antivirus software, at least it should have security_essential installed from www.microsoft.com/security_essential SE is free and works well! 70 Security Threats: Spoofed sites Spoofed site • A Web site set up to look like another Web site, but which does not belong to the organization portrayed in the site • The URL (address on the Web) looks similar to a URL from the legitimate site www.citibank.com and www.citybank.com • Usually set up to try to convince customers of the real site to enter personal information Security Threats: Phishing Phishing • Sending e-mails to customers of a legitimate Web site (banks and institutions) asking them to click a link in the e-mail because of Security upgrade Account update Account compromised Other reasons • If the customer does not click the link, his/her account will be suspended or closed • the link leads to a spoofed site and asks personal and/or login information. Security Threats: Other tricks Nigerian scams • Lottery winner, request processing fee • Unclaimed treasure: needs your account number to deposit Over-payment scam • You sell an item (a car…) • A far-away guy will buy it and send you a bank check larger than your asking price • He asks you to mail the extra to himself or someone else through western union… • You deposit the check and send the extra back (real money). Several weeks later, the check bounced. Security Threats: Phishing Too good to be true >>> not true Never open an unsolicited email, especially, its attachments Never reveal your personal information (SSN, bank account number, credit number…) unless you initialize the communication Never make any payment to a (faraway) stranger. Wait for the check cleared, then take action. If someone specifically ask you to send money through Western Union or Money Gram most likely it’s a scam. Security Threats: Phishing To clear a bank check needs one to several weeks, especially foreign checks. Payment by Western Union… is not traceable. Microsoft Office 2007-Illustrated Introductory, Premium Video Edition 75 Security Threat: Strong password At least eight characters long Consists of upper- and lowercase letters and numbers Does not include common personal information Security Threats: Encryption Encrypt important files especially when files are on a USB drive. TrueCrypt: free and easy to use for Unix, Linux, and Windows. Computer Languages First generation: machine language Second generation: Assembly language Third generation: High level such as C, Fortran, C++, Java, VB… Introduction to Programming Programming languages First generation: machine language: • • • • • Consists of 0’s and 1’s The only language understood by computers Fast and efficient Very hard to program, read and understand. Used in the old times. 79 Introduction to Programming Programming languages Second generation: assembly language: • • • • English words are used in a very cryptic way Needs an assembler to convert it to machine language Relatively fast and efficient Still hard to program, read and understand; but is doable. The core parts of OS’s are usually coded in assembly language • Different hardware (CPUs) has different assemblers 80 Introduction to Programming Programming languages Third generation: high level language: • • • • C, C++, Java, C#,VB, Fortran,… English-like language Developing programs by writing source code Source code (compiler or interpreter) assembly language (assembler) machine language • Still fast and efficient for most tasks • Relatively easy to program, read and understand • Portable to almost all platforms. 81 Translating Languages English: Display the sum of A times B plus C. C++: cout << (A * B + C); Assembly Language: mov eax,A mul B add eax,C call WriteInt Intel Machine Language: A1 00000000 F7 25 00000004 03 05 00000008 E8 00500000 82 Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010. Introduction to Programming What are programs? A program is a sequence of instructions written in computer languages to guide computers to perform tasks. A computer follows the instructions exactly and precisely. --- an important observation of computer programming. 83 Introduction to Programming An example To calculate the average of two numbers • Input: get the two numbers • Processing: calculate their average • Output: display the result 84 Software Development Source code (text file) Interpreter and compiler convert the source to object code (.obj) Linker links all object codes and libraries into executable files. (.exe) Introduction to Programming Compiler and Interpreter Compiler converts the whole program from source code to machine code, generates an executable program. • Source files object files (.obj) • A linker links all the object files and library functions an executable program (.exe) Interpreter converts the source code one line/block at a time and execute it. • Advantage: easy to develop and debug the program • Disadvantage: slow 86 Software Development Java uses a different approach in order to make it portable. Source code (text file, .java) Java compiler javac convert the source to byte code (.class) Java Virtual Machine (JVM) interprets the byte code and run the program. Introduction to Programming Write a fast program The slowest part of a program is I/O: • Reduce I/O times as much as possible • Use buffers to do I/O A fast computer make a program running fast: Fast CPU (32-bit vs. 64-bit) Big memory (32-bit machine can access only 3.7 Gb) Good video card if you like to play fast games 88 Software Development OOP and Procedural • Object-Oriented Programming (OOP): Java • Procedural (Conventional) programming: C • What are the differences between them? Software Development Client and Server • • • • In a distributed environment A server provides services A client requests services The opposite: peer-to-peer system. Software Development Life Cycle • • • • Analysis and design Coding Testing and Debugging Maintenance Software Development Comments • Line comments: starts with //, ends at the end of line • Block comments: /* … */ • Comments make the code more readable and easy to understand. Software Development Components of a program • Basic: data types and operations,… • Code structs: decisions, loops, functions • Data structures: arrays, classes, and others. Units of Memory and Storage Computer understands 0 and 1 only: on/off state, N/S pole, 0/5 volts… 1 (“on”) and 0 (“off”) are referred to as bits. Eight bits is a byte. Two bytes represent a unique character (Unicode) Software Development Memory organization Bit (0 or 1) Byte: 8 bits (0 to 255) Word: system dependent Kilobyte: 1 k (1024) bytes Megabyte: 1 M byte (1024 x 1024) Pay attention to data types. Units of Memory and Storage Kilobyte (KB) = one thousand (1024) bytes Megabyte (MB) = one million (1024 KB) bytes Gigabyte (GB) = one billion bytes Terabyte (TB) = one trillion bytes Data Representations Everything is a number in the computer memory or on storages • Numbers numbers • Characters numbers by ASCII • Grey numbers (0-255) • Color three numbers (R/G/B) Software Development Number system Binary number (0,1): base 2 Octal number (0,1,2,…,7): base 8 Example: o1, o7, o23 Decimal number (0,1,2,…,9): base 10 Hexadecimal number (0,1,2,…,9,A,B,C,D,E,F) Example: 0x1, 0x8, 0xf, 0xff Character Storage Character sets • Standard ASCII (0 – 127) • Extended ASCII (0 – 255) • ANSI (0 – 255) • Unicode (0 – 65,535) 99 Irvine, Kip R. Assembly Language for Intel-Based Computers 6/e, 2010.