Indiana University of Pennsylvania                                                                                    December 2000

Computer Science Department

 

New Course

COSC 415 - Internet Architecture and Programming

 

 

I.  Catalog Description

COSC 415    Internet Architecture and Programming                                                    3 credits

                                                                                                                                                3 lecture hours

                                                                                                                                                0 lab hours

(3c-0l-3sh)

Prerequisites:  COSC 304 and COSC 310 or instructor's approval.

Co-requisite:  COSC 341

 

     This course covers the fundamental architecture of Internet systems and the process of developing computer applications running on the Internet in general and on the world-wide-Web in particular.  Students will first gain basic understanding of the TCP/IP protocols and the client/server technology.  Methods, languages and tools for developing distributed applications on the Internet will be evaluated.  Programming projects developing distributed applications, using a representative suite of development tools and languages, are integral part of this course. 

 

II.  Course Objectives

     Upon successful completion of the course, the student will be able to

A.     Understand the architecture and operation of client/server applications in a multi-platform, multi-server networking environment.

 

B.     Design and implement simple Web-based applications employing distributed software components, including front-end clients, middleware, and back-end servers.

 

C.     Employ alternative tools and techniques for Internet-based system development, including

 

1.   Client side scripting such as JavaScript, VB Script, variations of HTMLs, and XML;

2.   Server side activation mechanisms such as Active Server Pages (ASP), Java Servlets, Java Server Pages (JSP), Server-side JavaScript, Server-side VBScript, and CGI (Common Gateway Interface).

 

D.     Design and implement database connectivity in a Web-based application.

 

E.      Gain an in-depth awareness of problems and solutions related to Internet-based development, such as security, privacy, and internationalization.

 

F.      Discuss various Internet-based software applications and their underlying framework, such as Web-based documentation retrieval systems, online transactions (such as banking, auctions, e-commerce, digital libraries, search engines, et al), group-based collaboration over the Internet, Web-based utilities (such as calendars, planners), Web-based entertainment, Web-based publishing, et al.

 

G.     Describe the evolution of existing tools such as component-based distributed standards, as well as major future directions of new tools, techniques, applications, and paradigms for developing distributed applications, such as distributed expert systems, mobile agents, and distributed databases.

 

 

 

III.  Detailed Course Outline

1.                  Fundamental Architecture of Internet-based Systems.                                           (3 hrs)

Introduction to networking, the Internet, and the World Wide Web.  Brief introduction to the history and evolution of the Internet.  The networking topologies and layers of networking software.  The request and service relationship between two processes over the network.  Introduction to the TCP/IP protocol suite and the HTTP protocol.  Introduction to the concept of processes and inter-process communication (IPC).  Discussion of TCP/IP Berkeley sockets and its underlying mechanism of communication.  Different types of sockets, including the stream sockets, datagram sockets, and sequenced packet sockets.

 

 

2.                  Client/Server Architecture, Sample Applications and Their Underlying Framework.    (3 hrs)

Two-tier client/server model and examples.  Client/Server as a special case of distributed computing.  Database connectivity on the Web.  Multi-tier client/server model and examples.  Web-based documentation retrieval systems.  Online transactions such as banking, auctions, e-commerce, digital libraries, search engines, et al.   Group-based collaboration, planning, and development over the Internet.  Web-based utility programs such as calendars, planners, et al.  Web-based entertainment such as Web TV, music, movies, games, et al.  Web-based publishing of books and multimedia information.

 

3.                  Client-side Programming Tools.                                                                                          (6 hrs)

Discussion of the existing client-side programming tools such as HTML, Dynamic HTML, VRML, XML, JavaScript, VB Script, and Java Applets.  Study of sample programs and hands-on experience.

 

4.                  Web Servers.                                                                                                                     (3 hrs)

Discussion of major Web servers available in various platforms, such as Microsoft Personal Web Server and Internet Information Server (IIS), Netscape Enterprise Server, and the Apache server.   Discussion of the role of a Web server in integrating the client and the server processes.  Responsibilities of the Web administrator.

 

5.                  The Client/Server Enabling Technology.                                   

 

a.       Remote Procedure Call (RPC)                                                                                      (3 hrs)

Discussion of how the client process invokes a remotely located procedure (in the server process) and how the remote procedure executes and sends the response back to the client process.  Discussion of sample programs.  Analysis of the strengths and weaknesses of RPC.

 

b.      Remote Data Access (RDA) and Web Database Connectivity                                       (3 hrs)

Discussion of how the client programs and/or end-user tools issue database queries against remotely located databases.  Discussion of database connectivity in various development tools (such as JDBC in Java, ADO in Visual Basic, and DBI in Perl/CGI).  Discussion of legacy data access.

 

c.       Message-Oriented Middleware (MOM)                                                                       (3 hrs)

Discussion of the queued message processing (QMP) paradigm.  Discussion of how MOM supports the QMP paradigm in a client/server environment.  Analysis of the strengths and weaknesses of the QMP paradigm.

 

6.                  Server-side Programming Mechanisms and Tools.                                                               (6 hrs)

Discussion of server side programming mechanisms and tools, such as CGI (Common Gateway Interface), ASP (Active Server Pages), Java servlets, and JSP (Java Server Pages).  Brief introduction to the Perl programming language.  Study of sample programs and hands-on experience.

 

7.                  Design of Distributed Transaction Processing (DTP)                                                (6 hrs)

Discussion of transaction processing concepts.  The ACID properties of a transaction: atomicity, consistency, isolation, and durability.  Discussion of serializability (concurrency control) and commit processing.  Introduction to distributed transaction processing.  Two-phase commit algorithm.  Sample DTP applications.

 

8.                  Related Topics                                                                                                       (3 hrs)

a.       Distributed Objects and Component-Based Development

b.      Application servers

c.       Security issues: encryption, liability, audit, confidentiality, and integrity, et al.

d.      Distributed database systems

e.       Artificial intelligence: agents and distributed expert systems

f.        Data aggregation using XML

g.       Internationalization/Localization of information on the Internet

 

 

IV.  Evaluation Methods

     The final grade for the course will be determined as follows:

     50%  Examinations.  Three in-class exams, each counting 9%; one final exam counting 23%.

 

     40%  Projects/Assignments.  Four programming assignments, each counting 10%.  These assignments are directly related to the objectives.

 

     10%  Quizzes.  Five announced quizzes on the lecture material, each counting 2%.

 

 

Grading Scale: The standard grading scale will be used.

                           90%+ = A; 80-89% = B; 70-79% = C; 60-69% = D; below 60% = F.

 

 

Suggested Projects:

Project #1: Dynamic Web Page.                                                                          (duration: 3 weeks)

Create a dynamic Web page using HTML and one of the client-side scripting languages such as JavaScript, Vbscript, or Java applets.  Students would be required to create a dynamic Web page using one of the scripting languages.

 

Project #2: Client/Server Programming.                                                                (duration: 3 weeks)

Create a pair of client and server programs.  Students would be required to write a basic client/server application.  The client program is a dynamic Web page enhanced by a client-side scripting languages.  The client program presents a form for online viewers to send their names, email addresses, and comments to the Web server.  The server program would be implemented using one of the server-side programming methods, such as Java servlet, CGI, Java Server Page (JSP), or Active Server Page (ASP).  The server program is in charge of receiving the data submitted by the client and appending the data into a file on the Web server.

 

Project #3: Web-based Database Connectivity.                                                   (duration: 3 weeks)

Create a pair of client and server programs involving the use of database server(s) on the Web.  Students would be required to enhance their programs from project #2, or a sample solution to project #2 provided by the instructor, by saving multiple user data into a database, which is linked to the server program.  In addition, the client program needs to be revised to allow the user to issue data retrieval/update queries.  The server program needs to be revised such that it is capable of connecting to a database and submitting embedded SQL queries to the database server(s).  The student would choose a connectivity module appropriate to their choice of server implementation mechanisms.

 

Project #4: Multi-tier Distributed Transaction Processing System              (duration: 3 weeks)

Create a distributed transaction processing project.  Students would be required to modify their programs from project #3, or a sample solution to project #3 provided by the instructor,  by employing distributed transaction processing techniques.  The server program would be able to process simultaneous read/write requests issued by multiple clients.  Students would be required to design various data access patterns and validate the serializability property exhibited by the server program.