This project-based course covers the development of interactive web applications. Starting with a high-level architectural view of web applications as a special case of enterprise applications, we study the various layers of such applications and how they fit together.
We will start out with the HTTP protocol as the basic mechanism a web server uses to deliver content to a client such as a web browser, voice browser, or small-screen mobile device. We take a detailed look at mark-up languages and related tools that allow us to represent and transform content. Next, we move on to the creation of dynamic content as the basis for interactive server-side applications. We work with server-side frameworks such as Java Servlets, which are control-centric, and Java Server Pages, which are content-centric.
We will also study ways to keep track of the state a server-side application and various issues that arise in this context, including concurrency, security, internationalization, and performance. We will also explore mechanisms that allow our applications to access and modify persistent storage systems such as files and databases. We also study ways to structure web applications in such a way that they are maintainable, including the use of server-side components such as Enterprise Java Beans to encapsulate business logic or to provide abstractions of the storage layer.
Finally, we will study current web services such as search engines, web bots (such as spiders), and peer-to-peer programs.
Prerequisites: CompSci 108 (good knowledge of Java) and experience using the Web and HTML.