Course Description

This course is a contemporary exploration of modern web-based information systems. It will integrate concepts from multiple computer science topics used in the design, development, and deployment of web-based applications, services, and knowledge systems. While broad in scope, it will also cover several key concepts in depth, including: web networking protocols, web databases and applications, web services, web search, web-relevant security issues, web infrastructure, and web-relevant data mining. Students will learn how to incorporate these concepts into an engineering process that includes design, analysis, development and testing, using technologies such as HTTP, XML, JavaScript, AJAX, and others. Students will form teams to implement assignments on Linux-based Apache web servers using open-source components. These assignments will culminate in students implementing their own large-scale Web search engine, roughly comparable to Google or Bing. At the end of this course, students will understand the science behind web-based information systems and the engineering principles for building them. This is a 4-credit course and satisfies the Software Area Kernel Requirement for MS and Ph.D. students in CSE. Fully understanding the Web requires background from many different aspects of computer science. This course will try to bring together this disparate material and make you think about how these should work together to create a usable, efficient, and secure distributed information system. Most students will probably be familiar with a portion of the class material, but very few students will have background in all of the topics covered. (If you're among the lucky few, you might consider taking something else!)
 
Objectives

This course is about the design and development of information systems in wide area networks. Its primary goal is to take a holistic view of modern web systems and their constituent technologies. By the end of this course, successful students will be able to: ● Understand how n-tiered architectures can be used to implement secure, scalable systems ● Design and develop database-driven websites and applications ● Understanding XML as a messaging and data exchange mechanism ● Utilize JavaScript to improve database-driven websites ● Analyze server logs to understand system performance and user behavior ● Understand designs for modern search engines and datacenters ● Understand Web "semantic systems," such as auctions, recommendation systems, andsearch ranking. ● Understand critical components of the modern Web infrastructure: DNS, Content Delivery Networks, etc.
 
Prerequisites

The formal prerequisite for this class is EECS 281 OR (EECS 282 and EECS 382). In past years EECS 484 was a requirement, but no more. Less formally, a working knowledge of databases and SQL is required. If you have not taken EECS 484, you may have to do additional reading on your own. There will be a substantial amount of programming in this class, and programming will not be a major topic of lectures. So you are expected to have "programming maturity." That is, you are deeply familiar with at least one programming language that is suitable for software engineering, such as Java, C, C++, Python, etc. You should be willing and able to pick up other similar languages. You should be able to understand and use new APIs by reading manuals and other relevant documentation. Students who may be unsure about their qualifications should approach the instructor with any questions. By the end of class you will have written programs in three different languages: a Web development language, JavaScript, and Java/C++. Achieving the course objectives will require a significant amount of learning outside of class. Lectures will cover key topics and help integrate concepts, but will not necessarily cover all implementation details. Discussion sessions will be dedicated to development techniques, assignment details, and current lecture topics. Although significant support will be available, student teams will be required to research various technologies and development techniques to complete their assignments.
Last Updated: Saturday, 10-May-2014 09:24:16 EDT