Introduction
This course is an introductory course on server side web programming for accessing databases. The course is a project-based course: students will build a real web-based application for allowing access to data stored in a relational database.After completing this course, students should be able to:
- develop interactive server-side web applications with a relational database back end
- develop a relational database for a real-world application
- understand what happens behind the browser in a web-based application
- be able to identify potential security problems in web-based applications
- be familiar with performance issues for large scale web-based applications.
Requirements
Familiarity with relational database management and relational database design concepts is required. You should already know a programming language, and be comfortable with learning another one in a short time. If you have completed 'Databases' and 'Introduction to Programming' courses, you should have sufficient background. Otherwise, contact the instructor before enrolling.Course plan (tentative)
Date | Subject | Course material |
---|---|---|
Nov 9 | A crash course in PHP | slides handout |
Nov 16 | DB design: an introduction | slides handout |
Nov 23 | Web programming: background | slides handout git exercises |
Nov 30 | SQL and programming Accessing databases from PHP |
slides handout |
Dec 7 | Session Management | slides handout |
Dec 14 | Security | slides handout |
Dec 21 | More on security & Summary |
slides handout |
Project
Projects are the most important part of this course. You will be required to complete a project that includes a database design and a web-based application for accessing this database. You are encouraged for form a team of up to 4 people. However, it is important that everybody in the team contributes to the project (approximately) equally.
Whether you do it alone or as a team, your are required to use a version control system for your project. The recommended version control system is git (See resources at the end of this document for links to git related introductory material. If you intend to use another version control software, you should first discuss it with me. Use of a central repository (for example publicly accessible software hosting services) are highly recommended.
You are required to submit two short reports: one after initial design, and one on completion of the project. As well as the final product of your project, the reports will affect your grade. The deadlines for various parts of the project will be discussed during the class.
The time for the course (and for the projects) is short. So, starting early and reserving regular work time for your project is important. You should try to form your teams and chose your subjects as soon as possible. The following is a list of project suggestions.
Project Ideas
- Linguistic trees in a relational database (particularly for LASSY project) (2-4). This project is part of a real-world (research) project. See the web page for a first impression. If you choose this project, you will work others for detailed requirements.
- Hierarchies on a database (2-4). This project is part of a real-world (research) project. See this short description for a first impression. If you choose this project, you will work with the people in the projet for detailed requirements.
- A collaborative WordNet creation/management system (2-4).
- A `research output' database for a research institute.(2--4)
- A quiz database (1--3).
- A meeting/event scheduler. (2--4)
- An electronic voting system (1--2).
- A personal library management system (1--2).
- A personal financial-accounting software (1--2).
External Links
- On PHP:
- On git:
- A git tutorial
- Another git tutorial
- A list of git tutorials.
- Free (or somewhat free) git hosting services: GitHub Gitorious, ...
Contact
Instructor: Çağrı ÇöltekinOffice hours: Tuesday 15:00-17:00 (or by appointment).