Group Project Seminar on Programming and Analysis

Objectives

At the end of this curricular unit, the students should be able to write medium size scripts in Python in a logical and organized way. The students should understand the base concepts of relational databases and should be able to put that knowledge into practice by designing, creating, and managing a simple relational database. Students should be able to query and manipulate geospatial data in a relational database. Students will be able to create data pipelines from data extraction to data loading. Students should understand the usage of an API and should be able to create one to provide data to other analysts.

General characterization

Code

200222

Credits

5.0

Responsible teacher

Marco Octávio Trindade Painho

Hours

Weekly - Available soon

Total - Available soon

Teaching language

Portuguese. If there are Erasmus students, classes will be taught in English

Prerequisites

Idiom used in class: English

Students must have administrative permissions on their computers to allow software installation.

Bibliography

Não há bibliografia específica. Todas as informações relevantes podem ser encontradas na internet, e serão indicadas pelo professor.

Teaching method

This curricular unit will be lectured in presential classes. Each student should bring his personal computer. In the first half of the course, there will be 10 classes of lecturing and follow-along exercises that each student should follow on their computer. The second period will be working on the group project. During the group project period, there will be 2 hours classes to follow each group's progress and provide orientation.

Evaluation method

In group, the students will have to develop a project and make a presentation.

The students grade is the weighted average of the following factors:

  • Project's grade 60%
  • Presentation's grade 20%
  • Peers' project questions 10%
  • Individual performance 10%

The project is open in nature, but it must include all of the following components:

  • An ETL module (25%);
  • A CRUD module (25%);
  • An API module (25%);

The remained 25% are points reserved for groups that were able to explore the technologies and bring elements that were not explicitly utilised during the teaching sessions.

The project specification will be presented to the class on Session 8 (Feb. 02). The groups must send  the specifications document to the instructor two days before the session (Jan 31) for approval and guidance.

Subject matter

This course's main goal is to provide a base introduction to programming and relational databases. The students will be introduced to best practices, and fundamental concepts, which are the bases of programming, and data organization and manipulation. Because this is a short course, tackling mainly the fundamentals of scripting and databases, it is left for the students to explore the technology that better fits their needs and interests.

The curricular unit is organized in two different periods. It starts with a two weeks lecturing period. The next two weeks, will be used by students to work on the group project assessment, followed by a presentation. The lecturing part is divided into 10 learning units (LU), with the following content:

LU 1. Introduction and installs

  • Introduction
  • Rule setting
  • Software installation and configuration

LU 2. Introduction to Python I

  • Variables
  • Data structures
  • Conditional branching
  • Loops
  • Functions
  • Classes

LU 3. Introduction to Python II

  • Code organization
  • Modules
  • Packages
  • Practical example

LU 4. Introduction to Pandas and Geopandas

  • Dataframe creation, filtering, and manipulation
  • Geopandas dataframe creation filtering and visualization
  • Practical examples

LU 5. Introduction to relational databases

  • Terminology
  • Database modeling
  • Relationships
  • Constraints

LU 6. Introduction to SQL

  • SQL principles
  • SQL Practical examples for data query

LU 7. Introduction to PostGIS

  • PostGIS Extension
  • Geometry and Geography datatypes
  • Spatial Functions practical examples

LU 8. ETL Working Example

  • ETL concepts
  • Practical example

LU 9. API working example

  • API concepts
  • Practical example

LU. 10 Routing Working Example

  • Network analysis concepts
  • Practical example

Programs

Programs where the course is taught: