APV Course

Course information

The aim of the course is to teach students basic categories of application software. Emphasis is given on the development of web applications and database applications (relational database systems).


To pass the course you have to:

  • get at least 90 points on Codecademy – send me an email with link to your CA profile with text [APV] (brackets included) somewhere in that page. E.g. use “About Me” section in “Account settings”.
  • finish the course project
  • pass the final exam (minimum 50% points)
    • you have to answer at least 2 of 3 SQL queries somewhat correctly (get at least 12 points out of 24)

The grade from the final exam and the project evaluation make up for the final course grade.

Course outline

Project Assignment

To pass the course you need to create a project. The project assignment is described below:

Create a web application for recording persons and contacts. The main goal of the application is to record persons (friend, acquaintances), their addresses, relationships and meetings. Each person can have a name, nickname, age, location and contacts. Each person can have any number of contacts (mobile, Skype, Jabber, ….). A person can have more contacts of the same type (e.g. two emails). Each person can have any number of relationships with other persons in the database. Each relationship should be of a type (friend, fiend, acquaintance, spouse, …) and description. The contact and relationship types are recorded in the database and can be modified by the end-user. The application also records meetings between persons. Each meeting can be joined by any number of persons. Each meeting should have a place and date. The application must allow user friendly entering and modifying the data. Take advantage of the proposed schema, create a database and implement the entire application.

The assignment is intentionally very loosely defined. It is up to you to come up with the application design, functionality and user interface. It is not an easy task, so I have designed a database schema for you.

Database Schema

The database schema defines what kind of data your application should store. You can change it if you want to do so, but please do so only after you understand the database design process.

Custom assignment

It is possible to have a different assignment, but it has to be equally (or more) challenging as the default one. It has to use some database with more than one table and it should feature different types of cardinality.


You are free to choose what technologies you want to use to complete the project assignment, I will teach you how to use PHP and Slim framework. The only condition is that you have to use up-to-date methods to build the project.

Check the FAQ section for more information.