CS6320:  SW Engineering of Web Based Systems

 

Outline

A proposed schedule is given below. This may be subject to change. Topics may be added or removed or eliminated from coverage. SOME modules cover mul

NOTE: All materials and reading are required expect for that in our reference books.

When refering to reading in the J2EE book, it will be preceeded by a J. Thus, J-Chapter 3, means chapter 3 of the J2EE book. Likewise reading in the e-Commerce Applications book will be preceeded by a E. Google App Engine book, it will be preceeded by a GAE.


Week
Module
Materials
1 1 Introduction to Class

Class Lecture, Chapter 1.

1-2 R1 Ruby on Rails

Class Lecture

2 C1 Cloud

Class Lecture,

2/3 C2 Cloud: Amazon Web Services - EC2 only [cloud as IAAS] Class Lecture, Read Chapter 1, 3, 5, 6(elastic IP), AND read chapter 3
of AWS for Admins For Dummies (in safari books in library.csueastbay.edu).
3 N1 NodeJS and MEAN

Class Lecture,
Suggested READING: In "Getting MEAN" book available electronically on Safari: Chapters in MEAN 1-4 (note:we are using Webstorm for creating project, running locally, debugging, and deployment to Heroku, ignore section 3.5) and chapter MEAN 7

4 3 e-Business

Class Lecture,

4 4 Front End: Design, HCI, AND Process Management

Modules 3, 4, 6 on CS2020 page

SourceTree and BitBucket

4 5 Server-Side Processing: Servlets

Class Lecture, Chapter 6, (Reference book optional reading J-Chapter 5)

Languages?

Exercise 0 (10 points) : due April 28, 11pm Create your own hello world servlet that you deploy to your GlassFish server on your local machine. Show your work to your instructor if called and submit screen shots to blackboard. You must bring in your local machine and demonstrate during class or no credit for this exercise.

     
4/5 C3 Cloud: Google App Engine (GAE) [cloud as PAAS]

Class Lecture, GAE book Chapter 1 and 2

  • ExerciseGAE.1 (10 points) : DUE May 1, start of class Using Chapter 2 make your own clock web app (servlet) and deploy to GAE in your developer account you must set up. TURN IN: go to blackboard->Exercises->ExerciseGAE.1 a pdf document containg:

    1) Running.jpg = screen shot of the web app running in your browser FROM GAE (not local!!!)
    2) URL to GAE exercise
    3) GAE_deploy.jpg = screen shot of your Google App Engine dashboard showing your app deployed.

GAE Tips -- some things I have fond out using it that may be of help to you....lets make this list grow--if you have a problem and a solution report it and we will add it here.

 

Fun:

Budge, Pricing/Scaling --articles (go over after understand GAE)

5 7 Java ServerSide: HTTP Request Headers & Response

Class Lecture, Chapter 6 , (Reference book optional reading J-Chapter 5)

5 8 Web Data: XML

Class Lecture, Chapter 7, (Reference book optional reading J- Chapter 9,14)

Examples:

Commerce XML

Multimedia XML

Exercise: Ex18 (not turned in, requires database setup)

5 9 Web Data: JSON

Lecture

5 10 Web Issues: Internationalization, Localization

Class Lecture,

5 11 Web Issues: Services, Analytics, and more

5/6
-all

6 Social Network Programming

Class Lecture

    • See also course wiki's on blackboard

FACEBOOK OVERVIEW

FACEBOOK LOGIN (Authentication Process and beginning of getting User Data)

FACEBOOK Login rather than Authentication: index.jsp file sample from facebook that

FACEBOOK AFTER LOGIN - SOCIAL DATA AND SOCIAL CHANNEL USE

After Login/Authentication - Read About Facebook Graph API to get Social Data and use Social Channels

BEFORE YOU MAKE CODE---try this out Facebook Graph API Explorer



BASIC EXAMPLES USING FACEBOOK JAVASCRIPT SDK



Sending Client Side Facebook Data to Server Side Program

FACEBOOK ANALYTICS

 

Facebook(FB) Other Resources/Topics:

Facebook Java WebApp and deployment of a Secure URL

Make sure when you deploy your webapp you do so with a secure (SSL) URL

 

 

Useful Links on Facebook and Permissions and User data


Facebook(FB) Exercises YOU are to try


Exercise Facebook 1 (NOT DUE): become developer on facebook and deploy your GAE.1 as a Facebook application (from GAE), Make this a Facebook Canvas Applicaiton and demonstrate from within Facebook!! .Do this in the language of your choice. See the begining create an application webpage from Facebook.

 

Exercise Facebook 2 (NOT DUE) : Extended the dummy Facebook exercise to ask for social data about user's age (calculate from birthdate/year --must ask for permission to this). THIS MEANS you must have Authentication performed and the User must give your app permission (see above and developer.facebook.com for information about how to use Facebook Social Graph api and get permissions. YOu need to figure out the code and what to ask for, etc.

Exercise Facebook 3 DUE May 8, start of class: Extend Facebook 2 &1 exercise to include social channel to post a message (must ask for permission)- MUST DO ON GAE


5/6 12 Java ServerSide: Cookies

Class Lecture, Chapter 6, (Reference book optional reading J-Chapter 5)

5/6 13Java ServerSide: Servlet Session Tracking

Class Lecture, Chapter 6, (Reference book optional reading J-Chapter 5)

6 14 Java ServerSide: Java Server Pages

Class Lecture, Chapter 8, (Reference book optional reading J-Chapter 6,7)

6 15 Java ServerSide: Java Filter

Class Lecture,

facebook authetication filter example (using OLD facebook api--but shows concept of filters--- USE newest Facebook rest api)

check out http://restfb.com/

6 G1 Cloud: Google App Engine (GAE) - web transactions- front-end, request-handler and back-end

Class Lecture, GAE book- Chapter 3

6/7 G2 Cloud: Google App Engine (GAE) - datastore

Class Lecture, GAE book- Chapters 4,5,6,8

7 G3 Cloud: Google App Engine (GAE) - caching

Class Lecture, GAE book- Chapter 9

7 G4 Cloud: Google App Engine (GAE) - Fetching Web resources, Task and Ques

Class Lecture, GAE book- Chapter 12, 15

7/8 G5 Cloud: Google Cloud- other / advanced (on own)

Class Lecture,

  • 3rd party container-based deployment : About Docker and Containers
    • 3rd party custom deployment (or going to Google Cloud Iaas): e.g. Docker and Docker and managed VMs on Google w/ running GCE apps on these managed VMs
    • STEP 1: Setting up Docker windows, mac, linux This will teach you:
        • install Docker software using the Docker Toolbox
        • use Docker Engine to run a software image in a container
        • browse for an image on Docker Hub
        • create your own image and run it in a container
        • create a Docker Hub account and an image repository
        • create an image of your own
        • push your image to Docker Hub for others to use
    • STEP 2: Quickstart guide

  • GAE: App Engine Services can be configured to use different runtimes and to operate with different performance settings (taking things beyond typical webapps) -- MANUALLY scale to get longer running apps.
    • if you need jobs to run longer than 10 minutes of TaskQueue jobs
    • Requests can run indefinitely. A manually-scaled instance can choose to handle /_ah/start and execute a program or script for many hours without returning an HTTP response code. Task queue tasks can run up to 24 hours.
    • <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
        <application>simple-app</application>
        <module>default</module>
        <version>uno</version>
        <threadsafe>true</threadsafe>
        <instance-class>B8</instance-class>
        <manual-scaling>
          <instances>5</instances>
        </manual-scaling>
      </appengine-web-app>


  • Cron jobs (time scheduled)
  • Blobstore
  • How Google writes their own App using GAE (old but, still good to read)and Video
  • StackTrace Driver service (api including for java)
  • Capabilities API in Java and Python : Use to identify API outages and scheduled downtime.
  • GAE uses pre-compilation for its projects to make faster
    • JAVA: to disabale add this to appengine-web.xml file:
        <precompilation-enabled>false</precompilation-enabled
8 16 Data: Introduction to Databases and Oracle

Class Lecture, (Reference book optional reading E-Chapter 1: pg 1-11, 16-24, 32-39, E-Chapter 2: 41-62,76)

8 17 Data: Introduction to SQL

Lecture, (Reference book optional reading E-Chapter 3)

 

8 18 Data: Database and JDBC Connectivity Connecting to Oracle DB with JDBC, (Reference book optional reading E-Chapter 4-6, 8)
8 19 Data: SQLJ

Lecture, (Reference book optional reading E- Chapter 7)

8 20 Data: Database systems and web system scalability

Lecture, (Reference book optional reading E-Chapter 11)

9 21 Web: Security
9 22 SW Engineering

Class Lecture, (Reference book optional reading J-Chapter 3,8)

10 23 Web: Internet Scale Apps

Class Lecture

10 24 Javascript ServerCalls: AJAX and ...

Class Lecture,

Exercise:(not turned in) AJAX w/XML, AJAX w/Database

10 25 Java ServerSide: EJB and Java Persistence API

Class Lecture, (Reference book optional reading J-Chapter 15(RMI), 19-21(EJB))

     
Resource

GIT

Git and Using Git in Eclipse and remote repository setup remote repository on github OR bitbucket

THIS IS PRE-REQUISITE MATERIAL COPIED FROM CS3340 - OOP class

Resource 26 Grid Computing and more

Class Lecture,

  • Hadoop is a distributed system for cluster/grid programming, opensource
  • Apache Cassandra is a distributed storage system for managing structured data that is designed to scale to a very large size across many commodity servers, with no single point of failure.
  • Apache Hive is data warehouse infrastructure built on top of Hadoop that provides tools to enable easy data summarization, adhoc querying and analysis of large datasets.
  • Thrift provides a framework for scalable cross-language services development in C++, Java, Python, PHP, and Ruby.
  • Tornado is a relatively simple, non-blocking web server framework written in Python. It is designed to handle thousands of simultaneous connections, making it ideal for real-time Web services.

Facebook provided OpenSource systems

  • FlashCache is a general purpose writeback block cache for Linux. It was developed as a loadable Linux kernel module, using the Device Mapper and sits below the filesystem.
  • HipHop for PHP transforms PHP source code into highly optimized C++. HipHop offers large performance gains and was developed over the past two years
  • Scribe is a scalable service for aggregating log data streamed in real time from a large number of servers
Resource 27 Other forms of "communication"

Beyond request-response paradigm (REST) communications on web what is possible between client-servers

    • Asynchronous: client does not wait for response from server which can make a callback asynchronously to the client. see AJAX above, and more
    • Continuous: no need for polling from client,event-driven responses from server to client: WebSockets, and more
OLD 28 Mobile Agents

Class Lecture NOT COVERED

OLD 29 Video Streams
OLD 30Misc.
OLD 31 .NET platform
OLD 32 The Future

Class Lecture,

Other 33 Website Design 
OLD 34 Web Services

Class Lecture, Chapter 9, (Reference book optional readingJ- Chapter 11,12, 13,16-18)

 
© Lynne Grewe