Sie sind auf Seite 1von 4

Course Profile for Undergraduates Majoring in Software Engineering

/ Revision :

2010.12.22

Course Code

SE-808

Course Title

Cloud Application Development


(Supported by Google)

Course Type

Elective

Credits

Hours per Week

Total Hours

Lecture Sessions

Laboratory Sessions

Total

Semester

Course
Coordinator

Principal
Instructors

Teaching
Assistants

Office Hours

Homepage

Forum

38
16
54

Fall/Spring/Summer semester, 3rd year

Dr. Yabo XU
xuyabo@mail.sysu.edu.cn
Email
:
Homepage :
http://ss.sysu.edu.cn/~xyb/
Google
A/Prof. Weigang WU, Senior Lecturer Yongming ZHANG, Dr. Yabo XU, Engineers from
Google
1 TA
1 TA per class of students. Teaching assistant assists the instructor in grading weekly
assignments and programming projects, and tutoring at lab-time.
2

Instructor: 2 hours per week.


TA: N/A.
PENDING
PENDING
Cloud computing becomes an important platform for web-scale application development.
The course of Cloud Application Development will introduce the supporting technologies
of cloud computing, the framework, the methodologies and the tools for cloud application
developments.

Course
Description

Prerequisites

Through this course, students are expected to gain the capability to conduct
independent application development on mainstream cloud platforms. To lay a solid
theoretical foundation on the cloud platform underneath, this course starts with the wellknown open source cloud computing framework Apache Hadoop, and explains the basic
computing paradigm and principles of cloud development. And, supported by Google, this
course then offers a comprehensive survey on the cloud application development
techniques based on the popular cloud service - Google App Engine.
1. SE-215 Principles of Computer Organization

2. SE-221 Data Structures and Algorithms

SE-808 Cloud Application Development (supported by Google)

Successive
Courses

N/A

Lecture Sessions

Textbook

References

Approach

PowerPoint Presentation. All the slides will be provided to the students at the beginning of
the course.
1.

T. White. Hadoop: The Definitive Guide. OReilly, 2009, ISBN 0-596-52197-4

2.

J. Venner. Pro Hadoop. APress, 2009, ISBN 1-430-21942-2

3.

D. Sanderson. Programming Google App Engine. OReilly Media, 2009, ISBN 0-59652272-8

4.

E. Ciurana. Developing with Google App Engine. APress, 2009, ISBN 1-430-21831-9

5.

J. Lin. Introduction to Cloud Computing. University of Maryland, available on the


URL: http://www.umiacs.umd.edu/~jimmylin/cloud-2008-Fall/

6.

Google. Google App Engine Documents. Google Code, available on the URL:
http://code.google.com/appengine/docs/

1.

Theoretical lectures combined with some practical projects.

2.

Interactive and heuristic discussions in classroom.

Part I

Introduction (10 hr)

1. Introduction to Cloud Computing (2 hr)


Definition and extensions: Hardware as a Service (HaaS), Platform as a Service (PaaS),
Software as a Service (SaaS); underlying key technologies; mainstream service
provider, current situation and future development.
2. Cloud Computing and Virtualization (HaaS Core Technologies) (2 hr)
Basic concepts of virtualization, key characteristics, and core technologies; HaaS
supporting technologies: fast deployment of virtual machines (VM), VM resource
management, and multi-tenant technology.

Lectures

3. Distributed Computing and Storage Model (PaaS Core Technologies) (2 hr)


Challenges from large-scale data; traditional distributed systems; new distributed
computing paradigm: MapReduce; distributed storage model: BigTable and columnbased databases; typical distributed computing applications.
4. Introduction to Mainstream Cloud Computing Development Platforms (4 hr)
Hadoop cloud stack and its components; Google App Engine and its components.
Part II

Application Development with MapReduce (14 hr)

5. Introduction to MapReduce (2 hr)


Functional Programming and MapReduce; Hadoop MapReduce Framework and its
components, i.e. Task Tracker, Job Tracker, etc.; Hadoop Distributed File System
(HDFS) and its major components, i.e. Master/Slave.
6. More on MapReduce (2 hr)
Example Map Reduce programs: explaining the workflow of a Map Reduce task, i.e.
-2-

SE-808 Cloud Application Development (supported by Google)

InputSplit, RecordReader, Mapper, Combiner, Partitioner, Reducer, RecordWriter, and


etc.
7. MapReduce Application I: Information Retrieval (2 hr)
Fundamentals of information retrieval; construct an inverted index with MapReduce;
query processing with MapReduce.
8. MapReduce Application II: Graph Algorithms (4 hr)
Representation of graph; implementation of graph algorithms with MapReduce; apply
MapReduce on the shortest-path problem.
9. MapReduce Application III: PageRank (4 hr)
Introduction to PageRank algorithm; Implementation of PageRank algorithm with
MapReduce.
Part III

Application Development with Google App Engine (14 hr)

10. Fundamentals of Google App Engine (GAE) Development (2 hr)


Introduction to GAE SDK; GAE architecture, GAE packages, and core GAE APIs; GAE
runtime environment, service limits and charges; GAE account application, application
deployment and update; GAE development tools, i.e. WTK (Google Web Toolkit).
11. Datastore (2 hr)
Datastore fundamentals: Entity, Key, Property, and etc.; Datastore query and index;
support of transaction in Datastore; entity relationship in Datastore; use of Datastore
statistics; Datastore case study.
12. URL Fetch, Memcache, and Image Service (2 hr)
URL fetch in GAE applications; request/response; secure connection and use of HTTPS;
understand Memcache, and use of Memcache for efficiency; Image Service in GAE;
GAE Image Service case study.
13. Google Account, Email Service, XMPP, and GAE Task Queues (4 hr)
Support of Google accounts in GAE; access Google accounts in GAE; use of GAE for
email services; use of GAE for instant message services; basic concepts of Task in GAE;
management and execution of Task in GAE; introduction to Task Queue; case study and
service limits.
14. Business GAE application development and Course Review (4 hr)
GAE performance optimization, and related techniques; course review.
Totally 38 hours.

None

Assignments

Laboratory Sessions

Lab Hours

Lab Venue

Lab Approach

Additional

16 hours
Same as lecture classroom (no laboratory is needed).

All programming projects are finished within the extracurricula time. Lab hours in the
classroom focus on core labs, discussions and presentations of the analysis and design of
the programming projects.

N/A
-3-

SE-808 Cloud Application Development (supported by Google)

Tutoring
Project #1

Setting up Hadoop and GAE Development Environment (2 hr)

Given the virtual environment, students are required to set up their own cloud application
development platform.
1.

Set up Hadoop on Linux using HDFS, and run a given MapReduce program. (1 hr)

2.

Download GAE SDK, apply GAE account, and set up the first example GAE application
online. (1 hr)

Project #2

Map Reduce Application Development (6 hr)

Given the dataset, implement MapReduce (MR) program to complete the assignments.

Practices / Labs

3.

Implement MR program for counting the bigram in the dataset. (2 hr)

4.

Construct Inverted Index by MR program. (2 hr)

5.

Implement the MR version of PageRank algorithm. (2 hr)

Project #3

GAE Application Development (8 hr)

Design a GAE application named Learning Together. This application utilize GAE as the
platform for information collection, management and sharing online. It requires that two
students be grouped to build the application together. Students may choose their own type
of information, i.e. books, movies or the course materials, as the theme of the application.
6.

Decide the collection theme, and sketch application framework. (2 hr)

7.

Use GAE APIs to implement the basic features, and roll out the first version. (3 hr)

8.

Implement the advanced features optionally. (3 hr)

9.

Finally, integrate the above into a complete project.

Totally 16 hours.

Platforms

Skill Development

Operating System:

Programming Language: Java

IDE:

Programming with Hadoop (in Project #1, #2)


http://hadoop.apache.org/

Applying GAE accounts and working with SDK Documentation


http://code.google.com/appengine/docs/

Linux

Eclipse

Course Assessment

Grading

Class Participation

10%

Final Examination

40%

Course Projects

50%

Total

100%

-4-

Das könnte Ihnen auch gefallen