AY 2007-2008/Sem-1/Web Technologies
From IIITM-k-wiki
Schedule
Schedule |
||
Days |
Timings |
comments |
| Monday | 9am - 11:35am | (Somtimes) |
| Wednesday | 10:25am-11:35am | (Always) |
| Thursday | 10:25am -11:35am and 3:25pm-4:35pm | (Always) |
| - | - | - |
Lectures will be held in Park Centre classroom at the IIITM-K premises, Technopark, Trivandrum.
There are no explicit hours for lab. Instead, weekly homeworks will be assigned, which may be completed by students on their notebook computers.
Lectures are expected to be interactive and students are expected to ask questions.
Credits
4 (2 Lec + 1 Discussion + 2 Lab hours)
Prerequisites
- Principles of Programming (and programming experience in Scheme and Java)
- Principles of Databases,
- Data structures,
- Operating Systems and
- Networks
- OR instructor's consent
- Knowledge of Scripting Languages
Instructors
- Principal Instructor: Venkatesh Choppella, Associate Professor IIITM-K. choppell_at_iiitmk.ac.in
- Associate Instructors:
- David Mathews, Design Engineer IIITM-K.
- Sivchand Koripella, Research Engineer, IIITM-K
Office Hours
Office hours are hours reserved for 1-1 interaction of the students at the instructor's office. Others are welcome, but students enrolled for the instructor's course get priority.
Venkatesh: Fri 2pm-5pm.
David: TBA : Tue 3.25pm-5pm.
Sivchand: TBA
Communications
Discussion Forum
The forum iiitmk-webtec-group_AT_googlegroups_DOT_com is to be used for general discussions about the course. You can subscribe to this mailing list by visiting http://groups.google.com/group/iiitmk-webtec-group/
RSS Feed from the forum
<rss>http://groups-beta.google.com/group/iiitmk-webtec-group/feed/rss_v2_0_msgs.xml?hl=en|short|max=15|title=Course Feeds</rss>
Objectives
This course introduces the technologies behind today's web-based applications. A student completing this course should have acquired a good understanding of the basic design principles of the web model of computing. He or she should have designed and implemented a web application using current software development technologies and methodologies. He should have learned in detail some cutting-edge technologies. The student should have learned how to work in a group with strict delivery deadlines. The student should have learned how to prepare reading material, bibliography search, and make presentations to a class.
Course structure
The course will be mostly driven by active student participation. Students are expected to research specific technologies and present them in the class. An important part of the course are programming assignments. There will be regular programming assignments that help students understand and implement the concepts taught in the class.
Syllabus
Detailed (but tentative) breakdown of topics
The course is divided into the following set of topics. Please note that this list of topics might be tweaked slightly to accommodate time constraints.
Fundamentals and HTTP
- Introduction to the web model of computing: distribution, protocols, user interface ad HTML
- HTTP Protocol
- Implementation of a simple HTTP Server (Hello server)
- Suggested Homework: Implement simple web server to serve static pages
CGI
- CGI in Python
- GET, POST and Forms
- Suggested Homework: Extend HTTP server to support CGI (HW)
State in Web Computing
- Cookies and stateful web computing
- Introduction to continuations
- Persistence
Web application programming in Python
- Templating
- URL mapping
- Suggested Homework: Write a simple web application in Python.
Web Programming in Scheme
- CGI programming in Scheme
- Introduction to Continuations
- Continuation-based stateful web programming in Scheme.
- Suggested Homework: Write a simple web application in Scheme.
Web Programming in Java
- Web applications in Java (servlets)
- Web applications in JSP
- Using Java Beans with JSP's
- Suggested Homework: Write a simple web application in Java
Database connectivity
- Database connectivity in Python
- Database connectivity in Java
- Database conectivity in Scheme
- Suggested Homework: Extend hw of week 5/6/7 to use database
Data abstractions over databases
- SQL Alchemy in Python
- Hibernate in Java
- Database abstraction layer in Scheme
- Suggested Homework: Extend hw of week 8 to use database abstraction layer
Web servers
- Apache Web Server (case study)
- Web.py (case study)
- PLT Web
Deployment and Application containers
- CGI, Fast CGI
- Embedded interpreter (modpy)
- External Server: Tomcat
Communicating Web applications
- Screen Scraping
- Scraping a blog from blogspot to your simple blog (HW)
- API for communication: REST, web services, SOAP.
- Design API for your blog and RSS feed (HW)
- DOM and XML parsing. Tidy, Xquery
- Aggregation service: aggregate different blogs (HW)
Rich Internet Applications
- CSS
- Different themes for displaying your blog.
- Javascript
- AJAX
- Mashups
Performance and Scalability
- Load testing: Profiling
- Tools: siege web stress testing tool, httperf
- Performance tuning and Scalability
- Content Caching
- Client page-load performance tuning
- Replication
- Load balancing
Security
- Protocols: Password Hashing
- Symmetric and asymmetric keys (PKI)
- Security threats: (SQL injection, Invalid inputs, buffer overflows, cross-site scripting, thread safety, hidden fields)
- How to build secure applications
Web Technology Lab
/Homework Submission and Grading guidelines
Lab 1, 2007-08-08
/Implementation of a simple HTTP Client and Server application
Lab2, 2007-09-06
Serving dynamic content: CGI with GET method
Lab3, 2007-09-19
* Install the web server and try running simple servlets. Also try running the following :
*
o Break and Resume (Debugger)
o Break and Resume with table
o Extend this example into the implementation of interactive primitives (for eg: send/suspend, send/forward)
o Also try this with add program.
Post your codes in the svn repo.
Deadline : 02-10-2007, Tuesday 5.00 pm
Lab 4, 2007-11-02
The Code folder is available at
svn://godavari.iiitmk.ac.in/courses/2007-2008/sem-1/itm112-webtech/public/code/AirLine
Problem statement & suggested solution is available in "Read Me.txt" in the folder.
Post you codes in SVN Repo.
Deadline : 14 November 2007,Wednesday 5:00 PM
Evaluation
The revised weight for individual components of the course is
- Topic Delivery (lecture, content, readings and refs): 15%
- Midterm: 15%
- Individual participation: 10%
- Final Exam: 20%
- Homeworks: 40%
Individual participation will be evaluated on the basis of participation within the classroom (questions and answers) and also offline discussions (both number of postings and their quality), and also commits to the code repository and the quality of code committed.
Midterm and Final Exam will be objective type or fill-in-the-blank type questions.
/Mapping of student groups and instructors to topics
Lecture Schedule
Lecture Schedule |
||||
| Week | Lectures | Date | Topics | Speaker |
| 1 | 1 | Aug 6th | Inroduction to the course and Web Computing | Venkatesh |
| 2 | 2 | Aug 13th | HTTP | Sivchand |
| 3 | 3 | Aug 22nd | Intoduction to Python | Anand |
| 4 | Aug 22nd | Http Server in Python | Anand | |
| 4 | 5 | Sep 5th | CGI, Forms | Sukant |
| 6 | Sep 6th | Regexps | Sivchand | |
| 7 | Sep 6th | Continuations | Venkatesh | |
| 6 | 8 | Sep 19th | Intro to PLT Scheme Web server | Ajay |
| 9 | Sep 20th | Debugger example | Suryakant | |
| 10 | Sep 20th | Extension of debugger example into a Web application | Asha | |
| 7 | 11 | Sep 26th | Servlets | Deepu |
| 12 | Sep 27th | Servlets (Sessions, Cookies) | Lekshmi | |
| 13 | Sep 27th | JSP Intro | Koteshwar | |
| 8 | 14 | Oct 3rd | 1 | 1 |
| 9 | 15 | Oct 4th | 1 | 1 |
| 10 | 16 | Oct 4th | 1 | 1 |
| - | - | Oct 10th | Midterm | No Classes |
| - | - | Nov 8th | Deepavali | Holiday. No Classes |
| - | - | Dec 5 | Final Exam | no classes |
Calendar mainitained on Google Calendars
Instructor Space
Research Group Meeting Time
Web Technology Research Group
Software Engineering Group
/Meetings
/Notes
Course Calendar
- Mon Aug 6, 2007 First lecture of course
- Wed Oct 3, 2007 Midterm Exam
- Wed Dec 5, 2007 Final Exam


