CS100J, Spring 2001
Tues 1/23
Lecture 1
-------------------------------------------------------------------------------
Announcements:
+ get handout (overview)
+ follow instructions on overview ASAP
+ Project 1 (P1) due Tues 1/30
+ Staff page on website being updated
+ no CS100J sections this week
+ reading: Savitch Chaps 1-2 this week (see Syllabus for details)
+ software demos -- securing Thurs/Fri times (TBA)
-------------------------------------------------------------------------------
Topics:
+ CS100 philosophy
+ J vs M
+ AEW
+ course mechanics
+ fundamental programming concepts
  - definition of programming
  - how programming works
  - problem solving
  - algorithms
-------------------------------------------------------------------------------
CS100: J & M
+ both introduction to programming
+ assume NO experience 
  - be repsectful of others if you have experience!
  - inexperience != bad grade
+ different flavors
  - M: more mathematical, scientific computation, more MATLAB
  - J: less math, more Java
  - 5 years from now, choice won't matter much, so don't worry!
-------------------------------------------------------------------------------
Course Procedures:
+ attend a lecture once Tues, once Thurs
+ attend a section once (shop around)
+ 6 projects
  - longer assignments
  - start early!
  - practice for programming on your own
+ many exercises
  - short, fewer points, mandatory
+ 3 prelims and final
+ software:
  - Java: CodeWarrior, JDK
  - MATLAB
  - info on versions and requirements
+ books:
  - Savitch required
  - all others optional
+ website
  - see overview
  - your main source of everything!
  - see, you found this file! Ain't this great?
-------------------------------------------------------------------------------
Programming
+ automating problem solving
+ problems are physical and abstract
+ build models which are physical and abstract
+ models will solve the problem where we cannot/will not
+ use a computer! need to write software...
-------------------------------------------------------------------------------
Computer Rudiments:
+ hardware:     physical components of a computer
+ software:     "the intelligence" that runs the hardware
                 - create with programming (coming up!)
+ information:  bits and bytes -- sequences of 1s and 0s (digits) that 
                represent non-digital information
+ memory:       "space" inside a computer to store information
                - software can "borrow" a portion to use
                 - programming involves using memory
+ file:         collection of information with a name
+ directory:    collection of files
+ folder:       same as directory
+ path:         location of file or directory starting from the 
                 "uppermost" directory
+ ASCII/text:   characters found on the keyboard 
                - uses 8 bits to represent a character which is a byte
                - ASCII (or text) format is universal
                - can load into almost editor and wordprocessor
                - can edit files with programs called text editors
+ Program:      file composed of instructions using a computer language
                - usually text because we need to type those instructions!
                - the process of telling the computer to activate commands
                  in a program is called running or executing
                - information is passed from your text to the computer
                - computer activates each instruction in sequence
+ Interpreting: computer reads each line of code and acts up it before
                acting upon the next line
+ Compiling:    process of converting code into an unreadable format
                - more bits and bytes, but condensed
                - can create "runnable" (executable) files that quickly
                  run your programs
+ Input:        - any information you supply to a program
+ Output:       - any information reported by a program
-------------------------------------------------------------------------------
Process of Programming
+ start with problem
+ look for solution
+ in-between step is called algorithm design
  - break solution down into sequence of steps
  - each step is an instruction
  - the model (or, performer of instructions)
    must be able to follow the instruction
  - may have to keep breaking down steps
  - final algorithm is a program in "words"
+ definition (from above): "Programming is automating problem solving"
+ example: think recipe
  - someone else wrote a sequence of instructions
  - used terms that are accepted and have known values/meanings
  - you, the human, act on the instructions
  - something is created and hopefully tastes good
-------------------------------------------------------------------------------
Computer Language
+ need to translate English language algorithm
  into a computer language
+ many options: MATLAB, Maple, Java, C, C++, etc
+ Choose MATLAB and Java for CS100
-------------------------------------------------------------------------------
Language Elements
+ computer language usually written (in the future, spoken)
+ has syntax (grammar) and semantics (meaning)
+ use keyboard characters (text) to form "words" and other symbols
+ "words" and other symbols are called tokens
+ tokens include:
  numbers, operators, variables, keywords, punctuation, 
  token separators, strings, comments (described in more detail soon)
-------------------------------------------------------------------------------
Statements
+ combine tokens to create "sentences"
+ each "sentence" forms an instruction/command
+ "sentences" are called statements
-------------------------------------------------------------------------------