Using These Slides
        
          
            
              | -> | next slide | 
            
              | <- | prev slide | 
            
              | Esc | global ctrl+f | 
          
        
        You can click on links when we use examples. This will
        load the example in your browser.
      
      
        Expectations and Success
        
          - Turn in assignments, tests, projects on time
- Complete the project
            
              - Minimum of HTML5, CSS, and JavaScript. See
              Project online for more info
 
- Attend class
Motivation
        
          - Computer science is a huge, blossoming field
- Learning about computer science will make you more
          employable
            
          
- Applications of computer science:
            
              - Cloud computing, GPS, robotics, email, the web,
              video games, cars (self-driving or not), cell phones,
              etc.
 
Chapter 1: Introduction to Computers and the
        Internet
      
      
        Client-side Programming
        
          - Web applications that run on the client
            
              - Client refers to the user's device
              (e.g. a computer or cell phone)
 
- Example: you make your own webpage using HTML5
- Technologies: HTML5 (hyper-text markup language), CSS
          (cascading stylesheets), Javascript
Server-side Programming
        
          - Applications that respond to client-side requests
            
              - Server refers to a machine that responds
              to clients
- These applications respond to information coming
              from the client
 
- Example: user submits a registration form that must
          be saved in the server's database
- Technologies: Apache (web server), MySQL (database),
          PHP
HTML5
        
          - Chapters 2 and 3
- HyperText Markup Language
- Specifies the content and the structure of a
          webpage
CSS
        
          - Chapter 4
- CSS = “Cascading Style Sheet”
- Controls the presentation of the webpage
- Separates the presentation from the content and
          structure of the webpage
- Enables changing the view of the website
Javascript
        
          - Chapters 6 and 7
- Javascript helps make web pages dynamic;
          e.g. they change with user interaction
- These interactions are referred to as events
            
              - Examples of events: losing focus on a form,
              hitting a button, changing the mouse location
 
jQuery
        
          - Simplifies Javascript by providing expansive
          library
- Provides portable behavior
- Why does portable matter?
            
              - Not ever web browser behaves the same way
- You've probably seen a web browser complain about
              compatibility issues before
 
A brief history of the Internet
        
          - ARPANET
            
              - The first version of the Internet
- ARPA = “Advanced Research Projects Agency”
- The first message was sent from UCLA to
              Stanford
- More universities and networks were added, slowly
              creating the modern Internet
 
A brief history of the Internet
        TCP/IP
        
          - TCP = “Transmission Control Protocol”
            
              - Ensures transmitted data integrity and verifies
              destination address
 
- IP = “Internet Protocol”
- Different types and configurations of networks
          appeared over time
            
              - Each one was a sub-network
 
- IP creates a network of networks
A brief history of the Internet
        
          - Each computer on sub-networks and the Internet is
          assigned its own IP address
            
              - We used to use IPv4, which is 32-bit (meaning
              approximately four billion address)
- We ran out of IPv4 address; we now use IPv6,
              which is 128-bit (containing approximately 340 follow
              by 36 zeros worth of address
                
                  - We should be good for a while!
 
 
World Wide Web, HTML, HTTP
        
          - World Wide Web is a section of the internet
- Specifically, this 'section' of the internet servers
          HTML (hypertext markup language) documents
- The hypertext transfer protocol (HTTP) is the
          communication protocol used to serve an HTML
          document
- A URL (uniform resource locator) specifies the
          location of the html document on the web.
            
          
Web Basics
        Hyperlinks
        
          - Link to another document
- Documents are typically HTML pages
            
              - Can also link to an email address via
              mailto:
- Can also link to a file, even a local file (the
              local file would need to exist)
 
Web Basics
        URIs and URLs
        
          - URI = uniform resource identifiers
            
              - Can be files (file://), file
              transfers (ftp://),
 
- URL = URIs that start with http://orhttps://
              - Remember, http://= hypertext
              transfer protocol
 
Web Basics
        Anatomy of a URL
        
          - Ex:
          http://www.deitel.com/books/downloads.html
- www.deitel.comis the
          hostname (which is hosted on a
          host computer)
- This hostname is translated into an IP address
          (remember IP stands for Internet Protocol)
- /books/downloads.htmlis the resource's
          location (- /books) and name (downloads.html)
          on the webserver
Web Basics
        Anatomy of a URL
        
          - This IP address uniquely identifies the host on the
          Internet
- This translation occurs by looking up the hostname on
          a DNS server (DNS = domain name system)
Web Basics
        Anatomy of a URL
        
          - DNS is complex, but think of it like a network of
          computers whose sole purpose is to facilitate this
          lookup
- The complicated part: these servers need to sync
          updates without messing the entire system up
- Hackers perform DNS attacks to trick people into
          giving up personal information to the wrong website (even
          though the site appears legitimate)
Web Basics
        The request/receive process
        
          - Web browser sends
            
              - GET /books/downloads.html
              HTTP/1.1
 
- 
            GETis an HTTP command asked for a
            particular resource, in this case requesting
- 
            HTTP/1.1specifies the protocol and
            version
              - Any server that can understand HTTP version 1.1
              can successfully interpret this request
 
Web Basics
        The request/receive process
        
          - The server responds with another message, indicating
          what happened with the request
            
              - HTTP/1.1 200 OK -> indicates success
- HTTP/1.1 404 Not found -> indicates the
              resource could not be found
 
Web Basics
        The request/receive process
        
          - The server responds with another message, indicating
          what happened with the request
            
              - 100s = informational (continue, switching
              protocols)
- 200s = success (ok, accepted, no content)
- 300s = redirects, more action needed (multiple
              choices, use proxy, permanent redirect)
- 400s = client error (bad request, unauthorized,
              forbidden)
- 500s = server error (internal server error, bad
              gateway, loop detected)
 
Client-side scripting
        
          - Script runs on the client
- Example: Javascript
- Problems: script execution is limited by client's
          browser's capabilities, security concerns
- Benefits: doesn't use bandwidth to process
          information (e.g. form validation can happen
          entirely on the client
Server-side scripting
        
          - Scripts that run on the server
- Example: PHP, database access
- Problems: time (client may wait for server), extra
          bandwidth (potentially)
- Benefits: not limited by client's computer; means web
          designer can control what's on the page
Ajax
        
          - Covered in detail in Chapter 16
- Allows webpages to behave like desktop
          applications
- Facilitated by sending requests to the server without
          loading an entirely new HTML document
Types of Programming Languages
        
          - Computers only understand 0's and 1's
- When you write code, the code is eventually
          translated down to a language that is comprised of 0's
          and 1's
- Languages that are understood directly by computers
          (e.g. they are made of 0's and 1's) are known as
          machine langauges
- Writing code this way is very cumbersome
- People started writing English abbreviations of these
          0's and 1's
            
              - These formed a higher abstraction of programming,
              known as assembly languages
 
Types of Programming Languages
        
          - Machine languages still quite cumbersome, so
          high-level languages were created to provide
          more abstraction
            
              - High level languages, such as C++, Python, Java,
              Javascript, etc, allow programmers to write
              statements that are almost english
 
Types of Programming Languages
        
          - Two types of high-level languages:
          interpreted and compiled
- Interpreted - program statements are
          translated to machine code as the program executes (as
          each line of code is running)
- E.g. Python, Javascript
            
              - Good for the web, code can start running as soon
              as it downloads to the client's computer
 
Types of Programming Languages
        
          - 
            Compiled - all program statements are
            converted into machine code, then the program can run
            
              - E.g. C++, Java
- Generally significantly faster than interpreted
              languages
- The translation to machine language happens
              before the program is run, instead of as the program
              is running
 
Object Oriented Programming
        
          - This is a topic for an entire course
- How many people have heard of this before?
- How many people have used OOP before?
- Basic concept: group data and operations together
          logically and allow hierarchies of relationships
Object Oriented Programming
        
          - Operations (methods): steer, accelerate, decelerate,
          fill up with gas, etc
- Data (attributes): speed, heading, gas tank status,
          odometer, etc.
Object Oriented Programming
        
          - You don't have to know how the car precisely works to
          use one. You simply know that the pedal accelerates the
          car, brake decelerates, etc
- This is known as information hiding
- Another engineer has designed how the care operates,
          you just use the public (available) operations
            
              - But there are many more operations happening
              inside the car than you are aware
 
Object Oriented Programming
        
          - We refer to the design of the car as the
          class (think of this like a blueprint)
- Once you have the design for a car, you can reuse it
            
              - Each "usage" is an instantiation of a
              car
 
- Similarly, once you have a design of a car, you can
          extend it to add new features
            
              - E.g. add upgrades, wings, etc
- This is known as inheritance