Sie sind auf Seite 1von 16

COMS W1004

Introduction to Computer Science

and Programming in Java

Instructor: Adam Cannon

Lecture 1: Introduction

Course objectives
Course information
Assignments and Grading
Academic Honesty
Preliminary Definitions
Linear Search
Course Objectives
Java programming Skills

Knowledge of the fundamental concepts in
computer science

Algorithmic problem solving capabilities
Course Information
Course information may be found on courseworks at:

Please look there for answers to your questions
and make use of the Piazza discussion board.
We will use two textbooks in this course. Both are
Available at the Columbia University Bookstore
in Lerner Hall.

Big Java Late Objects (1st Edition) by Cay Horstmann

Invitation to Computer Science (6th Edition)
by G. Michael Schneider and Judith L. Gersting
Introduction to algorithms and algorithmic problem solving
Java basics
Using classes in Java
Iteration and conditionals in Java
Boolean logic and elementary circuit construction
Introduction to Computer Organization
Software testing
Arrays and Array Lists
Computer Networks
Beyond the basics in Java programming:
I0 and exceptions
Models of Computation
Assignments and Grading
There will be 5 to 6 two-part homework
assignments. Your grade will be
determined using the following guideline:
35% homework
25% midterm exam (October 22)
40% final exam
Academic Honesty
You are encouraged to verbally discuss the
classroom material and homework problems
among yourselves, the TAs and the instructor.

You are expected to write-up the problem sets
and do all programming by yourself

Do not copy anyone elses work

for a description of the departments academic
honesty policy
Emerging Scholars Program
Learn about CS as a problem solving
See the Big Picture
1-point class, no programming
Because its where the cool kids hang out
Preliminary Definitions

Dictionary Definition: A procedure for solving a mathematical
problem in a finite number of steps that frequently involves
repetition of an operation; broadly: a step-by-step method of
accomplishing some task.
Preliminary Definitions

Textbook Definition: A well-ordered collection of
unambiguous and effectively computable operations
that when executed produces a result and halts in a finite
amount of time.
Preliminary Definitions
Computer Science

Textbook Definition: The study of algorithms including

Their formal and mathematical properties
Their hardware realizations
Their linguistic realizations
Their applications

Your first Algorithm
Linear Search: (also called sequential search)

Algorithm to determine whether a given name x appears
on a list.

Input: A list of n 1 names A[1], A[2], ... , A[n],
and a given name x.

Output. The message "Sorry, x is not on the list" if x is not
on the list.
Otherwise, the message: "x occurs at position i on the list."

A programming language is a notation for specifying
instructions that a computer can execute
Every (programming) language has a syntax and a
Syntax specifies how something is said (grammar)
Semantics specifies what it means
Pseudocode is an informal programming language with
English-like constructs modeled to look like statements
in a Java-like language
Anyone able to program in any computer language
should understand how to read pseudocode instructions.
When in doubt just write it out in English.

Your first Algorithm
Here are the instructions for linear search written in

found = "no";
while (found == "no" and i <= n)
if (A[i] == x)
{ found = "yes";
location = i;
if (found == "no")
print ("Sorry, " + x + " is not on the list");
{ print (x + " occurs at position " + location +
" on the list");

Chapters 1 and 2 in Schneider and Gersting