DIM3 - ITECH Introduction ------------------------- The main aim of this course is to provide students with an overview of the different stages and components of web application development. It will provide students with the skills to design and develop distributed web applications in a disciplined manner, and strengthen their understanding of the context and rationale of distributed systems. The aims of this course are: * To provide an overview of the ongoing developments in web application development * To promote the disciplined design and development of distributed web applications * To strengthen their understanding of the context and rationale of distributed systems * To understand the messaging and protocols used as a communication mechanisms in web applications * To develop the ability to implement and deploy distributed web applications The Intended Learning Outcomes of this course are: Upon completion of the course, students will have the ability to: * Illustrate and describe the n-tier client-server architecture of web applications * Explain the role of messaging and protocols within the design of web applications * Critique and evaluate the information architecture of web applications * Explain the opportunities, challenges and problems of developing web applications in a distributed environment * Identify and critically analyze the requirements of a web application * Design and specify the architecture of a web application * Evaluate and assess specifications and designs of web applications * Construct, build and deploy a web application The main Languages and Frameworks that you will be required to use within this course: * Python, http://www.python.org/ * Javascript, https://developer.mozilla.org/en/JavaScript/Reference * AJAX * JQuery, http://jquery.com/ * Django (Web Application Framework), http://www.djangoproject.com * CSS, http://www.w3.org/Style/CSS/Overview.en.html * XML, http://www.w3.org/XML/ * XHTML, http://www.w3schools.com/xhtml/ * Plus more. .. warning:: Since this course tries to cover the entire process of web application development, it will not be possible to teach any of the languages in detail. During the course and through the labs we shall touch upon each of these languages and frameworks but it will be your responsibility to learn each in sufficient detail to use them to build your own web application. Other Skills required/desired: * Entity Relationship Diagrams (and database modeling and SQL skills) * Dataflow Diagrams * Sequence Diagrams * UML and architectural diagrams .. warning:: Again, these will not be taught explicitly in this course and are assumed knowledge for this course. If you do not understand how to create or interpret such diagrams you should research each of these. **Course Text Book and Recommended Reading** * Web Design: a complete introduction, by Nigel Chapman and Jenny Chapman **Recommended Reading** * Peter Morville and Louis Rosenfeld; Information Architecture for the World Wide Web; O’Reilly, Third Edition, Nov 2006. * Marti Hearst, Search User Interfaces, http://searchuserinterfaces.com/ **Technical Recommended Reading** * Dive Into Python: http://www.diveintopython.org/ * The Python Tutorial: http://docs.python.org/tutorial/ * The Django Book: http://www.djangobook.com/en/2.0/ * Design Patterns in Python, Rahul Verma and Chetan Giridhar, http://www.testingperspective.com/wiki/doku.php/collaboration/chetan/designpatternsinpython/mvc * Other books on Python http://wiki.python.org/moin/AdvancedBooks * Python in 10 Minutes, http://www.korokithakis.net/tutorials/python/ **Lecture Series Overview** * L1. Quick Course Overview * L2. Information Architecture (pt1) * L3. System Architectures * L4. Web Application Framework * L5. Django – Setting up and creating a simple view * L6. Information Architecture (pt2) * L7. Django - Detailed Design: URL Mappings, MTV, * L8. Messaging and Protocols * L9. Client-Side Environment/Ecosystem * L10. Presentations * L11. Django – User Authentication / Cookies and Sessions * L12. Cascading Style Sheets * L13. Client Side Scripting - Javascript * L14. Client Side Scripting - JQuery * L15. XML – Introduction * L16. AJAX with JQuery * L17. Processing XML – DOM and SAX * L18. Web Accessibility * L19. Ambient Findability * L20. Summary – Class Test (LA)