- Intro from Pito and Tim
- Tour of the course web site
- Daily schedule
- 10:00am - Class starts
- 12:00 - break for lunch
- 1:00 - afternoon session starts
- 4:00 - review what the homework assignment is for 'tomorrow'
- be present and ready to start at 10:00am
- eating during class
- only use your computer when you should
- show respect for whoever is speaking with your attention
- Learning objectives
- How did it go with the homework? What class design did you come up with? What was hard?
- Weekly Programming Assignments to develop individual coding skills in OO languages
- PA1 - create a player strategy for a maze game with jewels and opponents
- Today: work out the interfaces needed for the player strategy.
- Next Monday: run a round-robin tournament of all strategies!
- Brainstorm: What exactly happens when I type http://www.google.com into a browser address box?
IP & Protocols
- Review for some, new for others.
- Need to understand this if you want to be successful debugging Rails and Android apps.
- IP: "internetwork" protocol
- Gets data between one 'host' (=computer or server) and another
- Like the boxes, we need an address from and to: "IP address!" 18.104.22.168
- what's a protocol? protocols are always layered, one on top of the other
- lower level protocols are 'closer to the hardware', higher level protocols are 'closer to the user'
- Discussion: could you call .mp3 or .jpg a protocol??
- IP addresses and DNS
- Decentralized 'distribution' of a key. I set up a new computer, where's the IP address come from?
- Problem: I want to have a unique key that is guaranteed to be unique
- But, I don't want to have to go to a central authority to get the key
- Discussion: By the way, why not? Other examples of this principle? How might this work?
- We don't want 'people' to remember 22.214.171.124. Why? Any regular life examples of this?
- Solution: Indirection. But now we need a directory. Why?
- DNS: distributed name service
- Also take a look at
- More about IP
- So the IP address is for 1 specific 'host' or server (as usual there are exceptions
- IP is the way servers talk 'to each other' to get a packet of bits between them
- Conceptually, 'send these bits to this ip address'
- Problems: your client isn't attached to my server by a wire
- So who is that message sent to?
- Packet switching, Contrast with POTS Was a big deal when first invented.
- There was a 'connection' literally between my phone and yours
- Packet Switching
- Packet switching breaks message into pieces and sends them all on their way
- Each one finds its own way to the target
- Other components of the network? Routers
Core Web Architecture
- Discussion. How does it all work?
- Client's ask work to be done; server does it.
- Web browser is an http 'client'
- What does that mean?
- Web server is an http 'server'
- What does that mean?
WEB Architecture - Client
- Web client: just a tcp/ip client that makes requests and displays results in a window
- Default: HTTP protocol, port 80, expects to see html
- But what other protocols and formats does it support?
WEB Architecture - Server
- Web server: just a tcp/ip server that listens and responds to HTTP requests
- Take a look at a url
- Let's take it apart
- What does it stand for?
- What are the parts of a URL
- http:// -> protocol
- brandeis.edu -> where's the server
- So the client -- your computer needs to be able to 'talk to' the server
- Hm. So is http a protocol?
- What about tcp/ip. What does that stand for?
- So we have 3 protocols already: http, tcp and ip.
- What does curl do?
- Why do brandeis.edu and www.brandeis.edu act differently?
- Why does it act differently from in the browser?
- Who handles HTTP result-codes?
- Criteria to think about for products
- 3-4 students REALLY excited about doing this product
- Challenging problem for that size team, but not impossible (it's pretty big team)
- Chance of going viral, paying for your tuition
- Societal positive impact
- Sponsoring of project ideas
- Review which ones have been sponsored
- See if we can add details to any that have not yet been sponsored, or delete them as uninteresting
- Brainstorm on more ideas for projects, add details etc.
- Git clinic
- Install Git, Github
- Git in 5-minutes
- Intro to Eclipse
- Screen Recording Clinic