Introduction to Programming
Yong-nian Tang
Brookhaven National Laboratory
Working on accelerator control
631-344-7022 (BNL Phone #)
[email protected]
[email protected]
Introduction to Programming
Text Book:
Introduction to Java Programming
by Daniel Liang
How expensive is it?
Introduction to Programming
Do we need to buy the text book?
It is recommended because we’ll do many
excises in the book. Having the book will
make your life much easier.
However, you can survive without the book.
Introduction to Programming
Supply: USB drives to save files and transfer
Very cheap when they are on sale.
About $0.50 to $1 per GB, or even less.
Every one should have one or two.
Introduction to Programming
Course Web Pages:
Attendance and project status
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 [email protected]
 Attendance
Grades: 10% goes to the final
grade. However, more points will be deducted for
many absences.
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.
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.
Introduction to Programming
 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.
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
 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
• Needs separate monitor, not easy to move
• Could be replaced by laptops and tablets in
the near future?
Types of Computers
 Notebook, Netbook & iPad
• 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
 Clusters: consists of
hundreds and more
Computer Systems
A computer system is made up of:
 Hardware — the physical components. Can
be touched. If kicking it, your toe will get
 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).
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
 Located inside the
computer case
 Holds and connects
all essential
Hardware: CPU
 CPU - micro processor
• A silicon chip designed
to manipulate data
• The brain of a
• 64-bit CPUs and 32-bit
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.
High-end video cards are not cheap either.
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)
2. A byte can store 256
different numbers, why
do we need two bytes to
store an English
Hardware: units of Memory and
 Kilobyte (KB) = one thousand (1024) bytes
 Megabyte (MB) = one million (1024 KB)
 Gigabyte (GB) = one billion bytes
 Terabyte (TB) = one trillion bytes
Hardware: Memory
 Computer memory is a set of storage
 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
• from 32 MB to 16 GB and
Plug directly into the USB
port (hot operation)
Best portable storage
Small and inexpensive:
Hardware: Differences between
memory & storage
On board
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
Hardware: I/O Devices
 Types of printers
• Laser
• Inkjet
 B/W printing:
buy laser printers
 Color laser printer:
very expensive
Inkjet printer
Hardware: Printer
 Turn OFF the printer when not printing to
prevent the heat from drying the
 Use the power button to turn off the
printer in order to make cartridges stay in
the proper housing. Do not pull the power
Hardware: Video Card
 Integrated (on-board) and dedicated
video cards
 Gaming: needs high-end video cards.
 High-end computers have dedicated
 Usually, a video card has its own
memory; on-board video shares main
Microsoft Office 2007-Illustrated Introductory, Premium Video Edition
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
A Desktop Computer
Motherboard and others
The Back of a Computer
Power connection
Keyboard port
Mouse port
Monitor port
FireWire port
USB ports
Network port
Speaker and
Phone line
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
• 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
Microsoft Office 2007-Illustrated Introductory, Premium Video Edition
Software: System Software
 System software helps the computer
carry out it s basic operating tasks.
Operating systems
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.
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.
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
Software: System Software
 Utilities
• Analyze, configure, optimize and maintain
computer system: disk defragmenter, system
 Device drivers
• “Drives” a specific device (drive).
• The main task to install a device is to install its
Software: System Software
 Programming languages
• Used by a programmer to develop
• Most commonly used computer
language: C, C++, Java, C#, Visual
Basic, Fortran…
Microsoft Office 2007-Illustrated Introductory, Premium Video Edition
Software: System Software
 Drive and Driver
• Drive --- Hardware
• Driver --- software to “drive” a specific
 Examples:
Hard (disk) drive --- Hard (disk) driver
USB drive --- USB driver
Printer --- Printer driver
Microsoft Office 2007-Illustrated Introductory, Premium Video Edition
Software: System Software
Icons (you
might see
icons on
you might see
additional or
gadgets on
your screen)
Start button
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
 Creates a back-door and lets remote
users access your computer
 A bad virus spreads very fast and
affects millions computers.
Security Threats: Sources of
 Downloading virus-infected files
 Opening malicious emails and their
 Infected disks and CDs
 Worst incidents: Melissa, ILOVEYOU
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
 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
Clamwin: variant of ClamAV for Windows
AVG Anti-Virus
Security Threats: Antivirus
There is no excuse not to install an
antivirus software, at least it should have
security_essential installed from
SE is free and works well!
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 and
• 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
 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
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
Microsoft Office 2007-Illustrated Introductory, Premium Video Edition
Security Threat: Strong password
 At least eight characters long
 Consists of upper- and lowercase
letters and numbers
 Does not include common personal
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
 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.
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
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.
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
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.
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
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
• 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
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
Software Development
OOP and Procedural
• Object-Oriented Programming
(OOP): Java
• Procedural (Conventional)
programming: C
• What are the differences between
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
Testing and Debugging
Software Development
• 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,
• Data structures: arrays, classes, and
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
 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)
 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
Example: 0x1, 0x8, 0xf, 0xff
Character Storage
 Character sets
• Standard ASCII
(0 – 127)
• Extended ASCII (0 – 255)
(0 – 255)
• Unicode
(0 – 65,535)
Irvine, Kip R. Assembly
Language for Intel-Based
Computers 6/e, 2010.