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