You are on page 1of 41

Introduction to computers and

programming

Content
Hardware
Information storage
RAM, ROM
HD, DVD

Display
Images
Characters (fonts)

File system/type
Encryption
Compression

Network
Protocols
Packets

Programming
Algorithm
Pseudocode
Flowchart

Languages
Source code
Example

The computer

Internally

The connections

Information storage

1 bit
8 bits
16 bits
32 bits
64 bits

bit (1 or 0)
byte (octet) (28)
word (216)
double (232)
long double
(264)

Encodinginformationonafixedelementoflengthnwitha
basebgivesbnnonredundantpossibilities

Information coding
Binary
0 or 1

Octal
0-7

Hexadecimal
0-9+A-F

Decimal
0-9

How to count
1286432168421
10110101

128+32+16+4+1=
181 (decimal)
265 (octal)
B5 (hexadecimal)

Signed vs unsigned
0 to 255
-127 to +127

Operations on bits
Booleans:
0 = false = no
1 = true = yes

Operators:

AND
OR
XOR
NOT

Example tables
AN
D

OR

XOR

RAM/ROM
Memory mapping
Address
Values
10111001
0000
0001
00001111
0002
11100011
..
..
..

..
FFFF

00100100

Size reminder:

Kilobyte
Megabyte
Gigabyte
Terabyte
Petabyte

Kb
Mb
Gb
Tb
Pb

210 ~103
220 ~106
230 ~109
240 ~1012
250 ~1015

HD/DVD
track
sector
head

QuickTime et un
dcompresseur TIFF (non compress)
sont requis pour visionner cette image.

Display

Screen pixel or dots


Color coding: 32 bits
1 pixel = 3 bytes of color
(RGB)+1 byte alpha channel
(transparency)
1600x1200x4bytes=7,5 Mb!

Fonts
Bitmap
Vectors
TrueType, OpenType,
PostScript

Keyboard/Mouse
Each key (or
combination of keys) of
the keyboard sends a
code to the computer.
The code is interpreted
and converted to the
corresponding ASCII or
Unicode number.

The mouse movements


1 to 4 bytes (vertical &
horizontal)

Buttons
Clicked, pressed, rolled

buttons

ASCII & Unicode


ASCII 7/8 bits
Unicode
UTF-8/16/32 bits
ISO-8859 (Latin)

od -c od -h

Software layers
Files

Data(.doc,.mp3)

Software

Word,scripts,mail,webbrowser

UserInterface

Quartz

CLI,XWindows

OperatingSystem

MacOSX

ROM

Firmware

Hardware

Windows
Windows

Linux

BIOS

CPU,RAM,HD,DVD

File systems
Method the OS uses to store information
Storage unit, directories, subdirectories
(Windows, VMS)
Single arborescence (Linux, MacOSX, all Unix)

What exactly is a file?


a piece of information (text, graphic, data,
music program, script)
it is identified by a name and an logical
address (or path)
other informations: date, size, type, creator,
ownership, physical address

File system organisation

Disk 1

Disk 2

C:
DOCS

Disk 2

D:
PROGS

WORD

EXCEL

CONFIG

Directories

DATA

EXPT1

EXPT2

/usr

Disk 1

Subdirectories
bin

local

phil
lib

emacs

Windows

/home

Unix

X11

john

Path
The path is the logical address used
by the system or the user to locate a
file.
Example:
/bd_du_Palais/35/etage/4/appart/12/Dupont_ Jean.txt

path

filename

suffix

File types
Executable
.exe
.app
Unix requires x

Data

Text (.txt)
Music (.mp3)
Image (.jpg, .gif)
Movie (.mpg, .mov)
Binary (.bin)

Special cases in Unix


STDIN
STDOUT
STDERR

Encryption / compression
Compression
Reducing the size of files
E.g., .mp3, .gz, .jpg, .zip

Encryption
Protecting your privacy
E.g., .pgp

Packing
Grouping the files
E.g., .tar

Networks
Direct
USB 11Mb-480Mb
Ethernet 10Mb-1Gb

Wired
Modem 56Kb
ADSL 600Kb-8Mb
LAN 10Mb-10Gb

Wireless
Bluetooth 1Mb-20Mb
WIFI (AirPort) 11Mb-54Mb

Network (ethernet or
wireless)
Computer talk to
each other via
network protocols
ip, tcp, http, ftp,

Handshaking
Transmission
Ackowledgement

TCP/IP

DNS

transmission control
protocol/internet
protocol

Domain Name Server

URL
Universal Resource
Locator

IP addess
192.42.197.51

DNS reminder
3

Root DNS

*.org

5
Local DNS

Primary DNS

dns.anywhere.net

www.expasy.org

Client query
client.anywhere.net

www.expasy.org ??

Target server
129.194.8.64

Packets
The data travels
within units called
packets

Packet breakout

UsualTCP/IPpayloadperpacket:512bytes

Introduction to programming

What is a program?
How to cook?
The algorithm
Are you a programmer?

Pseudocode
This is the pseudocode for a game of Monopoly

Flowcharts

Flowcharts details

Languages
Low level (processor dependent)
Machine code, assembler
High level: structured, procedural
Fortran, C, Pascal
High level: object oriented
C++, Java, C#, Perl, Objective-C
Virtual machines
Java, C#
Scripting
Perl, Python, JavaScript

Source code -> Object code


Compiler+linker
Fortran, C, Pascal, C++

Interpreter
Basic, Perl

Intermediate
Java

Compiler+linker
Fast to execute, but
slow to debug

Interpreter
Slow to execute, but
fast to debug (no need
to recompile)

Intermediate
Slow

Source code
Instructions

Statement, blocks
Affectation
Operators
Loops
Tests
Subroutines
Comments

Data structures

Variable
List
Array
Hash
Pointers
Objects

Source code (2)


Statement, blocks
One or more
instructions for the
processor

Affectation
Change to a
variable

Operator
affect one or more
variable
+ * - / AND OR NOT

Variable
A region in memory
that can be modified
Exists in different
types
Scalar, char, numeric,
boolean
List, array
Hash
Combination->data
structure

Source code (3)


Loops
Allow the computer
to repeat blocks

Tests
Decide what to do

Subroutines
Programs frequently
called (functions)

Comments
The most important
lines of the source
code

Pointers
Reference to region
in memory
(address)

Objects
Combination of data
and code

Example: a text to treat


Noon rings out. A wasp, making an ominous sound, a sound akin to a klaxon
or a tocsin, flits about. Augustus, who has had a bad night, sits up blinking and
purblind. Oh what was that word (is his thought) that ran through my brain all
night, that idiotic word that, hard as I'd try to pun it down, was always just an
inch or two out of my grasp - fowl or foul or Vow or Voyal? - a word in a quizz
which, by association, brought into play an incongruous mass and magma of
nouns, idioms, slogans and sayings, a confusing, amorphous outpouring which I
sought in vain to control or turn off but which wound around my mind a
whirlwind of a cord, a whiplash of a cord, a cord that would split again and
again, would knit again and again, of words without communication or any
possibility of combination, words without pronunciation, signification or
transcription but out of which, notwithstanding, was brought forth a flux, a
continuous, compact and lucid flow: an intuition, a vacillating frisson of
illumination as if caught in a flash of lightning or in a mist abruptly rising to
unshroud an obvious sign - but a sign, alas, that would last an instant only to
vanish for good.

Gilbert Adair

Result
a=97
b=15
c=26
d=35
f=23
g=32
h=44
i=90
j=1
k=5
l=33
m=17

n=91
o=104
p=15
q=1
r=43
s=59
t=77
u=52
v=4
w=31
x=2
y=13
z=2

Do you see any problem??


Try with this:
The quick brown fox,
jumps over the lazy dog.

Flowchart

Source code example


#!/usr/bin/perl -w # essential line of all perl scripts
$filename = "avoid.txt"; # affect avoid.txt to the variable $filename
# open the file, or exit
open(FILE, $filename) || die "Cannot open file $filename\n\n";
@text = <FILE>; # add each line of the file to an array
close FILE;
foreach $line (@text) { # read one line from the array into $line and repeat for each line
@table = split(//,$line); # read each character of the line in an array
while ($char=pop(@table)) { # read one character of the array 'table' and repeat for all
$char =~ s/[^a-z]//; # keep only the alphabetical character a to z
if ($char) { # check if the character exists and execute the block
$count{$char}++; # if yes, increment by one the hash 'count'
}
}
}
# print each character and its number of occurence one per line
foreach $c (keys %count) {
print "$c=$count{$c}\n";
}
exit; # quit the program

Tips
Think about your
problem
Create a flowchart
Create the
pseudocode
Verify the memory
used by your
variables
Write the code

Test the code


For all the possible
functions or cases
(if possible)
Give it to users as a
beta (if not possibe)
Sell it (if you work
for Microsoft ;-)

Debug

Summary of the week


Monday
Intro computers &
programming
Intro Unix
Tutorial Unix

Tuesday
Intro Perl
Regexp & Perl In-liners

Wednesday
Object Oriented
programming
BioPerl
EMBOSS

Thursday
Database indexing
BLAST
HTML & cgi-bin

Friday
Finish exercises
Users questions

Unix
Next presentation

Vassilios
alias
UnixMan!!
!

You might also like