10/25/2014 Computer Programming 1

 Introduction to algorithms and programming
◦ What is an algorithm?
◦ What is programming?
 Programming philosophy
◦ How to think of a programming problem
◦ How to plan the solution to the problem
 Problem decomposition
 Top-down refinement
10/25/2014 Computer Programming 2
 Using an interactive development
environment (IDE)
 Types of programming errors
◦ Syntactic
◦ Semantic
 structured programming language
◦ What is a programming language?
◦ What is a structured programming language?
10/25/2014 Computer Programming 3
 Main language concepts covered:
◦ Simple data types
 Numbers (integer, real)
 Boolean
 Characters
 Strings
◦ Input / output statements
◦ Basic statements (assignment, conditionals,
iteration/looping)
10/25/2014 Computer Programming 4
 Understand basic components in a computer
architecture
 Appreciate the role of programming
languages
 Design a top-down solution for solving
problems
 Be familiar with an IDE
 Edit, compile, debug and run short programs

10/25/2014 Computer Programming 5
 Exams (50%)
◦ midterm (7
th
week) – 20%
◦ final (end of course) – 30%
 Quizzes (30%)
◦ measure progress
◦ every 2 weeks
 Homework (10%) … will say more
 Participation (10%)
◦ attendance
◦ will I remember who you are?
10/25/2014 Computer Programming 6
 Initially not programming, but thinking about
programs
 Small programs, 1 or more, depending on the
complexity
 Frequently assigned (each week)
◦ Like a language, you need frequent practice
 Do not wait until the last moment to work on
your program
10/25/2014 Computer Programming 7
10/25/2014 Computer Programming 8
 Computer
◦ one that computes (Webster’s dictionary)
◦ In other languages:
 French: ordinateur (from “order”)
 Italian: cervello elettronico (“electronic brain”)
 Other?
 Computer: a programmable device that can
store, retrieve and process data.
10/25/2014 Computer Programming 9
 Hardware:
◦ The actual physical machine
◦ Consists of several hardware devices
 Software:
◦ The programs that tell the machine what to do,
i.e. give instructions to the machine
◦ Different types of programs written in different
languages

10/25/2014 Computer Programming 10
The relationship between
Hardware and Software
 Hardware and
software have a
symbiotic
relationship, this
means that without
software hardware is
very limited; and
without hardware,
software wouldn’t be
able to run at all.
They need each
other to fulfill their
potential.
10/25/2014 Computer Programming 11
 Input:
◦ Keyboard
◦ Mouse, Touchpad, Joystick
◦ Pen & tablet, Perforated cards
 Output:
◦ Printer
◦ Screen (monitor)
◦ Teletype
 Input & Output:
◦ Auxiliary Devices:
 disks (hard disk, floppies, DVDs/CDs, USB keys, Flash
memories)
 tape drives
◦ Touch screen
◦ Network cards (intranet, internet)
10/25/2014 Computer Programming 12
 Memory
◦ Permanent: Disks & other I/O devices
◦ Volatile: Main memory, Graphic memories
◦ Virtual
 Main memory is like a very large set of
mailboxes, each with its own address.
 It stores data encoded as binary numbers.
10/25/2014 Computer Programming 13
 Central Processing Unit(s)
◦ One or more
◦ A CPU contains
 Arithmetic Logic Unit (ALU)
 A Control Unit: controls the actions of other components
 The CPU controls just about everything else by executing
instructions
◦ stores data in memory
◦ retrieves data from memory
◦ performs computations
◦ sends and gets data from other devices
 Not all computational systems rely on a central processing
unit. An array processor or vector processor has multiple
parallel computing elements, with no one unit considered the
"center". In the distributed computing model, problems are
solved by a distributed interconnected set of processors.
10/25/2014 Computer Programming 14
 Bus
◦ In computer architecture, a bus is a
communication system that transfers data
between components inside a computer, or
between computers.
◦ covers all related hardware components (wire,
optical fiber, etc.) and software, including
communication protocols.

10/25/2014 Computer Programming 15
 Vacuum tubes
 Mainframe computers (IBM)
 Mini computers (DEC)
 Micro computers (IBM, NEC, MacIntosh)
◦ Desktops
◦ Laptops
◦ Blackberry
 Supercomputers
 Tablets and smartphones
10/25/2014 Computer Programming 16
 Every year or two computer power
approximately doubles
◦ Memory size (RAM)
 Memory used to execute programs
◦ Secondary storage (permanent storage)
 E.g. disk storage, used to to hold programs and data
over time
◦ Processor speeds
 Speed at which computers execute their programs
10/25/2014 Computer Programming 18
 Applications:
◦ Rapidly increasing hardware power allows
applications to get bigger and more complex
 Costs
◦ Hardware costs dropping
◦ Software development costs rising
 Software development complexity
 Programmer salaries
 Cost of slipping schedules
 Unanticipated interactions in complex systems
 Unpredictability of software development times
10/25/2014 Computer Programming 19
 http://www.webopedia.com/
 http://en.wikibooks.org/wiki/A-
level_Computing/AQA/Computer_Component
s,_The_Stored_Program_Concept_and_the_Int
ernet/Fundamentals_of_Computer_Systems/H
ardware_and_software


10/25/2014 Computer Programming 20