Welcome to Introduction to Computers and Programming Course! Course Introduction Professor: Sana` Odeh [email protected] Office hours: Tuesdays: 12:30 pm - 1:30 pm in room 321 in WWH,

Download Report

Transcript Welcome to Introduction to Computers and Programming Course! Course Introduction Professor: Sana` Odeh [email protected] Office hours: Tuesdays: 12:30 pm - 1:30 pm in room 321 in WWH,

Welcome to Introduction to Computers
and Programming Course!
Course Introduction
Professor: Sana` Odeh
[email protected]
Office hours:
Tuesdays: 12:30 pm - 1:30 pm
in room 321 in WWH, or at other times by appointment
Road Map for Today


Welcome to Introduction to Computers and
Programming!
Course Description
– What material will we cover?
– What am I getting myself into?

Administrative Issues
– Course Web Page, Text Book, Exams, Office Hours,
Homework, Grading, Cheating Policy, etc.


Syllabus
Intro. to Programming Languages and Java
2
Course Prerequisites

Prerequisites:
– No prior programming experience required (Really)

Who should be taking this course:
– students who want to switch to a computer science
major
– students who want to take a computer science minor
or a computer applications minor
– students who are just interested in programming.

Who should NOT be taking this course
– Students trying to get out of taking a math
requirement. This class may be more difficult than
the math you are trying to avoid.

You must get a c or better in this class to take
further computer science classes.
3
Course Description

Official Description:
– Elementary introduction to programming in Java.
– Students design, code, and debug programs
using a high level programming language.
4
What the class is really about
There are two main goals of this course:
1. Basics of Java
2. Core Concepts of Programming
Languages
5
1. Learn the Basics of Java
Programming
Java is a popular programming language, widely used in
industry.
 We will learn all the specifics of how to program in Java.
 This includes all the peculiar rules (SYNTAX) that are
specific to Java.
 We will cover the fundamentals of programming:

–
–
–
–
–
–
Variables
Arithmetic
If / Else, For Loops
While Loops
Arrays
Methods
6
For Example
/*
Sample Java Program
*/
This program counts
from 1 to 10. In a
few weeks, it will all
make sense (I
promise!)
public class Sample
{
public static void main (String [] args)
{
int i;
for (i = 1; i <= 10; i++)
{
System.out.println ("Number: " + i);
}
}
}
7
2. Learn the Core Concepts of all
Programming Languages

There are many programming languages
available:
– C++, C, Java, Ada, Perl, Pascal.



All of these languages share core concepts.
By focusing on these concepts, you are better able
to learn any programming language.
Note: Java is an object oriented programming
language. However, we will not touch upon the
concepts which categorize it as one.
8
An Example: For Loops
Java has a construct called a for loop that
enables a program to repeat actions over and
over.
 Most other languages also have a for loop.
 Hence, by learning about for loops in
Java, you can easily learn for loops in C or
Ada.

9
3. Learn the Principles of
Software Development



Building high quality software is very difficult.
The course presents the syntax and concepts of
programming, and also presents strategies for building
real software that addresses real problems.
I will also try to bring my real-world industry experience
to class.
10
Administrative Matters
11
Course Web Site
Course web site is available at:
http://www.cs.nyu.edu/courses/fall08/V22.0002001/index.html
Web site contains the following information:

–
–
–
–
–
–
–
–
Administrative information
Course Syllabus
Homework assignments
Class notes
Class programs
Sample exams
Compiler instructions
Link to the class mailing list
12
Course Text Book





Introduction to Java
Programming (7th
Edition-- 6th edition is
fine too!)
Available at the NYU
Bookstore
Book includes a CDROM with Java
programs and other
supplemental materials.
Lecture notes will follow
the book.
Please keep up with the
reading!
7th
13
Software

For the course, we will be using the following software:
1.
2.
Sun’s JDK (Java Development Kit)
An IDE ( a GUI Program that will make it easy for you to
create, edit and debug java programs):
–
Jcreator (will be used in class) for Windows
for MACs
–



The BlueJ Edition IDE
All these products can be downloaded from the web for
free and they are installed in the ITS PC labs
The class website - Software page has instructions on
downloading and installing these programs.
If you do not have your own computer, the computer
labs on campus have the software.
14
Grading

Your grade will be determined as follows:
– Midterm (30%)
– Homework (possible quizzes) (30%)
– Final Exam (40%)

Class participation will help your grade!
15
homework
• Ten points will be deducted for each class day late, with a
possible maximum of 30 points being deducted.
• Home works will not be accepted after the third class following
its due date.
•For each assignment that you do not hand in within the time limit, your final
grade will be lowered by one letter grade ( i.e., if you are averaging a B+,
but you have missed 2 home works, your final grade will be B-).
• Students who spend little time on the homework invariably do
poorly on exams and end up with a poor final grade.
• For your own good you must save all programs on back-up
storage medium. Lost programs or crashed systems do not
provide adequate excuses for missing or late homeworks.
16
A Word About Cheating
For the purposes of this class, cheating is defined as:
• Discussing homework concepts is fine, but you must submit your own
work.
• Copying all or part of another student's homework, project or exam.
• Allowing another student to copy all or part of your homework, project,
or exam.
• Please note that If you are caught cheating, you will receive an
immediate FAILURE for the course.
• Copying ideas, text or a line of code (segment) from an outside
resources is NOT allowed “without prior attribution”:
• Make sure to read the CS department statements on Academic
Integrity for more details.
If you are caught cheating, you will receive an immediate
FAILURE for the course.
17
Student Civility

In an effort to make this class enjoyable for
everybody…
– Please be on time to class!
– Please do not talk to your friends and
neighbors in class! It disturbs everyone, and
makes it hard to concentrate. If you have a
question, just ask me!
– Please turn your pagers and cell-phones off!
18
Getting Help


Help is always available!
Option 1: Come to my Office Hours
– Office Hours: Tuesdays: 12:30 pm - 1:30 in
room 321 in WWH, or at other times by
appointment
– Location: Room 321 Warren Weaver Hall
– I get bored when nobody visits!
– If you cannot make my office hours, I will be happy to
make an appointment with you. Please try to give me
advance warning when you need an appointment.
19
Getting Help

Email the class e-tutor, should respond within 24 hours.
– For more information on tutoring, please go to the
“Tutoring/Help” page on the course website:

http://www.cs.nyu.edu/courses/fall08/V22.0002-001/tutoring.htm
20
Introduction


The purpose of this course is to teach you about
computing, but particularly, programming in Java
(a powerful, widely-used programming
language).
Why care about computers and programming?
–
–
–
–
–
Growing field with great opportunity (read: $)
Creative
Challenging
Fun (Developing Games for example)
Enabling/Empowering technology
21
What Is a Computer?

Computer
– Performs computations and makes logical decisions
– Millions / billions times faster than human beings

Computer programs / software
– Sets of instructions that tells the computer what to do

Hardware
– Physical devices of computer system
22
 2003 Prentice Hall, Inc. All rights reserved.
(modified by Evan Korth)
Computer Organization

Six logical units of computer system
– Input unit

Mouse, keyboard
– Output unit

Printer, monitor, audio speakers
– Memory unit

Retains input and processed information
– Arithmetic and logic unit (ALU)

Performs calculations
– Central processing unit (CPU)

Supervises operation of other devices
– Secondary storage unit

Hard drives, floppy drives
23
 2003 Prentice Hall, Inc. All rights reserved.
Evolution of Operating Systems

Batch processing
– One job (task) at a time
– Operating systems developed
Programs to make computers more convenient to
use
 Switch jobs easier


Multiprogramming
– “Simultaneous” jobs
– Timesharing operating systems
24
 2003 Prentice Hall, Inc. All rights reserved.
Personal Computing, Distributed
Computing, and Client/Server
Computing

Personal computers
– Economical enough for individual
– Popularized by Steve Jobs and Steve Wozniak
with the introduction of the Apple in 1977.
– In 1981 IBM introduced the IBM personal
computer using “off the shelf” components.
25
 2003 Prentice Hall, Inc. All rights reserved.
(modified by Evan Korth)
Machine Languages, Assembly
Languages, and High-level Languages

Three types of programming languages
– Machine languages


Strings of numbers giving machine specific instructions
Example:
+1300042774 (these would really be in binary)
+1400593419
+1200274027
– Assembly languages


English-like abbreviations representing elementary
computer operations (translated via assemblers)
Example:
LOAD
ADD
STORE
BASEPAY
OVERPAY
GROSSPAY
26
 2000 Prentice Hall, Inc. All rights reserved.
Machine Languages, Assembly
Languages, and High-level Languages
– High-level languages

Instructions closer to everyday English
–


English is a natural language. Although high level
programming languages are closer to natural languages, it is
difficult to get too close due to the ambiguities in natural
languages (a statement in English can mean different things
to different people – obviously that is unacceptable for
computer programming). However, this is a big research
area of computer science.
Use mathematical notations (translated via compilers)
Example:
grossPay = basePay + overTimePay

Interpreter – Executes high level language programs
without compilation.
27
 2003 Prentice Hall, Inc. All rights reserved.
(modified by Evan Korth)
Some Procedural High-level
Languages

Other high-level languages
– FORTRAN

Used for scientific and engineering applications
– COBOL

Used to manipulate large amounts of data
– Pascal

Intended for academic use
28
 2003 Prentice Hall, Inc. All rights reserved.
The Key Software Trend:
Object-Oriented Technology

Objects
– Reusable software components that model items in the
real world
– Meaningful software units


Date objects, time objects, paycheck objects, invoice objects,
audio objects, video objects, file objects, record objects, etc.
Any noun can be represented as an object
– Very reusable
– More understandable, better organized, and easier to
maintain than procedural programming
– Favor modularity
29
 2000 Prentice Hall, Inc. All rights reserved.
History of Java



A group of 13 Sun employees including James
Gosling started the “Green Project” in 1991
with the intention of planning for the next wave
in computing.
They designed the *7 which was “an
interactive, handheld homeentertainment device controller
with an animated touchscreen
user interface”
Gosling’s contribution to the project was an
entirely new processor independent language
call “Oak”.
30
History or Java (continued)





To make a long story short, people at Sun
decided to use this new language for the web.
At the Sun World conference in May 1995, Marc
Andreessen of Netscape announced an
agreement to integrate Java into its browser.
This meant that webpages were no longer going
to be static.
Over the next few years, java became very
popular for writing applets (small programs
included on webpages)
Today in addition to writing applets, Java is used
for writing large applications as well as
applications for mobile devices
For more on the history of Java, check out:
http://java.sun.com/features/1998/05/birthday.html
31
Characteristics of Java
Java
is simple
Java
is object-oriented
Java
is distributed
Java
is interpreted
Java
is robust
Java
is secure
Java
is architecture-neutral
Java
is portable
Java’s
performance
Java
is multithreaded
Java
is dynamic
32
Basics of a Typical Java Environment
Java programs normally undergo five phases
1.
Edit
•
2.
Programmer writes program and stores
Phase 1
program on disk (.java file)
Compile
•
3.
Compiler creates bytecodes from
program (.class file)
Phase 2
Editor
Disk
Program is created in
an editor and stored
on disk in a file ending
with .java.
Compiler
Disk
Compiler creates
bytecodes and stores
them on disk in a file
ending with .class.
Primary
Memory
Phase 3
Class Loader
Load
•
4.
Class loader stores bytecodes in
memory
Disk
Verify
•
5.
Verifier ensures bytecodes do not
violate security requirements
Phase 4
Bytecode
Verifier
Execute
•
. ..
..
.
Class loader reads
.class files
containing
bytecodes from
disk and puts
those bytecodes
in memory.
Primary
Memory
Bytecode verifier
confirms that all
bytecodes are valid
and do not violate
Java’s security
restrictions.
. ..
..
.
Interpreter translates bytecodes into
machine language
Primary
Memory
Phase 5
Interpreter
Interpreter reads
bytecodes and
translates them into
a language that the
computer can
understand,
possibly storing
data values as the
33
 2003 Prentice Hall, Inc. All rights reserved.
Phase 1
Editor
Disk
Program is created in
an editor and stored
on disk in a file ending
with .java.
Phase 2
Compiler
Disk
Compiler creates
bytecodes and stores
them on disk in a file
ending with .class.
Primary
Memory
Phase 3
Class Loader
Disk
Phase 4
Bytecode
Verifier
. ..
..
.
Class loader reads
.class files
containing
bytecodes from
disk and puts
those bytecodes
in memory.
Primary
Memory
Bytecode verifier
confirms that all
bytecodes are valid
and do not violate
Java’s security
restrictions.
Typical Java
environment
. ..
..
.
Primary
Memory
Phase 5
Interpreter
. ..
..
.
Interpreter reads
bytecodes and
translates them into
a language that the
computer can
understand,
possibly storing
data values as the
program executes.
34
 2003 Prentice Hall, Inc. All rights reserved.
Another Basic Step for Java
Programming

Debugging
– Check program execution and output to ensure
program compiles and runs as expected
– If it doesn’t, make corrections in the edit
phase and repeat the remaining steps
35