Difference between revisions of "BSc: Advanced Databases"

From IU
Jump to navigation Jump to search
Line 3: Line 3:
 
* <span>'''Course name:'''</span> Advanced Databases
 
* <span>'''Course name:'''</span> Advanced Databases
 
* <span>'''Course number:'''</span> XYZ
 
* <span>'''Course number:'''</span> XYZ
* <span>'''Knowledge area:'''</span> Data Science
+
* <span>'''Knowledge area:'''</span> xxx
   
 
== Course characteristics ==
 
== Course characteristics ==
   
=== Administrative details ===
+
=== Key concepts of the class ===
   
  +
* DevOps Engineering concepts:
* <span>'''Faculty:'''</span> Computer Science and Engineering
 
* <span>'''Year of instruction:'''</span> 4th year of BS
 
* <span>'''Semester of instruction:'''</span> 2nd semester
 
* <span>'''No. of Credits:'''</span> 4 ECTS
 
* <span>'''Total workload on average:'''</span> 144 hours overall
 
* <span>'''Class lecture hours:'''</span> 2 per week
 
* <span>'''Class tutorial hours:'''</span> 0 per week
 
* <span>'''Lab hours:'''</span> 4 per week
 
* <span>'''Individual lab hours:'''</span> 0
 
* <span>'''Frequency:'''</span> weekly throughout the semester
 
* <span>'''Grading mode:'''</span> letters: A, B, C, D
 
   
  +
=== What is the purpose of this course? ===
=== Prerequisites ===
 
   
  +
Advanced Databases have become
* Data Modelling and Databases I
 
* Data Modelling and Databases II
 
* Data Structures and Algorithms I
 
* Data Structures and Algorithms II
 
* Discrete Math and Logic
 
* Introduction to Programming I
 
* Introduction to Programming II
 
   
=== Key concepts of the class ===
+
=== ______________ ===
   
  +
==== What should a student remember at the end of the course? ====
Data Modelling and Databases I and II mostly focus on the relational model, its design and the implementation details of RDBMS. This course is focused on alternative paradigms, generally defined under the hat of NoSQL, and parallel and distributed architectures with all the theoretical and practical consideration of the case.
 
   
  +
By the end of the course, the students should be able to recognize and define
=== Expected learning outcomes ===
 
   
  +
*
* Devise appropriate ways to store and index data
 
  +
*
* Use persistency tools in the context of modern software architectures and the Cloud
 
  +
*
* Understanding of NoSQL and CAP theorem
 
  +
*
* Fluency with Graph DB and relatd query languages
 
  +
*
* Understanding parallel and distributed databases
 
   
  +
==== What should a student be able to understand at the end of the course? ====
=== Expected acquired core competences ===
 
   
  +
By the end of the course, the students should be able to describe and explain (with examples)
* Software Design
 
  +
* Software Engineering
 
  +
*
* Software Construction
 
  +
*
* Relational Databases
 
  +
*
* Data Modeling
 
  +
*
* Database Design
 
  +
*
* Database Systems
 
  +
*
* Query Languages: Implementation and Optimization
 
  +
* Implementation of Database Systems
 
  +
==== What should a student be able to apply at the end of the course? ====
* Indexing
 
  +
* Information Storage and Retrieval
 
  +
By the end of the course, the students should be able to apply
* NoSQL
 
  +
* Document-based databases
 
  +
*
* Graph databases
 
  +
*
* Non-relational query languages
 
  +
*
* Theory of distributed systems
 
  +
*
* Algorithms for distributed systems
 
  +
*
* CAP theorem
 
* Parallel and distributed databases
 
* MapReduce
 
   
 
=== Course evaluation ===
 
=== Course evaluation ===
   
  +
<div id="tab:OSCourseGradingRange">
{|
 
  +
  +
{| style="border-spacing: 2px; border: 1px solid darkgray;"
 
|+ Course grade breakdown
 
|+ Course grade breakdown
  +
!align="center"| '''Component'''
!
 
  +
! '''Points'''
!
 
!align="center"| '''Proposed points'''
 
 
|-
 
|-
  +
| Laboratory assignments
| Assignments and project
 
  +
|align="right"| 55%
| 30
 
|align="center"| 40
 
 
|-
 
|-
  +
| Final exam
| Mid-term Exam
 
  +
|align="right"| 35%
| 30
 
  +
|-
|align="center"| 30
 
  +
| Attendance
  +
|align="right"| 10%
  +
|}
  +
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.
  +
  +
  +
</div>
  +
  +
=== Grades range ===
  +
  +
<div id="tab:OSCourseGradingRange">
  +
  +
{| style="border-spacing: 2px; border: 1px solid darkgray;"
  +
|+ Course grading range
  +
|-
  +
| A. Excellent
  +
|align="right"| 90-100
  +
|-
  +
| B. Good
  +
|align="right"| 75-89
  +
|-
  +
| C. Satisfactory
  +
|align="right"| 60-74
  +
|-
  +
| D. Poor
  +
|align="right"| 0-59
  +
|}
  +
  +
</div>
  +
  +
  +
  +
=== Resources and reference material ===
  +
  +
* '''Textbook:'''. Available online:
  +
* '''Reference:'''. Available online:
  +
* '''Reference:'''. Available online: h
  +
  +
== Course Sections ==
  +
  +
The course is organized in 8 weeks, with every weeks 4 academics hours of lectures and 4 academic hours of tutorials/labs. The main sections of the course and approximate hour distribution between them is as follows:
  +
  +
<div id="tab:OSCourseSections">
  +
  +
{| style="border-spacing: 2px; border: 1px solid darkgray;"
  +
|+ Course Sections
  +
!align="center"| '''Section'''
  +
! '''Section Title'''
  +
!align="center"| '''Teaching Hours'''
  +
|-
  +
|align="center"| 1
  +
| Introduction to subject, computer networks basics, transport layer protocols, and socket programming
  +
|align="center"| 12
  +
|-
  +
|align="center"| 2
  +
| Multithreaded socket programming, remote procedure calls, and distributed system architecture
  +
|align="center"| 24
  +
|-
  +
|align="center"| 3
  +
| Coordination, consistency, and replication in distributed systems
  +
|align="center"| 24
 
|-
 
|-
  +
|align="center"| 4
| Written Final
 
  +
| Fault tolerance and security in distributed systems
| 40
 
 
|align="center"| 30
 
|align="center"| 30
 
|}
 
|}
   
  +
</div>
=== Reference and referecnce material ===
 
  +
=== Section 1: ===
   
  +
==== Section title ====
* Lecturing and lab slides and material will be provided
 
* Several resources are available online and will be pointed during the course
 
   
  +
Introduction to subject, computer networks basics, transport layer protocols, and socket programming
==== Textbook ====
 
   
  +
==== Topics covered in this section ====
  +
  +
* General introduction to the course
  +
* Computer networks basic
  +
* Socket programming
  +
* UDP socket programming
  +
* TCP socket programming
  +
  +
==== What forms of evaluation were used to test students’ performance in this section? ====
  +
  +
<div id="tab:OSSectionEval1">
  +
  +
{| style="border-spacing: 2px; border: 1px solid darkgray;"
  +
|''' Form '''
  +
! '''Yes/No'''
  +
|-
  +
| Development of individual parts of software product code
  +
|align="center"| 1
  +
|-
  +
| Homework and group projects
  +
|align="center"| 1
  +
|-
  +
| Midterm evaluation
  +
|align="center"| 0
  +
|-
  +
| Testing (written or computer based)
  +
|align="center"| 1
  +
|-
  +
| Reports
  +
|align="center"| 0
  +
|-
  +
| Essays
  +
|align="center"| 0
  +
|-
  +
| Oral polls
  +
|align="center"| 1
  +
|-
  +
| Discussions
  +
|align="center"| 1
  +
|}
  +
  +
  +
</div>
  +
  +
==== Typical questions for ongoing performance evaluation within this section ====
  +
  +
#?
  +
#.
  +
#?
  +
#?
  +
#?
  +
#?
  +
#?
  +
  +
==== Typical questions for seminar classes (labs) within this section ====
  +
  +
#
  +
#
  +
#
  +
#
  +
#
  +
  +
==== Test questions for final assessment in this section ====
  +
  +
# ?
  +
#?
  +
#?
  +
#?
  +
  +
=== Section 2: ===
  +
  +
==== Section title ====
  +
  +
==== Topics covered in this section ====
  +
  +
*
 
*
 
*
 
*
 
*
   
  +
==== What forms of evaluation were used to test students’ performance in this section? ====
=== Required computer resources ===
 
   
  +
<div id="tab:OSSectionEval1">
Students should have laptops.
 
   
  +
{| style="border-spacing: 2px; border: 1px solid darkgray;"
== Course Sections ==
 
  +
|''' Form '''
  +
! '''Yes/No'''
  +
|-
  +
| Development of individual parts of software product code
  +
|align="center"| 1
  +
|-
  +
| Homework and group projects
  +
|align="center"| 1
  +
|-
  +
| Midterm evaluation
  +
|align="center"| 0
  +
|-
  +
| Testing (written or computer based)
  +
|align="center"| 1
  +
|-
  +
| Reports
  +
|align="center"| 0
  +
|-
  +
| Essays
  +
|align="center"| 0
  +
|-
  +
| Oral polls
  +
|align="center"| 1
  +
|-
  +
| Discussions
  +
|align="center"| 1
  +
|}
  +
  +
  +
</div>
  +
  +
  +
  +
==== Typical questions for ongoing performance evaluation within this section ====
  +
  +
#?
  +
#?
  +
#?
  +
#?
  +
#?
  +
  +
  +
==== Typical questions for seminar classes (labs) within this section ====
  +
  +
# You have a list of large numbers, and you need to find if they are prime or not. Would you use multithreading, multiprocessing, or sequential programming in order to complete the task asap? Prove it in practice.
  +
# You need to send multiple requests to a server and receive responses. Assume there is a few msecs of delay before you receive the response from the server. Would you use multithreading, multiprocessing, or sequential programming in order to complete the task asap? Prove it in practice. (Order of the requests/responses doesn't matter)
  +
# Discuss two ways of creating the threads using threading module in Python: 1) passing the worker function as a target, 2) subclassing the Thread class
  +
# Given the function implemented locally, make it available to be called through RPC from remote process? Use xmlRPC.
  +
  +
==== Test questions for final assessment in this section ====
  +
  +
#.
  +
# ?
  +
# ?
  +
# ?
  +
# ?
  +
#
  +
  +
  +
  +
  +
=== Section 3: Coordination, consistency, and replication in distributed systems ===
  +
  +
==== Section title ====
  +
  +
Coordination, consistency, and replication in distributed systems
  +
  +
==== Topics covered in this section ====
  +
  +
*
  +
*
  +
*
  +
*
  +
  +
==== What forms of evaluation were used to test students’ performance in this section? ====
  +
  +
<div id="tab:OSSectionEval1">
  +
  +
{| style="border-spacing: 2px; border: 1px solid darkgray;"
  +
|''' Form '''
  +
! '''Yes/No'''
  +
|-
  +
| Development of individual parts of software product code
  +
|align="center"| 1
  +
|-
  +
| Homework and group projects
  +
|align="center"| 1
  +
|-
  +
| Midterm evaluation
  +
|align="center"| 0
  +
|-
  +
| Testing (written or computer based)
  +
|align="center"| 1
  +
|-
  +
| Reports
  +
|align="center"| 0
  +
|-
  +
| Essays
  +
|align="center"| 0
  +
|-
  +
| Oral polls
  +
|align="center"| 1
  +
|-
  +
| Discussions
  +
|align="center"| 1
  +
|}
  +
  +
  +
</div>
  +
  +
==== Typical questions for ongoing performance evaluation within this section ====
  +
  +
#?
  +
#?
  +
#?
  +
#?
  +
#?
  +
  +
==== Typical questions for seminar classes (labs) within this section ====
  +
  +
#
  +
#
  +
#
  +
#
  +
  +
==== Test questions for final assessment in this section ====
  +
  +
#
  +
#
  +
#
  +
#
  +
  +
=== Section 4: Fault tolerance and security in distributed systems ===
  +
  +
==== Section title ====
  +
  +
Fault tolerance and security in distributed systems
  +
  +
==== Topics covered in this section ====
  +
  +
*
  +
*
  +
  +
==== What forms of evaluation were used to test students’ performance in this section? ====
  +
  +
<div id="tab:OSSectionEval1">
  +
  +
{| style="border-spacing: 2px; border: 1px solid darkgray;"
  +
|''' Form '''
  +
! '''Yes/No'''
  +
|-
  +
| Development of individual parts of software product code
  +
|align="center"| 1
  +
|-
  +
| Homework and group projects
  +
|align="center"| 1
  +
|-
  +
| Midterm evaluation
  +
|align="center"| 0
  +
|-
  +
| Testing (written or computer based)
  +
|align="center"| 1
  +
|-
  +
| Reports
  +
|align="center"| 0
  +
|-
  +
| Essays
  +
|align="center"| 0
  +
|-
  +
| Oral polls
  +
|align="center"| 1
  +
|-
  +
| Discussions
  +
|align="center"| 1
  +
|}
  +
  +
  +
</div>
  +
  +
==== Typical questions for ongoing performance evaluation within this section ====
   
  +
#
=== Section 1 ===
 
  +
#
==== Section title: ====
 
  +
#
=== Topics covered in this section: ===
 
=== What forms of evaluation were used to test students’ performance in this section? ===
+
==== Typical questions for seminar classes (labs) within this section ====
  +
# Same as above
=== Typical questions for ongoing performance evaluation within this section ===
 
=== Typical questions for seminar classes (labs) within this section ===
+
==== Test questions for final assessment in this section ====
=== Test questions for final assessment in this section ===
 
   
  +
# Same as above
=== Section 2 ===
 
==== Section title: ====
 
=== Topics covered in this section: ===
 
=== What forms of evaluation were used to test students’ performance in this section? ===
 
=== Typical questions for ongoing performance evaluation within this section ===
 
=== Typical questions for seminar classes (labs) within this section ===
 
=== Test questions for final assessment in this section ===
 

Revision as of 09:47, 3 March 2022

Advanced Databases

  • Course name: Advanced Databases
  • Course number: XYZ
  • Knowledge area: xxx

Course characteristics

Key concepts of the class

  • DevOps Engineering concepts:

What is the purpose of this course?

Advanced Databases have become

______________

What should a student remember at the end of the course?

By the end of the course, the students should be able to recognize and define

What should a student be able to understand at the end of the course?

By the end of the course, the students should be able to describe and explain (with examples)

What should a student be able to apply at the end of the course?

By the end of the course, the students should be able to apply

Course evaluation

Course grade breakdown
Component Points
Laboratory assignments 55%
Final exam 35%
Attendance 10%

Important: In order to successfully finish the course, the student is required to score at least 50% in final exam.


Grades range

Course grading range
A. Excellent 90-100
B. Good 75-89
C. Satisfactory 60-74
D. Poor 0-59


Resources and reference material

  • Textbook:. Available online:
  • Reference:. Available online:
  • Reference:. Available online: h

Course Sections

The course is organized in 8 weeks, with every weeks 4 academics hours of lectures and 4 academic hours of tutorials/labs. The main sections of the course and approximate hour distribution between them is as follows:

Course Sections
Section Section Title Teaching Hours
1 Introduction to subject, computer networks basics, transport layer protocols, and socket programming 12
2 Multithreaded socket programming, remote procedure calls, and distributed system architecture 24
3 Coordination, consistency, and replication in distributed systems 24
4 Fault tolerance and security in distributed systems 30

Section 1:

Section title

Introduction to subject, computer networks basics, transport layer protocols, and socket programming

Topics covered in this section

  • General introduction to the course
  • Computer networks basic
  • Socket programming
  • UDP socket programming
  • TCP socket programming

What forms of evaluation were used to test students’ performance in this section?

Form Yes/No
Development of individual parts of software product code 1
Homework and group projects 1
Midterm evaluation 0
Testing (written or computer based) 1
Reports 0
Essays 0
Oral polls 1
Discussions 1


Typical questions for ongoing performance evaluation within this section

  1. ?
  2. .
  3. ?
  4. ?
  5. ?
  6. ?
  7. ?

Typical questions for seminar classes (labs) within this section

Test questions for final assessment in this section

  1. ?
  2. ?
  3. ?
  4. ?

Section 2:

Section title

Topics covered in this section

What forms of evaluation were used to test students’ performance in this section?

Form Yes/No
Development of individual parts of software product code 1
Homework and group projects 1
Midterm evaluation 0
Testing (written or computer based) 1
Reports 0
Essays 0
Oral polls 1
Discussions 1



Typical questions for ongoing performance evaluation within this section

  1. ?
  2. ?
  3. ?
  4. ?
  5. ?


Typical questions for seminar classes (labs) within this section

  1. You have a list of large numbers, and you need to find if they are prime or not. Would you use multithreading, multiprocessing, or sequential programming in order to complete the task asap? Prove it in practice.
  2. You need to send multiple requests to a server and receive responses. Assume there is a few msecs of delay before you receive the response from the server. Would you use multithreading, multiprocessing, or sequential programming in order to complete the task asap? Prove it in practice. (Order of the requests/responses doesn't matter)
  3. Discuss two ways of creating the threads using threading module in Python: 1) passing the worker function as a target, 2) subclassing the Thread class
  4. Given the function implemented locally, make it available to be called through RPC from remote process? Use xmlRPC.

Test questions for final assessment in this section

  1. .
  2. ?
  3. ?
  4. ?
  5. ?



Section 3: Coordination, consistency, and replication in distributed systems

Section title

Coordination, consistency, and replication in distributed systems

Topics covered in this section

What forms of evaluation were used to test students’ performance in this section?

Form Yes/No
Development of individual parts of software product code 1
Homework and group projects 1
Midterm evaluation 0
Testing (written or computer based) 1
Reports 0
Essays 0
Oral polls 1
Discussions 1


Typical questions for ongoing performance evaluation within this section

  1. ?
  2. ?
  3. ?
  4. ?
  5. ?

Typical questions for seminar classes (labs) within this section

Test questions for final assessment in this section

Section 4: Fault tolerance and security in distributed systems

Section title

Fault tolerance and security in distributed systems

Topics covered in this section

What forms of evaluation were used to test students’ performance in this section?

Form Yes/No
Development of individual parts of software product code 1
Homework and group projects 1
Midterm evaluation 0
Testing (written or computer based) 1
Reports 0
Essays 0
Oral polls 1
Discussions 1


Typical questions for ongoing performance evaluation within this section

Typical questions for seminar classes (labs) within this section

  1. Same as above

Test questions for final assessment in this section

  1. Same as above