<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://eduwiki.innopolis.university/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=S.seytnazarov</id>
	<title>IU - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://eduwiki.innopolis.university/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=S.seytnazarov"/>
	<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php/Special:Contributions/S.seytnazarov"/>
	<updated>2026-05-07T15:49:25Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=8151</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=8151"/>
		<updated>2023-03-22T15:27:31Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Distributed and Network Programming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Distributed and Network Programming =&lt;br /&gt;
* '''Course name''': Distributed and Network Programming&lt;br /&gt;
* '''Code discipline''': XYZ&lt;br /&gt;
* '''Subject area''': xxx&lt;br /&gt;
&lt;br /&gt;
== Short Description ==&lt;br /&gt;
This course covers the following concepts: Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers; Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance..&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisite subjects ===&lt;br /&gt;
* '''Networks''': 1) Understanding Application, Transport, and Network layers, 2) Basic socket programming experience&lt;br /&gt;
* '''Operating systems'''&lt;br /&gt;
&lt;br /&gt;
=== Prerequisite topics ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Course Topics ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Course Sections and Topics&lt;br /&gt;
|-&lt;br /&gt;
! Section !! Topics within the section&lt;br /&gt;
|-&lt;br /&gt;
| Introduction to subject, computer networks basics, transport layer protocols, and socket programming || &lt;br /&gt;
# General introduction to the course&lt;br /&gt;
# Computer networks basic&lt;br /&gt;
# Socket programming&lt;br /&gt;
# UDP socket programming&lt;br /&gt;
# TCP socket programming&lt;br /&gt;
|-&lt;br /&gt;
| Multithreaded socket programming, RPCs, and distributed system architecture || &lt;br /&gt;
# Multithreading and multithreaded socket programming&lt;br /&gt;
# Remote procedure calls (RPCs)&lt;br /&gt;
# Distributed system architectures&lt;br /&gt;
|-&lt;br /&gt;
| Coordination, consistency, and replication in distributed systems || &lt;br /&gt;
# Clock synchronization algorithms (NTP, Berkeley)&lt;br /&gt;
# Logical clock (Lamport clocks)&lt;br /&gt;
# Mutual exclusion algorithms: permission-based, token-based&lt;br /&gt;
# Election algorithms: Bully, Ring&lt;br /&gt;
# Consistency models&lt;br /&gt;
# Replica management&lt;br /&gt;
# Consistency protocols&lt;br /&gt;
|-&lt;br /&gt;
| Fault tolerance and security in distributed systems || &lt;br /&gt;
# Intro to fault tolerance: Failure models, Failure masking by redundancy&lt;br /&gt;
# Process resilience: process groups, process replication, consensus in faulty systems, failure detection&lt;br /&gt;
# Reliable group communication: atomic multicast,&lt;br /&gt;
# Distributed commit&lt;br /&gt;
# Recovery: checkpointing&lt;br /&gt;
# Intro to security: threats, design issues, cryptography&lt;br /&gt;
# Secure channels: authentication, message integrity and confidentiality, secure group communication&lt;br /&gt;
# Access control: general issues, firewalls, secure mobile code, denial of service&lt;br /&gt;
# Secure naming&lt;br /&gt;
# Security management: Key management, secure group management, authorization management&lt;br /&gt;
|} &lt;br /&gt;
== Intended Learning Outcomes (ILOs) ==&lt;br /&gt;
&lt;br /&gt;
=== What is the main purpose of this course? ===&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== ILOs defined at three levels ===&lt;br /&gt;
&lt;br /&gt;
==== Level 1: What concepts should a student know/remember/explain? ====&lt;br /&gt;
By the end of the course, the students should be able to ...&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== Level 2: What basic practical skills should a student be able to perform? ====&lt;br /&gt;
By the end of the course, the students should be able to ...&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== Level 3: What complex comprehensive skills should a student be able to apply in real-life scenarios? ====&lt;br /&gt;
By the end of the course, the students should be able to ...&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election &lt;br /&gt;
== Grading ==&lt;br /&gt;
&lt;br /&gt;
=== Course grading range ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! Grade !! Range !! Description of performance&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent || 90-100 || -&lt;br /&gt;
|-&lt;br /&gt;
| B. Good || 75-89 || -&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory || 60-74 || -&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor || 0-59 || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Course activities and grading breakdown ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! Activity Type !! Percentage of the overall course grade&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments || 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam || 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance || 10%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Recommendations for students on how to succeed in the course ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Resources, literature and reference materials ==&lt;br /&gt;
&lt;br /&gt;
=== Open access resources ===&lt;br /&gt;
* Textbook: Maarten Van Steen, and Andrew S. Tanenbaum. Distributed systems (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* Reference: George F. Coulouris, Jean Dollimore, and Tim Kindberg. Distributed systems: concepts and design (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/&lt;br /&gt;
* Reference: Sukumar Ghosh. Distributed systems: an algorithmic approach (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
=== Closed access resources ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Software and tools used within the course ===&lt;br /&gt;
&lt;br /&gt;
= Teaching Methodology: Methods, techniques, &amp;amp; activities =&lt;br /&gt;
&lt;br /&gt;
== Activities and Teaching Methods ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Activities within each section&lt;br /&gt;
|-&lt;br /&gt;
! Learning Activities !! Section 1 !! Section 2 !! Section 3 !! Section 4&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code || 1 || 1 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects || 1 || 1 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based) || 1 || 1 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls || 1 || 1 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions || 1 || 1 || 1 || 1&lt;br /&gt;
|} &lt;br /&gt;
== Formative Assessment and Course Activities ==&lt;br /&gt;
&lt;br /&gt;
=== Ongoing performance assessment ===&lt;br /&gt;
&lt;br /&gt;
==== Section 1 ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! Activity Type !! Content !! Is Graded?&lt;br /&gt;
|-&lt;br /&gt;
| Question || What are the distributed systems? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Give an example of distributed systems. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What are the advantages of layered architecture? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What are the roles of transport protocols? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || How the TCP and UDP differ from each other? When one is preferred over the other? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What is socket programming? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || How socket programming is different for UDP and TCP? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Write a simple UDP/TCP client-server echo program || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Write a simple chatting program using UDP/TCP sockets || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Given the simple echo server program, apply socket timeouts and catch timeout exceptions || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Write a UDP-based reliable file transfer protocol || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Write a program that parallelly executes the CPU-bound tasks using multiple processes || 0&lt;br /&gt;
|} &lt;br /&gt;
==== Section 2 ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! Activity Type !! Content !! Is Graded?&lt;br /&gt;
|-&lt;br /&gt;
| Question || How the threads differ from processes? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What are the I/O and CPU-bound tasks? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || For what kind of tasks, using threads is preferred than using processes? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What is a remote procedure call? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What are some well-known distributed system architectures? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Discuss the structured and unstructured decentralized architectures. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || 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. || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || 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) || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || 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 || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Given the function implemented locally, make it available to be called through RPC from remote process? Use xmlRPC. || 0&lt;br /&gt;
|} &lt;br /&gt;
==== Section 3 ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! Activity Type !! Content !! Is Graded?&lt;br /&gt;
|-&lt;br /&gt;
| Question || How NTP protocol works? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || How Berkeley protocol works? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Discuss the mutual exclusion algorithms. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Discuss the permanent and server-initiated replicas and their difference || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Explain the Primary-backup protocol. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Given three machines with drifting clocks, adjust their clocks using Berkeley algorithm. || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Explain how Bully algorithm for election works || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Explain how Ring algorithm for election works || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Explain the centralized (permission-based) method of mutual exclusion || 0&lt;br /&gt;
|} &lt;br /&gt;
==== Section 4 ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! Activity Type !! Content !! Is Graded?&lt;br /&gt;
|-&lt;br /&gt;
| Question || Discuss the failure models || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Discuss different failure masking techniques by redundancy || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What is k-fault tolerant group? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What is general model of failure detection? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Explain basic reliable multicasting || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Explain what is authentication || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Explain what are message confidentiality and integrity || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Same as above || 0&lt;br /&gt;
|} &lt;br /&gt;
=== Final assessment ===&lt;br /&gt;
'''Section 1'''&lt;br /&gt;
# Describe an advantage of layered architecture?&lt;br /&gt;
# Describe the differences between TCP and UDP protocols?&lt;br /&gt;
# Provide examples when using UDP can be more reasonable than TCP?&lt;br /&gt;
# Describe how UDP and TCP socket programming differ from each other?&lt;br /&gt;
'''Section 2'''&lt;br /&gt;
# Discuss the differences between the threads and processes.&lt;br /&gt;
# What is the Race condition?&lt;br /&gt;
# Discuss the ways to protect the shared data from the race condition&lt;br /&gt;
# You're given the worker function that just sleeps for a second and quits, implement the same behavior in a subclass of the Thread.&lt;br /&gt;
# Discuss the RPC and its advantages over using the low-level socket programming?&lt;br /&gt;
# Discuss the decentralized architecture: structured and unstructured p2p systems.&lt;br /&gt;
'''Section 3'''&lt;br /&gt;
# Discuss NTP and Berkeley protocols for synchronization and explain their key difference&lt;br /&gt;
# Discuss permission-based and token-based solution for mutual exclusion.&lt;br /&gt;
# Discuss content replication: permanent, server-initiated, and client-initiated replicas.&lt;br /&gt;
# Explain the Primary-backup protocol, its advantages and disadvantages.&lt;br /&gt;
'''Section 4'''&lt;br /&gt;
# Same as above&lt;br /&gt;
&lt;br /&gt;
=== The retake exam ===&lt;br /&gt;
'''Section 1'''&lt;br /&gt;
&lt;br /&gt;
'''Section 2'''&lt;br /&gt;
&lt;br /&gt;
'''Section 3'''&lt;br /&gt;
&lt;br /&gt;
'''Section 4'''&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=8046</id>
		<title>BSc: Fundamentals of Computer Security</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=8046"/>
		<updated>2023-01-23T09:48:07Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Fundamentals of Information Security =&lt;br /&gt;
* '''Course name''': Fundamentals of Information Security&lt;br /&gt;
* '''Code discipline''': XYZ&lt;br /&gt;
* '''Subject area''': xxx&lt;br /&gt;
&lt;br /&gt;
== Short Description ==&lt;br /&gt;
This course covers the following concepts: User authentication and authorization; Database and data center security; Reverse engineering and malicious software; Buffer overflow and software security; OS security; Symmetric encryption; Public-key cryptography.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisite subjects ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Prerequisite topics ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Course Topics ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Course Sections and Topics&lt;br /&gt;
|-&lt;br /&gt;
! Section !! Topics within the section&lt;br /&gt;
|-&lt;br /&gt;
| Computer security technology and principles || &lt;br /&gt;
# Introduction to computer security&lt;br /&gt;
# User authentication and authorization&lt;br /&gt;
# Database and data center security&lt;br /&gt;
# Network security of data center&lt;br /&gt;
# Reverse engineering and malicious software&lt;br /&gt;
|-&lt;br /&gt;
| Software and system security || &lt;br /&gt;
# Buffer overflow and software security&lt;br /&gt;
# OS security&lt;br /&gt;
# Guest lecture from industry&lt;br /&gt;
|-&lt;br /&gt;
| Cryptographic algorithms || &lt;br /&gt;
# Symmetric encryption and message confidentiality&lt;br /&gt;
# Public key cryptography and message authentication&lt;br /&gt;
|-&lt;br /&gt;
| Additional || &lt;br /&gt;
# Compliances and documentation in computer security&lt;br /&gt;
# New technologies and research areas in cyber security&lt;br /&gt;
# Cybercrime and forensics, incident response&lt;br /&gt;
|} &lt;br /&gt;
== Intended Learning Outcomes (ILOs) ==&lt;br /&gt;
&lt;br /&gt;
=== What is the main purpose of this course? ===&lt;br /&gt;
The purpose of this course is to teach the students the important aspects of cryptography, authentication, access control, DoS attacks, intrusion detection, etc. The students will learn major types of attacks and methods of protection from them.&lt;br /&gt;
&lt;br /&gt;
=== ILOs defined at three levels ===&lt;br /&gt;
&lt;br /&gt;
==== Level 1: What concepts should a student know/remember/explain? ====&lt;br /&gt;
By the end of the course, the students should be able to ...&lt;br /&gt;
* Message and user authentication&lt;br /&gt;
* Encryption algorithms&lt;br /&gt;
* Authorization and access control mechanisms&lt;br /&gt;
* Different types of attacks&lt;br /&gt;
* Firewalls and intrusion detection methods&lt;br /&gt;
&lt;br /&gt;
==== Level 2: What basic practical skills should a student be able to perform? ====&lt;br /&gt;
By the end of the course, the students should be able to ...&lt;br /&gt;
* The importance of authentication and authentication protocols&lt;br /&gt;
* Encryption algorithms used for authentication and message integrity&lt;br /&gt;
* The importance of authorization and access control, different protocols&lt;br /&gt;
* Major types of attacks and methods of protection from them&lt;br /&gt;
* Importance of intrusion detection and firewalls&lt;br /&gt;
&lt;br /&gt;
==== Level 3: What complex comprehensive skills should a student be able to apply in real-life scenarios? ====&lt;br /&gt;
By the end of the course, the students should be able to ...&lt;br /&gt;
* Authentication protocols&lt;br /&gt;
* Encryption techniques and algorithms&lt;br /&gt;
* Well-known access control techniques&lt;br /&gt;
* Mitigate the DoS attacks&lt;br /&gt;
* Intrusion detection algorithms&lt;br /&gt;
* Using firewalls &lt;br /&gt;
== Grading ==&lt;br /&gt;
&lt;br /&gt;
=== Course grading range ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! Grade !! Range !! Description of performance&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent || 90-100 || -&lt;br /&gt;
|-&lt;br /&gt;
| B. Good || 75-89 || -&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory || 60-74 || -&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor || 0-59 || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Course activities and grading breakdown ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! Activity Type !! Percentage of the overall course grade&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments || 50%&lt;br /&gt;
|-&lt;br /&gt;
| Weekly quizzes || 14%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance || 6%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam || 30%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Recommendations for students on how to succeed in the course ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Resources, literature and reference materials ==&lt;br /&gt;
&lt;br /&gt;
=== Open access resources ===&lt;br /&gt;
* Required textbook: William Stallings and Lawrie Brown, &amp;quot;Computer Security: Principles and Practice,“ 4th edition, Pearson, 2017.&lt;br /&gt;
* Additional textbook: William Stallings, &amp;quot;Cryptography and Network Security: Principles and Practice,&amp;quot; 7th Edition, Pearson, 2017.&lt;br /&gt;
&lt;br /&gt;
=== Closed access resources ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Software and tools used within the course ===&lt;br /&gt;
 &lt;br /&gt;
= Teaching Methodology: Methods, techniques, &amp;amp; activities =&lt;br /&gt;
&lt;br /&gt;
== Activities and Teaching Methods ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Activities within each section&lt;br /&gt;
|-&lt;br /&gt;
! Learning Activities !! Section 1 !! Section 2 !! Section 3 !! Section 4&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code || 1 || 1 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects || 1 || 1 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based) || 1 || 1 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls || 1 || 1 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions || 1 || 1 || 1 || 1&lt;br /&gt;
|} &lt;br /&gt;
== Formative Assessment and Course Activities ==&lt;br /&gt;
&lt;br /&gt;
=== Ongoing performance assessment ===&lt;br /&gt;
&lt;br /&gt;
==== Section 1 ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! Activity Type !! Content !! Is Graded?&lt;br /&gt;
|-&lt;br /&gt;
| Question || What is meant by the CIA triad? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What is the difference between data integrity and system integrity? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || How is cryptanalysis different from brute-force attack? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || List and briefly explain the different approaches to attacking a symmetric encryption scheme. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || In general terms, what are four means of authenticating a user’s identity? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What is a Trojan horse attack? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What is the difference between authentication and authorization? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || How does RBAC relate to DAC and MAC? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Define the terms database, database management system, and query language. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What is a relational database and what are its principal ingredients? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What is an SQL injection attack? What are the implications of an SQL injection attack? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || List the categories for grouping different types of SQLi attacks. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Why is RBAC considered fit for database access control? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What are three broad mechanisms that malware can use to propagate? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What is a blended attack? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Define a denial-of-service (DoS) attack || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || State the difference between a SYN flooding attack and a SYN spoofing attack. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What is the goal of an HTTP flood attack? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What is a poison packet attack? Give two examples of such an attack. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || How are intruders classified according to skill level? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || List and briefly describe the classifications of intrusion detection systems based on the source and the type of data analyzed. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Consider the given general code for allowing access to a resource: a) Explain the security flaw in this program, b) Rewrite the code to avoid the flaw || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Develop an attack tree for gaining access to the contents of a physical safe || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Typically, in practice, the length of the message is greater than the block size of the encryption algorithm. The simplest approach to handle such encryption is known as electronic codebook (ECB) mode. Explain this mode. Mention a scenario where it cannot be applied. Explain briefly why it is not a secure mode of encryption || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Consider a very simple symmetric block encryption algorithm, in which 64-bits blocks of plaintext are encrypted using a 128-bit key. Show the decryption equation. || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Explain the suitability or unsuitability of the given passwords || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Assume that Personal Identification Numbers (PINs) are formed by nine-digit combinations of numbers 0 to 9. Assume that an adversary is able to attempt three PINs per second.&amp;lt;br&amp;gt;Assuming no feedback to the adversary until each attempt has been completed, what is the expected time to discover the correct PIN?&amp;lt;br&amp;gt;Assuming feedback to the adversary flagging an error as each incorrect digit is entered, what is the expected time to discover the correct PIN? || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Assume an application requires access control policies based on the applicant’s age and the type of funding to be provided. Using an ABAC approach, write policy rules for each of the following scenarios:&amp;lt;br&amp;gt;If the applicant’s age is more than 35, only “Research Grants (RG)” can be provided.&amp;lt;br&amp;gt;If the applicant’s age is less than or equal to 35, both “RG and Travel Grants (TG)” can be provided. || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Assume a system with K subject attributes, M object attributes and Range () denotes the range of possible values that each attribute can take. What are the number of roles and permissions required for an RBAC model? What is the problem with this approach if additional attributes are added? || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Consider a simplified database for an organization that includes information of several departments (identity, name, manager, number of employees) and of managers and employees of the respective departments. Suggest a relational database for efficiently managing this information || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Users hulkhogan and undertaker do not have the SELECT access right to the Inventory table and the Item table. These tables were created by and are owned by user bruno-s. Write the SQL commands that would enable bruno-s to grant SELECT access to these tables to hulkhogan and undertaker. || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Consider the given fragment of code. What type of malware is this? || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Consider the given fragment embedded in a webpage. What type of malicious software is this? || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || In order to implement a classic DoS flood attack, the attacker must generate a sufficiently large volume of packets to exceed the capacity of the link to the target organization. Consider an attack using ICMP echo request (ping) packets that are 100 bytes in size (ignoring framing overhead). How many of these packets per second must the attacker send to flood a target organization using a 8-Mbps link? How many per second if the packets are 1000 bytes in size? Or 1460 bytes? || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || It is discussed that an amplification attack, which is a variant of reflection attack, can be launched by using any type of a suitable UDP service, such as the echo service. However, TCP services cannot be used in this attack. Why? || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Consider the first step of the common attack methodology we describe, which is to gather publicly available information on possible targets. What types of information could be used? What does this use suggest to you about the content and detail of such information? How does this correlate with the organization’s business and legal requirements? How do you reconcile these conflicting demands? || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || As was mentioned in this chapter, the application gateway does not permit an end-toend TCP connection; rather, it sets up two TCP connections, one between itself and a TCP user on an inner host and one between itself and a TCP user on an outside host. The disadvantage of this approach is the additional processing overhead on each connection since the gateway must examine and forward all traffic in both directions. Describe at least one more limitation of this approach which is not discussed. || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Given table shows a sample of a packet filter firewall ruleset for an imaginary network of IP address that range from 192.168.1.0 to 192.168.1.254. Describe the effect of each rule. || 0&lt;br /&gt;
|} &lt;br /&gt;
==== Section 2 ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! Activity Type !! Content !! Is Graded?&lt;br /&gt;
|-&lt;br /&gt;
| Question || Define buffer overflow. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Define an off-by-one attack. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Define an injection attack. List some examples of injection attacks. What are the general circumstances in which injection attacks are found? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || State the similarities and differences between command injection and SQL injection attacks || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || What are the basic steps needed in the process of securing a system? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || State different types of full virtualization with their security requirements. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || List five essential characteristics of cloud computing. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || List and briefly define three cloud service models. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Briefly explain the most prominent deployment models for cloud computing. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Describe some of the main cloud-specific security threats. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Investigate each of the unsafe standard C library functions shown in the figure using the UNIX man pages or any C programming text, and determine a safer alternative to use. || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Investigate the use of a replacement standard C string library, such as Libsafe, bstring, vstr, or other. Determine how significant the required code changes are, if any, to use the chosen library. || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Investigate the issues that arise while using sequence number as both identifier and authenticator of packets. Identify the root cause of the problem. || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Investigate the various types of cross-site scripting (XSS) attacks. How can such attacks be prevented? || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || How can we use the TCP Wrappers and tcpd daemon to achieve secure remote control access? What if the network servers are heavily loaded? || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Why is it important to secure the boot process? Is it required to limit which media the system must boot from? || 0&lt;br /&gt;
|} &lt;br /&gt;
==== Section 3 ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! Activity Type !! Content !! Is Graded?&lt;br /&gt;
|-&lt;br /&gt;
| Question || What are different types of cryptanalysis attacks? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Why do some block cipher modes of operation only use encryption while others use both encryption and decryption? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || In the context of a hash function, what is a compression function? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Briefly explain Diffie-Hellman key exchange. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why? || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption? || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&amp;lt;br&amp;gt;Will this checksum detect all errors caused by an odd number of error bits? Explain.&amp;lt;br&amp;gt;Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&amp;lt;br&amp;gt;Comment on the effectiveness of this function for use as a hash function for authentication || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible? || 0&lt;br /&gt;
|} &lt;br /&gt;
==== Section 4 ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! Activity Type !! Content !! Is Graded?&lt;br /&gt;
|-&lt;br /&gt;
| Question || What are different types of cryptanalysis attacks? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Why do some block cipher modes of operation only use encryption while others use both encryption and decryption? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || In the context of a hash function, what is a compression function? || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Briefly explain Diffie-Hellman key exchange. || 1&lt;br /&gt;
|-&lt;br /&gt;
| Question || Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why? || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption? || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&amp;lt;br&amp;gt;Will this checksum detect all errors caused by an odd number of error bits? Explain.&amp;lt;br&amp;gt;Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&amp;lt;br&amp;gt;Comment on the effectiveness of this function for use as a hash function for authentication || 0&lt;br /&gt;
|-&lt;br /&gt;
| Question || It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible? || 0&lt;br /&gt;
|} &lt;br /&gt;
=== Final assessment ===&lt;br /&gt;
'''Section 1'''&lt;br /&gt;
# Questions from previous two subsections can be used.&lt;br /&gt;
'''Section 2'''&lt;br /&gt;
# Questions from previous two subsections can be used.&lt;br /&gt;
'''Section 3'''&lt;br /&gt;
# Questions from previous two subsections can be used.&lt;br /&gt;
'''Section 4'''&lt;br /&gt;
# Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== The retake exam ===&lt;br /&gt;
'''Section 1'''&lt;br /&gt;
&lt;br /&gt;
'''Section 2'''&lt;br /&gt;
&lt;br /&gt;
'''Section 3'''&lt;br /&gt;
&lt;br /&gt;
'''Section 4'''&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=MSc:_Inter_Networking_and_Routing&amp;diff=7260</id>
		<title>MSc: Inter Networking and Routing</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=MSc:_Inter_Networking_and_Routing&amp;diff=7260"/>
		<updated>2022-07-14T11:39:14Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Prerequisites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Inter-Networking and Routing =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Inter-Networking and Routing&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Inter-networking and routing&lt;br /&gt;
* BGP, OSPF, and AODV&lt;br /&gt;
* NAT, QoS, VLAN&lt;br /&gt;
* Monitoring network traffic, traffic mirroring, and packet crafting as well as proxying&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Inter-Networking and Routing is the course for SNE program that provides the students with fundamental knowledge about inter-networking and routing. The course starts with some introductory material about routing, such as the definition of path cost and the classification of routing algorithms. A networking infrastructure deploys various algorithms for routing packets, classified as those using optimal routes and those using non-optimal routes. This course includes hands-on exercise, and the students will practice their skills on the actual hardware and software. This course includes various interesting topics in the networking domain, which are also related to real-world applications. This course will particularly focus on addressing in detail routing, detailed BGP, OSPF, and AODV. Furthermore, this course also covers Network Address Translation (NAT), Quality of Service (QoS) fundamentals, as well as Virtual LAN (VLAN). It additionally discusses the network traffic, it is monitoring, proxying, and packet crafting in detail. Students will have the opportunity to apply the knowledge learned in class to actual hardware. Furthermore, this course also includes invited talks by experts from industry which will help students to have knowledge of the current state of the art.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
Prior courses:&lt;br /&gt;
* Classical Internet applications&lt;br /&gt;
* Computer systems and networks&lt;br /&gt;
&lt;br /&gt;
The course will benefit if students already know some of the following topics:&lt;br /&gt;
* Basics of TCP/IP networks: TCP/IP stack, transport protocols, application layer protocols, IP addressing, OSI -7 layer model&lt;br /&gt;
* Linux OS: networking and administration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Recommendations for students on how to succeed in the course&lt;br /&gt;
References:&lt;br /&gt;
* [https://www.linuxtopia.org/online_books/linux_for_beginners_index.html Linux for Beginners]&lt;br /&gt;
* [https://www.linuxtopia.org/online_books/linux_network_administrators_guide/index.html Linux Administration and Networking]&lt;br /&gt;
* [https://cds.cern.ch/record/676686/files/0130384887_TOC.pdf Computer Networks]&lt;br /&gt;
&lt;br /&gt;
== Course Objectives Based on Bloom’s Taxonomy ==&lt;br /&gt;
&lt;br /&gt;
=== What should a student remember at the end of the course? ===&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* IP version 6 and Layer 2 Basics&lt;br /&gt;
* Spanning Tree and Routing Basics&lt;br /&gt;
* Link-state routing protocol (OSPF)&lt;br /&gt;
* Path vector routing protocol (BGP)&lt;br /&gt;
* Ad hoc On-Demand Distance Vector Routing (AODV)&lt;br /&gt;
* NAT, QoS, and VLAN&lt;br /&gt;
* Network traffic monitoring, proxying, and packet crafting&lt;br /&gt;
&lt;br /&gt;
=== What should a student be able to understand at the end of the course? ===&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Routing Basics&lt;br /&gt;
* BGP&lt;br /&gt;
* OSPF&lt;br /&gt;
* AODV&lt;br /&gt;
* NAT&lt;br /&gt;
* QoS&lt;br /&gt;
* VLAN&lt;br /&gt;
* Proxying, packet crafting&lt;br /&gt;
&lt;br /&gt;
=== What should a student be able to apply at the end of the course? ===&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Install, Configure, update, and manage services over a network&lt;br /&gt;
* Configure, maintain, and update the routing tables&lt;br /&gt;
* Assign network address and maintain forwarding tables&lt;br /&gt;
* Operate applications using BGP routing&lt;br /&gt;
* Operate applications using AODV routing&lt;br /&gt;
* Represent performance analysis of AODV, OSPF, and BGP&lt;br /&gt;
* Configure VLAN, NAT, and craft network packets using different tools&lt;br /&gt;
* Conduct quality of service experiments in the network (from routing perspective)&lt;br /&gt;
* Install and configure proxies in the network&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Proposed points'''&lt;br /&gt;
|-&lt;br /&gt;
| Labs/seminar classes&lt;br /&gt;
| 20&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 50&lt;br /&gt;
|-&lt;br /&gt;
| Interim performance assessment&lt;br /&gt;
| 30&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Exams&lt;br /&gt;
| 50&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 50&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If necessary, please indicate freely your course’s features in terms of students’ performance assessment: None&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Proposed range'''&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
| 90-100&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
| 75-89&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
| 60-74&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
| 0-59&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If necessary, please indicate freely your course’s grading features: The semester starts with the default range as proposed in the Table [[#tab:MLCourseGradingRange|[tab:MLCourseGradingRange]]], but it may change slightly (usually reduced) depending on how the semester progresses.&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* Radia Perlman, ''&amp;lt;span&amp;gt;Interconnections: Bridges, Routers, Switches, and Internetworking Protocols, 2nd Edition, Sun Microsystems, Inc.&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
The main sections of the course and approximate hour distribution between them is as follows:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Networking overview&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| IP version 6 and Layer 2 Basics&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Spanning Tree and Routing Basics&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Link-state routing protocol (OSPF)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 5&lt;br /&gt;
| Path vector routing protocol (BGP)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Section 1 ===&lt;br /&gt;
&lt;br /&gt;
=== Section title: ===&lt;br /&gt;
&lt;br /&gt;
Networking overview&lt;br /&gt;
&lt;br /&gt;
=== Topics covered in this section: ===&lt;br /&gt;
&lt;br /&gt;
* Present an overview of the main concepts of networking&lt;br /&gt;
* Routing Algorithms&lt;br /&gt;
* Shortest Path&lt;br /&gt;
* Real-Time Network Routing&lt;br /&gt;
&lt;br /&gt;
=== What forms of evaluation were used to test students’ performance in this section? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tabular&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;|a|c|&amp;lt;/span&amp;gt; &amp;amp;amp; '''Yes/No'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Development of individual parts of software product code &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Homework and group projects &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Midterm evaluation &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing (written or computer based) &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Reports &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Essays &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Oral polls &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Discussions &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Typical questions for ongoing performance evaluation within this section ===&lt;br /&gt;
&lt;br /&gt;
# Explain an overview of the main concepts of networking&lt;br /&gt;
# What is the difference between a packet switching and circuit switching?&lt;br /&gt;
# List and briefly define types of routing.&lt;br /&gt;
# Briefly define the RTNR.&lt;br /&gt;
# What is the internetworking?&lt;br /&gt;
&lt;br /&gt;
=== Typical questions for seminar classes (labs) within this section ===&lt;br /&gt;
&lt;br /&gt;
# How can a network can be simulated in a virtual environment?&lt;br /&gt;
# How to create a simple switched network? What is a subnet?&lt;br /&gt;
# How to connect a subnet to the Internet using single IP address with basic routing and NAT?&lt;br /&gt;
&lt;br /&gt;
=== Test questions for final assessment in this section ===&lt;br /&gt;
&lt;br /&gt;
# What is the difference between static and dynamic routing?&lt;br /&gt;
# What is tunneling?&lt;br /&gt;
# How to connect a subnet to the Internet using single IP address with basic routing and NAT?&lt;br /&gt;
&lt;br /&gt;
=== Section 2 ===&lt;br /&gt;
&lt;br /&gt;
=== Section title: ===&lt;br /&gt;
&lt;br /&gt;
IP version 6 and Layer 2 Basics&lt;br /&gt;
&lt;br /&gt;
=== Topics covered in this section: ===&lt;br /&gt;
&lt;br /&gt;
* Data link layer - introduction&lt;br /&gt;
* Present an overview of the IPv6&lt;br /&gt;
* Present the difference between the IPv4 and IPv6&lt;br /&gt;
* Error Control Mechanisms&lt;br /&gt;
* Reed-Solomon (RS) Codes&lt;br /&gt;
* Flow control&lt;br /&gt;
&lt;br /&gt;
=== What forms of evaluation were used to test students’ performance in this section? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tabular&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;|a|c|&amp;lt;/span&amp;gt; &amp;amp;amp; '''Yes/No'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Development of individual parts of software product code &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Homework and group projects &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Midterm evaluation &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing (written or computer based) &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Reports &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Essays &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Oral polls &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Discussions &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Typical questions for ongoing performance evaluation within this section ===&lt;br /&gt;
&lt;br /&gt;
# What is the difference between the IPv4 and IPv6?&lt;br /&gt;
# Types of ARQ Protocols?&lt;br /&gt;
# Briefly describe Selective Repeat.&lt;br /&gt;
# What is Stop and Wait algorithm?&lt;br /&gt;
&lt;br /&gt;
=== Typical questions for seminar classes (labs) within this section ===&lt;br /&gt;
&lt;br /&gt;
# What are the TCP and UDP protocols? How can you discover a remote machine and detect its running services?&lt;br /&gt;
# How can you capture and analize a network traffic?&lt;br /&gt;
# How can you set-up basic IPv6 network?&lt;br /&gt;
# How to separate a network using VLAN technology.&lt;br /&gt;
# How can multiple switches be used together to provide fault tolerance.&lt;br /&gt;
# How to set-up a link aggregation (bond interface) to provide connection with load balancing and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== Test questions for final assessment in this section ===&lt;br /&gt;
&lt;br /&gt;
# How can you set-up basic IPv6 network?&lt;br /&gt;
# What is the Sliding Window algorithm?&lt;br /&gt;
# How are networks connected?&lt;br /&gt;
# How can multiple switches be used together to provide fault tolerance?&lt;br /&gt;
&lt;br /&gt;
=== Section 3 ===&lt;br /&gt;
&lt;br /&gt;
=== Section title: ===&lt;br /&gt;
&lt;br /&gt;
Spanning Tree and Routing Basics&lt;br /&gt;
&lt;br /&gt;
=== Topics covered in this section: ===&lt;br /&gt;
&lt;br /&gt;
* An overview of the spanning tree.&lt;br /&gt;
* An overview of the routing algorithm.&lt;br /&gt;
&lt;br /&gt;
=== What forms of evaluation were used to test students’ performance in this section? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tabular&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;|a|c|&amp;lt;/span&amp;gt; &amp;amp;amp; '''Yes/No'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Development of individual parts of software product code &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Homework and group projects &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Midterm evaluation &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing (written or computer based) &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Reports &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Essays &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Oral polls &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Discussions &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Typical questions for ongoing performance evaluation within this section ===&lt;br /&gt;
&lt;br /&gt;
# What is spanning tree protocol?&lt;br /&gt;
# Explain how spanning tree protocol works?&lt;br /&gt;
# Hot to configure STP?&lt;br /&gt;
&lt;br /&gt;
=== Typical questions for seminar classes (labs) within this section ===&lt;br /&gt;
&lt;br /&gt;
# How to set-up a link aggregation (bond interface) to provide connection with load balancing and fault tolerance.&lt;br /&gt;
# How can you capture and analyze a network traffic?&lt;br /&gt;
&lt;br /&gt;
=== Test questions for final assessment in this section ===&lt;br /&gt;
&lt;br /&gt;
# How to elect one root bridge?&lt;br /&gt;
# Define designated port!&lt;br /&gt;
# How to configure loopguard?&lt;br /&gt;
&lt;br /&gt;
=== Section 4 ===&lt;br /&gt;
&lt;br /&gt;
=== Section title: ===&lt;br /&gt;
&lt;br /&gt;
Link state routing protocol (OSPF)&lt;br /&gt;
&lt;br /&gt;
=== Topics covered in this section: ===&lt;br /&gt;
&lt;br /&gt;
* Shortest path first (SPF) forwarding&lt;br /&gt;
* Dijkstra’s algorithm&lt;br /&gt;
* Low Bandwidth Requirements&lt;br /&gt;
* Broadcast Networks&lt;br /&gt;
&lt;br /&gt;
=== What forms of evaluation were used to test students’ performance in this section? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tabular&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;|a|c|&amp;lt;/span&amp;gt; &amp;amp;amp; '''Yes/No'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Development of individual parts of software product code &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Homework and group projects &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Midterm evaluation &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing (written or computer based) &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Reports &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Essays &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Oral polls &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Discussions &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Typical questions for ongoing performance evaluation within this section ===&lt;br /&gt;
&lt;br /&gt;
# How to reduce convergence delay?&lt;br /&gt;
# Dijkstra’s LSR algorithm explain on example!&lt;br /&gt;
# Give an example of topology change&lt;br /&gt;
# Explain Broadcast Networks&lt;br /&gt;
&lt;br /&gt;
=== Typical questions for seminar classes (labs) within this section ===&lt;br /&gt;
&lt;br /&gt;
# Which interface you will select as the OSPF router ID and why?&lt;br /&gt;
# What is the difference between advertising all the networks VS manual advertising (per interface or per subnet)?&lt;br /&gt;
# Who can you check if you have a full adjacency with your router neighbor?&lt;br /&gt;
&lt;br /&gt;
=== Test questions for final assessment in this section ===&lt;br /&gt;
&lt;br /&gt;
# Explain Dijkstra algorithm.&lt;br /&gt;
# Which interface you will select as the OSPF router ID and why?&lt;br /&gt;
# Why every area has to be connected to area 0?&lt;br /&gt;
&lt;br /&gt;
=== Section 5 ===&lt;br /&gt;
&lt;br /&gt;
=== Section title: ===&lt;br /&gt;
&lt;br /&gt;
Path vector routing protocol(BGP)&lt;br /&gt;
&lt;br /&gt;
=== Topics covered in this section: ===&lt;br /&gt;
&lt;br /&gt;
* BGP4: Inter-Domain Routing in the Internet&lt;br /&gt;
* BGP Messages, Attributes and Features&lt;br /&gt;
* Inter-domain vs Intra-domain routing&lt;br /&gt;
* Autonomous Systems and Gateways&lt;br /&gt;
&lt;br /&gt;
=== What forms of evaluation were used to test students’ performance in this section? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tabular&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;|a|c|&amp;lt;/span&amp;gt; &amp;amp;amp; '''Yes/No'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Development of individual parts of software product code &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Homework and group projects &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Midterm evaluation &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing (written or computer based) &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Reports &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Essays &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Oral polls &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Discussions &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Typical questions for ongoing performance evaluation within this section ===&lt;br /&gt;
&lt;br /&gt;
# How to reduce assign IP address and AS numbers?&lt;br /&gt;
# I-BGP and E-BGP explain!&lt;br /&gt;
# Intra-domain vs Inter-domain&lt;br /&gt;
# Explain RIP, OSPF?&lt;br /&gt;
&lt;br /&gt;
=== Typical questions for seminar classes (labs) within this section ===&lt;br /&gt;
&lt;br /&gt;
# Can your BGP peers reach your internal subnets? And can you reach their internal subnets?&lt;br /&gt;
# How can the OSPF Internal router know about your peer’s OSPF Internal router?&lt;br /&gt;
# Is it a good idea to redistribute BGP routes into the OSPF routing table?&lt;br /&gt;
&lt;br /&gt;
=== Test questions for final assessment in this section ===&lt;br /&gt;
&lt;br /&gt;
# Path-vector protocol, explain!&lt;br /&gt;
# Multi-Exit Discriminator, explain.&lt;br /&gt;
# Is it a good idea to redistribute BGP routes into the OSPF routing table?&lt;br /&gt;
&lt;br /&gt;
=== Section 6 ===&lt;br /&gt;
&lt;br /&gt;
=== Section title: ===&lt;br /&gt;
&lt;br /&gt;
NAT, Proxying, traffic monitoring, and packet crafting&lt;br /&gt;
&lt;br /&gt;
=== Topics covered in this section: ===&lt;br /&gt;
&lt;br /&gt;
* Network address translation in the network&lt;br /&gt;
* Network traffic monitoring and proxying&lt;br /&gt;
* Packet crafting and tools&lt;br /&gt;
&lt;br /&gt;
=== What forms of evaluation were used to test students’ performance in this section? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tabular&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;|a|c|&amp;lt;/span&amp;gt; &amp;amp;amp; '''Yes/No'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Development of individual parts of software product code &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Homework and group projects &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Midterm evaluation &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Testing (written or computer based) &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Reports &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Essays &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Oral polls &amp;amp;amp; 0&amp;lt;br /&amp;gt;&lt;br /&gt;
Discussions &amp;amp;amp; 1&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Typical questions for ongoing performance evaluation within this section ===&lt;br /&gt;
&lt;br /&gt;
# How to configure NAT rules?&lt;br /&gt;
# How to monitor network traffic and at which level?&lt;br /&gt;
# How is proxy installed and configured?&lt;br /&gt;
# What are the tools used for packet crafting and how do they work?&lt;br /&gt;
&lt;br /&gt;
=== Typical questions for seminar classes (labs) within this section ===&lt;br /&gt;
&lt;br /&gt;
# Configure NAT and analyze the traffic in the network?&lt;br /&gt;
# Monitor the network traffic and look for behaviors as well as pre-defined features?&lt;br /&gt;
# Pass the network traffic through a proxy by defining rules in the proxy&lt;br /&gt;
# craft network packets and automate&lt;br /&gt;
&lt;br /&gt;
=== Test questions for final assessment in this section ===&lt;br /&gt;
&lt;br /&gt;
# What are the pros and cons of different packet crafting tools?&lt;br /&gt;
# How to configure NAT with different rules?&lt;br /&gt;
# How to automate the packet crafting in network using different tools?&lt;br /&gt;
# How proxying affect the network performance?&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=2151</id>
		<title>BSc: Fundamentals of Computer Security</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=2151"/>
		<updated>2022-02-01T18:38:48Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Fundamentals of Information Security =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Fundamentals of Information Security&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* User authentication and authorization&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Reverse engineering and malicious software&lt;br /&gt;
* Buffer overflow and software security&lt;br /&gt;
* OS security&lt;br /&gt;
* Symmetric encryption&lt;br /&gt;
* Public-key cryptography&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
The purpose of this course is to teach the students the important aspects of cryptography, authentication, access control, DoS attacks, intrusion detection, etc. The students will learn major types of attacks and methods of protection from them.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Message and user authentication&lt;br /&gt;
* Encryption algorithms&lt;br /&gt;
* Authorization and access control mechanisms&lt;br /&gt;
* Different types of attacks&lt;br /&gt;
* Firewalls and intrusion detection methods&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* The importance of authentication and authentication protocols&lt;br /&gt;
* Encryption algorithms used for authentication and message integrity&lt;br /&gt;
* The importance of authorization and access control, different protocols&lt;br /&gt;
* Major types of attacks and methods of protection from them&lt;br /&gt;
* Importance of intrusion detection and firewalls &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Authentication protocols&lt;br /&gt;
* Encryption techniques and algorithms&lt;br /&gt;
* Well-known access control techniques&lt;br /&gt;
* Mitigate the DoS attacks&lt;br /&gt;
* Intrusion detection algorithms&lt;br /&gt;
* Using firewalls&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 40%&lt;br /&gt;
|-&lt;br /&gt;
| Homework&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 4%&lt;br /&gt;
|-&lt;br /&gt;
| Weekly quizzes&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 16%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 30%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89.9&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74.9&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59.9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Required textbook:''' William Stallings and Lawrie Brown, &amp;quot;Computer Security: Principles and Practice,“ 4th edition, Pearson, 2017.&lt;br /&gt;
* '''Additional textbook:''' William Stallings, &amp;quot;Cryptography and Network Security: Principles and Practice,&amp;quot; 7th Edition, Pearson, 2017.&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Computer security technology and principles&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 23&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Software and system security &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 18&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Cryptographic algorithms&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 9&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Additional&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 14&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Computer security technology and principles ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Introduction to computer security&lt;br /&gt;
* User authentication and authorization&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Network security of data center&lt;br /&gt;
* Reverse engineering and malicious software&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What is meant by the CIA triad?&lt;br /&gt;
# What is the difference between data integrity and system integrity?&lt;br /&gt;
# How is cryptanalysis different from brute-force attack?&lt;br /&gt;
# List and briefly explain the different approaches to attacking a symmetric encryption scheme.&lt;br /&gt;
# In general terms, what are four means of authenticating a user’s identity?&lt;br /&gt;
# What is a Trojan horse attack?&lt;br /&gt;
# What is the difference between authentication and authorization?&lt;br /&gt;
# How does RBAC relate to DAC and MAC?&lt;br /&gt;
# Define the terms database, database management system, and query language.&lt;br /&gt;
# What is a relational database and what are its principal ingredients?&lt;br /&gt;
# What is an SQL injection attack? What are the implications of an SQL injection attack?&lt;br /&gt;
# List the categories for grouping different types of SQLi attacks.&lt;br /&gt;
# Why is RBAC considered fit for database access control?&lt;br /&gt;
# What are three broad mechanisms that malware can use to propagate?&lt;br /&gt;
# What is a blended attack?&lt;br /&gt;
# Define a denial-of-service (DoS) attack&lt;br /&gt;
# State the difference between a SYN flooding attack and a SYN spoofing attack.&lt;br /&gt;
# What is the goal of an HTTP flood attack?&lt;br /&gt;
# What is a poison packet attack? Give two examples of such an attack.&lt;br /&gt;
# How are intruders classified according to skill level?&lt;br /&gt;
# List and briefly describe the classifications of intrusion detection systems based on the source and the type of data analyzed.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Consider the given general code for allowing access to a resource: a) Explain the security flaw in this program, b) Rewrite the code to avoid the flaw&lt;br /&gt;
# Develop an attack tree for gaining access to the contents of a physical safe&lt;br /&gt;
# Typically, in practice, the length of the message is greater than the block size of the encryption algorithm. The simplest approach to handle such encryption is known as electronic codebook (ECB) mode. Explain this mode. Mention a scenario where it cannot be applied. Explain briefly why it is not a secure mode of encryption&lt;br /&gt;
# Consider a very simple symmetric block encryption algorithm, in which 64-bits blocks of plaintext are encrypted using a 128-bit key. Show the decryption equation.&lt;br /&gt;
# Explain the suitability or unsuitability of the given passwords&lt;br /&gt;
# Assume that Personal Identification Numbers (PINs) are formed by nine-digit combinations of numbers 0 to 9. Assume that an adversary is able to attempt three PINs per second.&lt;br /&gt;
## Assuming no feedback to the adversary until each attempt has been completed, what is the expected time to discover the correct PIN?&lt;br /&gt;
## Assuming feedback to the adversary flagging an error as each incorrect digit is entered, what is the expected time to discover the correct PIN?&lt;br /&gt;
# Assume an application requires access control policies based on the applicant’s age and the type of funding to be provided. Using an ABAC approach, write policy rules for each of the following scenarios:&lt;br /&gt;
## If the applicant’s age is more than 35, only “Research Grants (RG)” can be provided.&lt;br /&gt;
## If the applicant’s age is less than or equal to 35, both “RG and Travel Grants (TG)” can be provided.&lt;br /&gt;
# Assume a system with K subject attributes, M object attributes and Range () denotes the range of possible values that each attribute can take. What are the number of roles and permissions required for an RBAC model? What is the problem with this approach if additional attributes are added?&lt;br /&gt;
# Consider a simplified database for an organization that includes information of several departments (identity, name, manager, number of employees) and of managers and employees of the respective departments. Suggest a relational database for efficiently managing this information&lt;br /&gt;
# Users hulkhogan and undertaker do not have the SELECT access right to the Inventory table and the Item table. These tables were created by and are owned by user bruno-s. Write the SQL commands that would enable bruno-s to grant SELECT access to these tables to hulkhogan and undertaker.&lt;br /&gt;
# Consider the given fragment of code. What type of malware is this?&lt;br /&gt;
# Consider the given fragment embedded in a webpage. What type of malicious software is this?&lt;br /&gt;
# In order to implement a classic DoS flood attack, the attacker must generate a sufficiently large volume of packets to exceed the capacity of the link to the target organization. Consider an attack using ICMP echo request (ping) packets that are 100 bytes in size (ignoring framing overhead). How many of these packets per second must the attacker send to flood a target organization using a 8-Mbps link? How many per second if the packets are 1000 bytes in size? Or 1460 bytes?&lt;br /&gt;
# It is discussed that an amplification attack, which is a variant of reflection attack, can be launched by using any type of a suitable UDP service, such as the echo service. However, TCP services cannot be used in this attack. Why?&lt;br /&gt;
# Consider the first step of the common attack methodology we describe, which is to gather publicly available information on possible targets. What types of information could be used? What does this use suggest to you about the content and detail of such information? How does this correlate with the organization’s business and legal requirements? How do you reconcile these conflicting demands?&lt;br /&gt;
# As was mentioned in this chapter, the application gateway does not permit an end-toend TCP connection; rather, it sets up two TCP connections, one between itself and a TCP user on an inner host and one between itself and a TCP user on an outside host. The disadvantage of this approach is the additional processing overhead on each connection since the gateway must examine and forward all traffic in both directions. Describe at least one more limitation of this approach which is not discussed.&lt;br /&gt;
# Given table shows a sample of a packet filter firewall ruleset for an imaginary network of IP address that range from 192.168.1.0 to 192.168.1.254. Describe the effect of each rule.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Software and system security ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Buffer overflow and software security&lt;br /&gt;
* OS security&lt;br /&gt;
* Guest lecture from industry&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Define buffer overflow. &lt;br /&gt;
# Define an off-by-one attack.&lt;br /&gt;
# Define an injection attack. List some examples of injection attacks. What are the general circumstances in which injection attacks are found?&lt;br /&gt;
# State the similarities and differences between command injection and SQL injection attacks&lt;br /&gt;
# What are the basic steps needed in the process of securing a system?&lt;br /&gt;
# State different types of full virtualization with their security requirements.&lt;br /&gt;
# List five essential characteristics of cloud computing.&lt;br /&gt;
# List and briefly define three cloud service models.&lt;br /&gt;
# Briefly explain the most prominent deployment models for cloud computing.&lt;br /&gt;
# Describe some of the main cloud-specific security threats.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Investigate each of the unsafe standard C library functions shown in the figure using the UNIX man pages or any C programming text, and determine a safer alternative to use.&lt;br /&gt;
# Investigate the use of a replacement standard C string library, such as Libsafe, bstring, vstr, or other. Determine how significant the required code changes are, if any, to use the chosen library.&lt;br /&gt;
# Investigate the issues that arise while using sequence number as both identifier and authenticator of packets. Identify the root cause of the problem.&lt;br /&gt;
# Investigate the various types of cross-site scripting (XSS) attacks. How can such attacks be prevented? &lt;br /&gt;
# How can we use the TCP Wrappers and tcpd daemon to achieve secure remote control access? What if the network servers are heavily loaded?&lt;br /&gt;
# Why is it important to secure the boot process? Is it required to limit which media the system must boot from?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Cryptographic algorithms ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Symmetric encryption and message confidentiality&lt;br /&gt;
* Public key cryptography and message authentication&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are different types of cryptanalysis attacks?&lt;br /&gt;
# Why do some block cipher modes of operation only use encryption while others use both encryption and decryption?&lt;br /&gt;
# In the context of a hash function, what is a compression function?&lt;br /&gt;
# Briefly explain Diffie-Hellman key exchange.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why?&lt;br /&gt;
# Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption?&lt;br /&gt;
# Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&lt;br /&gt;
## Will this checksum detect all errors caused by an odd number of error bits? Explain.&lt;br /&gt;
## Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&lt;br /&gt;
## Comment on the effectiveness of this function for use as a hash function for authentication&lt;br /&gt;
# It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 4: Additional ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Compliances and documentation in computer security&lt;br /&gt;
* New technologies and research areas in cyber security&lt;br /&gt;
* Cybercrime and forensics, incident response&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are different types of cryptanalysis attacks?&lt;br /&gt;
# Why do some block cipher modes of operation only use encryption while others use both encryption and decryption?&lt;br /&gt;
# In the context of a hash function, what is a compression function?&lt;br /&gt;
# Briefly explain Diffie-Hellman key exchange.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why?&lt;br /&gt;
# Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption?&lt;br /&gt;
# Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&lt;br /&gt;
## Will this checksum detect all errors caused by an odd number of error bits? Explain.&lt;br /&gt;
## Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&lt;br /&gt;
## Comment on the effectiveness of this function for use as a hash function for authentication&lt;br /&gt;
# It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1903</id>
		<title>BSc: Fundamentals of Computer Security</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1903"/>
		<updated>2022-01-18T10:46:47Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Resources and reference material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Fundamentals of Information Security =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Fundamentals of Information Security&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* User authentication and authorization&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Reverse engineering and malicious software&lt;br /&gt;
* Buffer overflow and software security&lt;br /&gt;
* OS security&lt;br /&gt;
* Symmetric encryption&lt;br /&gt;
* Public-key cryptography&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
The purpose of this course is to teach the students the important aspects of cryptography, authentication, access control, DoS attacks, intrusion detection, etc. The students will learn major types of attacks and methods of protection from them.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Message and user authentication&lt;br /&gt;
* Encryption algorithms&lt;br /&gt;
* Authorization and access control mechanisms&lt;br /&gt;
* Different types of attacks&lt;br /&gt;
* Firewalls and intrusion detection methods&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* The importance of authentication and authentication protocols&lt;br /&gt;
* Encryption algorithms used for authentication and message integrity&lt;br /&gt;
* The importance of authorization and access control, different protocols&lt;br /&gt;
* Major types of attacks and methods of protection from them&lt;br /&gt;
* Importance of intrusion detection and firewalls &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Authentication protocols&lt;br /&gt;
* Encryption techniques and algorithms&lt;br /&gt;
* Well-known access control techniques&lt;br /&gt;
* Mitigate the DoS attacks&lt;br /&gt;
* Intrusion detection algorithms&lt;br /&gt;
* Using firewalls&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Required textbook:''' William Stallings and Lawrie Brown, &amp;quot;Computer Security: Principles and Practice,“ 4th edition, Pearson, 2017.&lt;br /&gt;
* '''Additional textbook:''' William Stallings, &amp;quot;Cryptography and Network Security: Principles and Practice,&amp;quot; 7th Edition, Pearson, 2017.&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Computer security technology and principles&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 23&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Software and system security &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 18&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Cryptographic algorithms&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 9&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Additional&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 14&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Computer security technology and principles ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Introduction to computer security&lt;br /&gt;
* User authentication and authorization&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Network security of data center&lt;br /&gt;
* Reverse engineering and malicious software&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What is meant by the CIA triad?&lt;br /&gt;
# What is the difference between data integrity and system integrity?&lt;br /&gt;
# How is cryptanalysis different from brute-force attack?&lt;br /&gt;
# List and briefly explain the different approaches to attacking a symmetric encryption scheme.&lt;br /&gt;
# In general terms, what are four means of authenticating a user’s identity?&lt;br /&gt;
# What is a Trojan horse attack?&lt;br /&gt;
# What is the difference between authentication and authorization?&lt;br /&gt;
# How does RBAC relate to DAC and MAC?&lt;br /&gt;
# Define the terms database, database management system, and query language.&lt;br /&gt;
# What is a relational database and what are its principal ingredients?&lt;br /&gt;
# What is an SQL injection attack? What are the implications of an SQL injection attack?&lt;br /&gt;
# List the categories for grouping different types of SQLi attacks.&lt;br /&gt;
# Why is RBAC considered fit for database access control?&lt;br /&gt;
# What are three broad mechanisms that malware can use to propagate?&lt;br /&gt;
# What is a blended attack?&lt;br /&gt;
# Define a denial-of-service (DoS) attack&lt;br /&gt;
# State the difference between a SYN flooding attack and a SYN spoofing attack.&lt;br /&gt;
# What is the goal of an HTTP flood attack?&lt;br /&gt;
# What is a poison packet attack? Give two examples of such an attack.&lt;br /&gt;
# How are intruders classified according to skill level?&lt;br /&gt;
# List and briefly describe the classifications of intrusion detection systems based on the source and the type of data analyzed.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Consider the given general code for allowing access to a resource: a) Explain the security flaw in this program, b) Rewrite the code to avoid the flaw&lt;br /&gt;
# Develop an attack tree for gaining access to the contents of a physical safe&lt;br /&gt;
# Typically, in practice, the length of the message is greater than the block size of the encryption algorithm. The simplest approach to handle such encryption is known as electronic codebook (ECB) mode. Explain this mode. Mention a scenario where it cannot be applied. Explain briefly why it is not a secure mode of encryption&lt;br /&gt;
# Consider a very simple symmetric block encryption algorithm, in which 64-bits blocks of plaintext are encrypted using a 128-bit key. Show the decryption equation.&lt;br /&gt;
# Explain the suitability or unsuitability of the given passwords&lt;br /&gt;
# Assume that Personal Identification Numbers (PINs) are formed by nine-digit combinations of numbers 0 to 9. Assume that an adversary is able to attempt three PINs per second.&lt;br /&gt;
## Assuming no feedback to the adversary until each attempt has been completed, what is the expected time to discover the correct PIN?&lt;br /&gt;
## Assuming feedback to the adversary flagging an error as each incorrect digit is entered, what is the expected time to discover the correct PIN?&lt;br /&gt;
# Assume an application requires access control policies based on the applicant’s age and the type of funding to be provided. Using an ABAC approach, write policy rules for each of the following scenarios:&lt;br /&gt;
## If the applicant’s age is more than 35, only “Research Grants (RG)” can be provided.&lt;br /&gt;
## If the applicant’s age is less than or equal to 35, both “RG and Travel Grants (TG)” can be provided.&lt;br /&gt;
# Assume a system with K subject attributes, M object attributes and Range () denotes the range of possible values that each attribute can take. What are the number of roles and permissions required for an RBAC model? What is the problem with this approach if additional attributes are added?&lt;br /&gt;
# Consider a simplified database for an organization that includes information of several departments (identity, name, manager, number of employees) and of managers and employees of the respective departments. Suggest a relational database for efficiently managing this information&lt;br /&gt;
# Users hulkhogan and undertaker do not have the SELECT access right to the Inventory table and the Item table. These tables were created by and are owned by user bruno-s. Write the SQL commands that would enable bruno-s to grant SELECT access to these tables to hulkhogan and undertaker.&lt;br /&gt;
# Consider the given fragment of code. What type of malware is this?&lt;br /&gt;
# Consider the given fragment embedded in a webpage. What type of malicious software is this?&lt;br /&gt;
# In order to implement a classic DoS flood attack, the attacker must generate a sufficiently large volume of packets to exceed the capacity of the link to the target organization. Consider an attack using ICMP echo request (ping) packets that are 100 bytes in size (ignoring framing overhead). How many of these packets per second must the attacker send to flood a target organization using a 8-Mbps link? How many per second if the packets are 1000 bytes in size? Or 1460 bytes?&lt;br /&gt;
# It is discussed that an amplification attack, which is a variant of reflection attack, can be launched by using any type of a suitable UDP service, such as the echo service. However, TCP services cannot be used in this attack. Why?&lt;br /&gt;
# Consider the first step of the common attack methodology we describe, which is to gather publicly available information on possible targets. What types of information could be used? What does this use suggest to you about the content and detail of such information? How does this correlate with the organization’s business and legal requirements? How do you reconcile these conflicting demands?&lt;br /&gt;
# As was mentioned in this chapter, the application gateway does not permit an end-toend TCP connection; rather, it sets up two TCP connections, one between itself and a TCP user on an inner host and one between itself and a TCP user on an outside host. The disadvantage of this approach is the additional processing overhead on each connection since the gateway must examine and forward all traffic in both directions. Describe at least one more limitation of this approach which is not discussed.&lt;br /&gt;
# Given table shows a sample of a packet filter firewall ruleset for an imaginary network of IP address that range from 192.168.1.0 to 192.168.1.254. Describe the effect of each rule.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Software and system security ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Buffer overflow and software security&lt;br /&gt;
* OS security&lt;br /&gt;
* Guest lecture from industry&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Define buffer overflow. &lt;br /&gt;
# Define an off-by-one attack.&lt;br /&gt;
# Define an injection attack. List some examples of injection attacks. What are the general circumstances in which injection attacks are found?&lt;br /&gt;
# State the similarities and differences between command injection and SQL injection attacks&lt;br /&gt;
# What are the basic steps needed in the process of securing a system?&lt;br /&gt;
# State different types of full virtualization with their security requirements.&lt;br /&gt;
# List five essential characteristics of cloud computing.&lt;br /&gt;
# List and briefly define three cloud service models.&lt;br /&gt;
# Briefly explain the most prominent deployment models for cloud computing.&lt;br /&gt;
# Describe some of the main cloud-specific security threats.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Investigate each of the unsafe standard C library functions shown in the figure using the UNIX man pages or any C programming text, and determine a safer alternative to use.&lt;br /&gt;
# Investigate the use of a replacement standard C string library, such as Libsafe, bstring, vstr, or other. Determine how significant the required code changes are, if any, to use the chosen library.&lt;br /&gt;
# Investigate the issues that arise while using sequence number as both identifier and authenticator of packets. Identify the root cause of the problem.&lt;br /&gt;
# Investigate the various types of cross-site scripting (XSS) attacks. How can such attacks be prevented? &lt;br /&gt;
# How can we use the TCP Wrappers and tcpd daemon to achieve secure remote control access? What if the network servers are heavily loaded?&lt;br /&gt;
# Why is it important to secure the boot process? Is it required to limit which media the system must boot from?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Cryptographic algorithms ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Symmetric encryption and message confidentiality&lt;br /&gt;
* Public key cryptography and message authentication&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are different types of cryptanalysis attacks?&lt;br /&gt;
# Why do some block cipher modes of operation only use encryption while others use both encryption and decryption?&lt;br /&gt;
# In the context of a hash function, what is a compression function?&lt;br /&gt;
# Briefly explain Diffie-Hellman key exchange.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why?&lt;br /&gt;
# Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption?&lt;br /&gt;
# Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&lt;br /&gt;
## Will this checksum detect all errors caused by an odd number of error bits? Explain.&lt;br /&gt;
## Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&lt;br /&gt;
## Comment on the effectiveness of this function for use as a hash function for authentication&lt;br /&gt;
# It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 4: Additional ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Compliances and documentation in computer security&lt;br /&gt;
* New technologies and research areas in cyber security&lt;br /&gt;
* Cybercrime and forensics, incident response&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are different types of cryptanalysis attacks?&lt;br /&gt;
# Why do some block cipher modes of operation only use encryption while others use both encryption and decryption?&lt;br /&gt;
# In the context of a hash function, what is a compression function?&lt;br /&gt;
# Briefly explain Diffie-Hellman key exchange.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why?&lt;br /&gt;
# Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption?&lt;br /&gt;
# Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&lt;br /&gt;
## Will this checksum detect all errors caused by an odd number of error bits? Explain.&lt;br /&gt;
## Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&lt;br /&gt;
## Comment on the effectiveness of this function for use as a hash function for authentication&lt;br /&gt;
# It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1902</id>
		<title>BSc: Fundamentals of Computer Security</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1902"/>
		<updated>2022-01-18T10:46:26Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Resources and reference material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Fundamentals of Information Security =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Fundamentals of Information Security&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* User authentication and authorization&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Reverse engineering and malicious software&lt;br /&gt;
* Buffer overflow and software security&lt;br /&gt;
* OS security&lt;br /&gt;
* Symmetric encryption&lt;br /&gt;
* Public-key cryptography&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
The purpose of this course is to teach the students the important aspects of cryptography, authentication, access control, DoS attacks, intrusion detection, etc. The students will learn major types of attacks and methods of protection from them.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Message and user authentication&lt;br /&gt;
* Encryption algorithms&lt;br /&gt;
* Authorization and access control mechanisms&lt;br /&gt;
* Different types of attacks&lt;br /&gt;
* Firewalls and intrusion detection methods&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* The importance of authentication and authentication protocols&lt;br /&gt;
* Encryption algorithms used for authentication and message integrity&lt;br /&gt;
* The importance of authorization and access control, different protocols&lt;br /&gt;
* Major types of attacks and methods of protection from them&lt;br /&gt;
* Importance of intrusion detection and firewalls &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Authentication protocols&lt;br /&gt;
* Encryption techniques and algorithms&lt;br /&gt;
* Well-known access control techniques&lt;br /&gt;
* Mitigate the DoS attacks&lt;br /&gt;
* Intrusion detection algorithms&lt;br /&gt;
* Using firewalls&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Required textbook:''' William Stallings and Lawrie Brown, &amp;quot;Computer Security: Principles and Practice,“ 4th edition, Pearson, 2017.&lt;br /&gt;
* '''Required textbook:''' William Stallings, &amp;quot;Cryptography and Network Security: Principles and Practice,&amp;quot; 7th Edition, Pearson, 2017.&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Computer security technology and principles&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 23&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Software and system security &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 18&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Cryptographic algorithms&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 9&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Additional&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 14&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Computer security technology and principles ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Introduction to computer security&lt;br /&gt;
* User authentication and authorization&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Network security of data center&lt;br /&gt;
* Reverse engineering and malicious software&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What is meant by the CIA triad?&lt;br /&gt;
# What is the difference between data integrity and system integrity?&lt;br /&gt;
# How is cryptanalysis different from brute-force attack?&lt;br /&gt;
# List and briefly explain the different approaches to attacking a symmetric encryption scheme.&lt;br /&gt;
# In general terms, what are four means of authenticating a user’s identity?&lt;br /&gt;
# What is a Trojan horse attack?&lt;br /&gt;
# What is the difference between authentication and authorization?&lt;br /&gt;
# How does RBAC relate to DAC and MAC?&lt;br /&gt;
# Define the terms database, database management system, and query language.&lt;br /&gt;
# What is a relational database and what are its principal ingredients?&lt;br /&gt;
# What is an SQL injection attack? What are the implications of an SQL injection attack?&lt;br /&gt;
# List the categories for grouping different types of SQLi attacks.&lt;br /&gt;
# Why is RBAC considered fit for database access control?&lt;br /&gt;
# What are three broad mechanisms that malware can use to propagate?&lt;br /&gt;
# What is a blended attack?&lt;br /&gt;
# Define a denial-of-service (DoS) attack&lt;br /&gt;
# State the difference between a SYN flooding attack and a SYN spoofing attack.&lt;br /&gt;
# What is the goal of an HTTP flood attack?&lt;br /&gt;
# What is a poison packet attack? Give two examples of such an attack.&lt;br /&gt;
# How are intruders classified according to skill level?&lt;br /&gt;
# List and briefly describe the classifications of intrusion detection systems based on the source and the type of data analyzed.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Consider the given general code for allowing access to a resource: a) Explain the security flaw in this program, b) Rewrite the code to avoid the flaw&lt;br /&gt;
# Develop an attack tree for gaining access to the contents of a physical safe&lt;br /&gt;
# Typically, in practice, the length of the message is greater than the block size of the encryption algorithm. The simplest approach to handle such encryption is known as electronic codebook (ECB) mode. Explain this mode. Mention a scenario where it cannot be applied. Explain briefly why it is not a secure mode of encryption&lt;br /&gt;
# Consider a very simple symmetric block encryption algorithm, in which 64-bits blocks of plaintext are encrypted using a 128-bit key. Show the decryption equation.&lt;br /&gt;
# Explain the suitability or unsuitability of the given passwords&lt;br /&gt;
# Assume that Personal Identification Numbers (PINs) are formed by nine-digit combinations of numbers 0 to 9. Assume that an adversary is able to attempt three PINs per second.&lt;br /&gt;
## Assuming no feedback to the adversary until each attempt has been completed, what is the expected time to discover the correct PIN?&lt;br /&gt;
## Assuming feedback to the adversary flagging an error as each incorrect digit is entered, what is the expected time to discover the correct PIN?&lt;br /&gt;
# Assume an application requires access control policies based on the applicant’s age and the type of funding to be provided. Using an ABAC approach, write policy rules for each of the following scenarios:&lt;br /&gt;
## If the applicant’s age is more than 35, only “Research Grants (RG)” can be provided.&lt;br /&gt;
## If the applicant’s age is less than or equal to 35, both “RG and Travel Grants (TG)” can be provided.&lt;br /&gt;
# Assume a system with K subject attributes, M object attributes and Range () denotes the range of possible values that each attribute can take. What are the number of roles and permissions required for an RBAC model? What is the problem with this approach if additional attributes are added?&lt;br /&gt;
# Consider a simplified database for an organization that includes information of several departments (identity, name, manager, number of employees) and of managers and employees of the respective departments. Suggest a relational database for efficiently managing this information&lt;br /&gt;
# Users hulkhogan and undertaker do not have the SELECT access right to the Inventory table and the Item table. These tables were created by and are owned by user bruno-s. Write the SQL commands that would enable bruno-s to grant SELECT access to these tables to hulkhogan and undertaker.&lt;br /&gt;
# Consider the given fragment of code. What type of malware is this?&lt;br /&gt;
# Consider the given fragment embedded in a webpage. What type of malicious software is this?&lt;br /&gt;
# In order to implement a classic DoS flood attack, the attacker must generate a sufficiently large volume of packets to exceed the capacity of the link to the target organization. Consider an attack using ICMP echo request (ping) packets that are 100 bytes in size (ignoring framing overhead). How many of these packets per second must the attacker send to flood a target organization using a 8-Mbps link? How many per second if the packets are 1000 bytes in size? Or 1460 bytes?&lt;br /&gt;
# It is discussed that an amplification attack, which is a variant of reflection attack, can be launched by using any type of a suitable UDP service, such as the echo service. However, TCP services cannot be used in this attack. Why?&lt;br /&gt;
# Consider the first step of the common attack methodology we describe, which is to gather publicly available information on possible targets. What types of information could be used? What does this use suggest to you about the content and detail of such information? How does this correlate with the organization’s business and legal requirements? How do you reconcile these conflicting demands?&lt;br /&gt;
# As was mentioned in this chapter, the application gateway does not permit an end-toend TCP connection; rather, it sets up two TCP connections, one between itself and a TCP user on an inner host and one between itself and a TCP user on an outside host. The disadvantage of this approach is the additional processing overhead on each connection since the gateway must examine and forward all traffic in both directions. Describe at least one more limitation of this approach which is not discussed.&lt;br /&gt;
# Given table shows a sample of a packet filter firewall ruleset for an imaginary network of IP address that range from 192.168.1.0 to 192.168.1.254. Describe the effect of each rule.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Software and system security ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Buffer overflow and software security&lt;br /&gt;
* OS security&lt;br /&gt;
* Guest lecture from industry&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Define buffer overflow. &lt;br /&gt;
# Define an off-by-one attack.&lt;br /&gt;
# Define an injection attack. List some examples of injection attacks. What are the general circumstances in which injection attacks are found?&lt;br /&gt;
# State the similarities and differences between command injection and SQL injection attacks&lt;br /&gt;
# What are the basic steps needed in the process of securing a system?&lt;br /&gt;
# State different types of full virtualization with their security requirements.&lt;br /&gt;
# List five essential characteristics of cloud computing.&lt;br /&gt;
# List and briefly define three cloud service models.&lt;br /&gt;
# Briefly explain the most prominent deployment models for cloud computing.&lt;br /&gt;
# Describe some of the main cloud-specific security threats.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Investigate each of the unsafe standard C library functions shown in the figure using the UNIX man pages or any C programming text, and determine a safer alternative to use.&lt;br /&gt;
# Investigate the use of a replacement standard C string library, such as Libsafe, bstring, vstr, or other. Determine how significant the required code changes are, if any, to use the chosen library.&lt;br /&gt;
# Investigate the issues that arise while using sequence number as both identifier and authenticator of packets. Identify the root cause of the problem.&lt;br /&gt;
# Investigate the various types of cross-site scripting (XSS) attacks. How can such attacks be prevented? &lt;br /&gt;
# How can we use the TCP Wrappers and tcpd daemon to achieve secure remote control access? What if the network servers are heavily loaded?&lt;br /&gt;
# Why is it important to secure the boot process? Is it required to limit which media the system must boot from?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Cryptographic algorithms ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Symmetric encryption and message confidentiality&lt;br /&gt;
* Public key cryptography and message authentication&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are different types of cryptanalysis attacks?&lt;br /&gt;
# Why do some block cipher modes of operation only use encryption while others use both encryption and decryption?&lt;br /&gt;
# In the context of a hash function, what is a compression function?&lt;br /&gt;
# Briefly explain Diffie-Hellman key exchange.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why?&lt;br /&gt;
# Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption?&lt;br /&gt;
# Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&lt;br /&gt;
## Will this checksum detect all errors caused by an odd number of error bits? Explain.&lt;br /&gt;
## Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&lt;br /&gt;
## Comment on the effectiveness of this function for use as a hash function for authentication&lt;br /&gt;
# It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 4: Additional ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Compliances and documentation in computer security&lt;br /&gt;
* New technologies and research areas in cyber security&lt;br /&gt;
* Cybercrime and forensics, incident response&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are different types of cryptanalysis attacks?&lt;br /&gt;
# Why do some block cipher modes of operation only use encryption while others use both encryption and decryption?&lt;br /&gt;
# In the context of a hash function, what is a compression function?&lt;br /&gt;
# Briefly explain Diffie-Hellman key exchange.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why?&lt;br /&gt;
# Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption?&lt;br /&gt;
# Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&lt;br /&gt;
## Will this checksum detect all errors caused by an odd number of error bits? Explain.&lt;br /&gt;
## Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&lt;br /&gt;
## Comment on the effectiveness of this function for use as a hash function for authentication&lt;br /&gt;
# It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1901</id>
		<title>BSc: Fundamentals of Computer Security</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1901"/>
		<updated>2022-01-18T10:44:32Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Fundamentals of Information Security =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Fundamentals of Information Security&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* User authentication and authorization&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Reverse engineering and malicious software&lt;br /&gt;
* Buffer overflow and software security&lt;br /&gt;
* OS security&lt;br /&gt;
* Symmetric encryption&lt;br /&gt;
* Public-key cryptography&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
The purpose of this course is to teach the students the important aspects of cryptography, authentication, access control, DoS attacks, intrusion detection, etc. The students will learn major types of attacks and methods of protection from them.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Message and user authentication&lt;br /&gt;
* Encryption algorithms&lt;br /&gt;
* Authorization and access control mechanisms&lt;br /&gt;
* Different types of attacks&lt;br /&gt;
* Firewalls and intrusion detection methods&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* The importance of authentication and authentication protocols&lt;br /&gt;
* Encryption algorithms used for authentication and message integrity&lt;br /&gt;
* The importance of authorization and access control, different protocols&lt;br /&gt;
* Major types of attacks and methods of protection from them&lt;br /&gt;
* Importance of intrusion detection and firewalls &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Authentication protocols&lt;br /&gt;
* Encryption techniques and algorithms&lt;br /&gt;
* Well-known access control techniques&lt;br /&gt;
* Mitigate the DoS attacks&lt;br /&gt;
* Intrusion detection algorithms&lt;br /&gt;
* Using firewalls&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Stallings, William, and Lawrie Brown. &amp;quot;Computer Security: Principles and Practice, Global Edition.&amp;quot; (2017).&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Computer security technology and principles&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 23&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Software and system security &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 18&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Cryptographic algorithms&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 9&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Additional&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 14&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Computer security technology and principles ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Introduction to computer security&lt;br /&gt;
* User authentication and authorization&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Network security of data center&lt;br /&gt;
* Reverse engineering and malicious software&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What is meant by the CIA triad?&lt;br /&gt;
# What is the difference between data integrity and system integrity?&lt;br /&gt;
# How is cryptanalysis different from brute-force attack?&lt;br /&gt;
# List and briefly explain the different approaches to attacking a symmetric encryption scheme.&lt;br /&gt;
# In general terms, what are four means of authenticating a user’s identity?&lt;br /&gt;
# What is a Trojan horse attack?&lt;br /&gt;
# What is the difference between authentication and authorization?&lt;br /&gt;
# How does RBAC relate to DAC and MAC?&lt;br /&gt;
# Define the terms database, database management system, and query language.&lt;br /&gt;
# What is a relational database and what are its principal ingredients?&lt;br /&gt;
# What is an SQL injection attack? What are the implications of an SQL injection attack?&lt;br /&gt;
# List the categories for grouping different types of SQLi attacks.&lt;br /&gt;
# Why is RBAC considered fit for database access control?&lt;br /&gt;
# What are three broad mechanisms that malware can use to propagate?&lt;br /&gt;
# What is a blended attack?&lt;br /&gt;
# Define a denial-of-service (DoS) attack&lt;br /&gt;
# State the difference between a SYN flooding attack and a SYN spoofing attack.&lt;br /&gt;
# What is the goal of an HTTP flood attack?&lt;br /&gt;
# What is a poison packet attack? Give two examples of such an attack.&lt;br /&gt;
# How are intruders classified according to skill level?&lt;br /&gt;
# List and briefly describe the classifications of intrusion detection systems based on the source and the type of data analyzed.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Consider the given general code for allowing access to a resource: a) Explain the security flaw in this program, b) Rewrite the code to avoid the flaw&lt;br /&gt;
# Develop an attack tree for gaining access to the contents of a physical safe&lt;br /&gt;
# Typically, in practice, the length of the message is greater than the block size of the encryption algorithm. The simplest approach to handle such encryption is known as electronic codebook (ECB) mode. Explain this mode. Mention a scenario where it cannot be applied. Explain briefly why it is not a secure mode of encryption&lt;br /&gt;
# Consider a very simple symmetric block encryption algorithm, in which 64-bits blocks of plaintext are encrypted using a 128-bit key. Show the decryption equation.&lt;br /&gt;
# Explain the suitability or unsuitability of the given passwords&lt;br /&gt;
# Assume that Personal Identification Numbers (PINs) are formed by nine-digit combinations of numbers 0 to 9. Assume that an adversary is able to attempt three PINs per second.&lt;br /&gt;
## Assuming no feedback to the adversary until each attempt has been completed, what is the expected time to discover the correct PIN?&lt;br /&gt;
## Assuming feedback to the adversary flagging an error as each incorrect digit is entered, what is the expected time to discover the correct PIN?&lt;br /&gt;
# Assume an application requires access control policies based on the applicant’s age and the type of funding to be provided. Using an ABAC approach, write policy rules for each of the following scenarios:&lt;br /&gt;
## If the applicant’s age is more than 35, only “Research Grants (RG)” can be provided.&lt;br /&gt;
## If the applicant’s age is less than or equal to 35, both “RG and Travel Grants (TG)” can be provided.&lt;br /&gt;
# Assume a system with K subject attributes, M object attributes and Range () denotes the range of possible values that each attribute can take. What are the number of roles and permissions required for an RBAC model? What is the problem with this approach if additional attributes are added?&lt;br /&gt;
# Consider a simplified database for an organization that includes information of several departments (identity, name, manager, number of employees) and of managers and employees of the respective departments. Suggest a relational database for efficiently managing this information&lt;br /&gt;
# Users hulkhogan and undertaker do not have the SELECT access right to the Inventory table and the Item table. These tables were created by and are owned by user bruno-s. Write the SQL commands that would enable bruno-s to grant SELECT access to these tables to hulkhogan and undertaker.&lt;br /&gt;
# Consider the given fragment of code. What type of malware is this?&lt;br /&gt;
# Consider the given fragment embedded in a webpage. What type of malicious software is this?&lt;br /&gt;
# In order to implement a classic DoS flood attack, the attacker must generate a sufficiently large volume of packets to exceed the capacity of the link to the target organization. Consider an attack using ICMP echo request (ping) packets that are 100 bytes in size (ignoring framing overhead). How many of these packets per second must the attacker send to flood a target organization using a 8-Mbps link? How many per second if the packets are 1000 bytes in size? Or 1460 bytes?&lt;br /&gt;
# It is discussed that an amplification attack, which is a variant of reflection attack, can be launched by using any type of a suitable UDP service, such as the echo service. However, TCP services cannot be used in this attack. Why?&lt;br /&gt;
# Consider the first step of the common attack methodology we describe, which is to gather publicly available information on possible targets. What types of information could be used? What does this use suggest to you about the content and detail of such information? How does this correlate with the organization’s business and legal requirements? How do you reconcile these conflicting demands?&lt;br /&gt;
# As was mentioned in this chapter, the application gateway does not permit an end-toend TCP connection; rather, it sets up two TCP connections, one between itself and a TCP user on an inner host and one between itself and a TCP user on an outside host. The disadvantage of this approach is the additional processing overhead on each connection since the gateway must examine and forward all traffic in both directions. Describe at least one more limitation of this approach which is not discussed.&lt;br /&gt;
# Given table shows a sample of a packet filter firewall ruleset for an imaginary network of IP address that range from 192.168.1.0 to 192.168.1.254. Describe the effect of each rule.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Software and system security ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Buffer overflow and software security&lt;br /&gt;
* OS security&lt;br /&gt;
* Guest lecture from industry&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Define buffer overflow. &lt;br /&gt;
# Define an off-by-one attack.&lt;br /&gt;
# Define an injection attack. List some examples of injection attacks. What are the general circumstances in which injection attacks are found?&lt;br /&gt;
# State the similarities and differences between command injection and SQL injection attacks&lt;br /&gt;
# What are the basic steps needed in the process of securing a system?&lt;br /&gt;
# State different types of full virtualization with their security requirements.&lt;br /&gt;
# List five essential characteristics of cloud computing.&lt;br /&gt;
# List and briefly define three cloud service models.&lt;br /&gt;
# Briefly explain the most prominent deployment models for cloud computing.&lt;br /&gt;
# Describe some of the main cloud-specific security threats.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Investigate each of the unsafe standard C library functions shown in the figure using the UNIX man pages or any C programming text, and determine a safer alternative to use.&lt;br /&gt;
# Investigate the use of a replacement standard C string library, such as Libsafe, bstring, vstr, or other. Determine how significant the required code changes are, if any, to use the chosen library.&lt;br /&gt;
# Investigate the issues that arise while using sequence number as both identifier and authenticator of packets. Identify the root cause of the problem.&lt;br /&gt;
# Investigate the various types of cross-site scripting (XSS) attacks. How can such attacks be prevented? &lt;br /&gt;
# How can we use the TCP Wrappers and tcpd daemon to achieve secure remote control access? What if the network servers are heavily loaded?&lt;br /&gt;
# Why is it important to secure the boot process? Is it required to limit which media the system must boot from?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Cryptographic algorithms ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Symmetric encryption and message confidentiality&lt;br /&gt;
* Public key cryptography and message authentication&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are different types of cryptanalysis attacks?&lt;br /&gt;
# Why do some block cipher modes of operation only use encryption while others use both encryption and decryption?&lt;br /&gt;
# In the context of a hash function, what is a compression function?&lt;br /&gt;
# Briefly explain Diffie-Hellman key exchange.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why?&lt;br /&gt;
# Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption?&lt;br /&gt;
# Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&lt;br /&gt;
## Will this checksum detect all errors caused by an odd number of error bits? Explain.&lt;br /&gt;
## Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&lt;br /&gt;
## Comment on the effectiveness of this function for use as a hash function for authentication&lt;br /&gt;
# It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 4: Additional ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Compliances and documentation in computer security&lt;br /&gt;
* New technologies and research areas in cyber security&lt;br /&gt;
* Cybercrime and forensics, incident response&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are different types of cryptanalysis attacks?&lt;br /&gt;
# Why do some block cipher modes of operation only use encryption while others use both encryption and decryption?&lt;br /&gt;
# In the context of a hash function, what is a compression function?&lt;br /&gt;
# Briefly explain Diffie-Hellman key exchange.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why?&lt;br /&gt;
# Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption?&lt;br /&gt;
# Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&lt;br /&gt;
## Will this checksum detect all errors caused by an odd number of error bits? Explain.&lt;br /&gt;
## Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&lt;br /&gt;
## Comment on the effectiveness of this function for use as a hash function for authentication&lt;br /&gt;
# It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:Syllabi_Table&amp;diff=1900</id>
		<title>BSc:Syllabi Table</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:Syllabi_Table&amp;diff=1900"/>
		<updated>2022-01-18T10:43:41Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview of the BS Program =&lt;br /&gt;
&lt;br /&gt;
[https://eduwiki.innopolis.university/index.php/BSc:Syllabi_Index The detailed description of the program can be found here.]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 1, Fall Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Date of the Exam&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToProgrammingI Introduction To Programming I] [https://moodle.innopolis.university/course/view.php?id=800 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/EvgeniiZouev Evgenii Zouev]&lt;br /&gt;
| 07.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:ComputerArchitecture Computer Architecture] [https://moodle.innopolis.university/course/view.php?id=786 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AlexanderTormasov Alexander Tormasov]&lt;br /&gt;
| 09.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:MathematicalAnalysisI Mathematical Analysis I] [https://moodle.innopolis.university/course/view.php?id=801 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/SergeyGorodetsky Sergey Gorodetsky]&lt;br /&gt;
| 13.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AnalyticGeometryAndLinearAlgebraI_new Analytic Geometry And Linear Algebra I] [https://moodle.innopolis.university/course/view.php?id=787 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/VladimirIvanov Vladimir Ivanov]&amp;lt;br /&amp;gt;[https://eduwiki.innopolis.university/index.php/MohammedrezaBahrami Mohammedreza Bahrami] &lt;br /&gt;
| 10.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PhilosophyI_Fall_2020 Philosophy I]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AndreyFrolov Andrey Frolov]&amp;lt;br /&amp;gt;[https://eduwiki.innopolis.university/index.php/MirkoFarina Mirko Farina]&lt;br /&gt;
| 15.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:EnglishForAcademicPurposesI English For Academic Purposes I] [https://moodle.innopolis.university/course/view.php?id=866 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
|  [https://eduwiki.innopolis.university/index.php/GeorgyGelvanovsky Georgy Gelvanovsky] &amp;lt;br /&amp;gt; [https://eduwiki.innopolis.university/index.php/RuslanSaduov Ruslan Saduov ] &amp;lt;br /&amp;gt; [https://eduwiki.innopolis.university/index.php/RababMarouf Rabab Marouf] &amp;lt;br /&amp;gt; [https://eduwiki.innopolis.university/index.php/GuzelFazlyeva Guzel Fazlyeva] &amp;lt;br /&amp;gt; [https://eduwiki.innopolis.university/index.php/EvgeniyaKruglova Evgeniya Kruglova]&lt;br /&gt;
| 08.12.2021&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 1, Spring Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SoftwareSystemsDesign Software System Analysis and Design] [https://moodle.innopolis.university/course/view.php?id=664 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/EvgeniiZouev Evgenii Zouev]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:DataStructuresAlgorithmsI Data Structures Algorithms I] [https://moodle.innopolis.university/course/view.php?id=671 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AdilKhan Adil Khan]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:MathematicalAnalysisII Mathematical Analysis II] [https://moodle.innopolis.university/course/view.php?id=666 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/SergeyGorodetsky Sergey Gorodetsky]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AnalyticGeometryAndLinearAlgebraII Analytic Geometry And Linear Algebra II] [https://moodle.innopolis.university/course/view.php?id=668 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/YaroslavKholodov Yaroslav Kholodov]&amp;lt;br /&amp;gt;&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TheoreticalComputerScience Theoretical Computer Science] [https://moodle.innopolis.university/course/view.php?id=670 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/ManuelMazzara Manuel Mazzara]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:EnglishForAcademicPurposesII English For Academic Purposes II] [https://moodle.innopolis.university/course/view.php?id=710 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left;&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 2, Fall Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Date of the Exam&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:ProbabilityAndStatistics Probability And Statistics] [https://moodle.innopolis.university/course/view.php?id=789 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/SergeyGorodetsky Sergey Gorodetsky]&lt;br /&gt;
| 14.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PhysicsI Physics I] [https://moodle.innopolis.university/course/view.php?id=790 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/IgorGaponov Igor Gaponov]&lt;br /&gt;
| 13.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SoftwareSystemsDesign Software Systems Design]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/EvgeniiZouev Evgenii Zouev]&lt;br /&gt;
| 10.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:OperatingSystems Operating Systems] [https://moodle.innopolis.university/course/view.php?id=791 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/GiancarloSucci Giancarlo Succi]&lt;br /&gt;
| 08.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:DifferentialEquations_new Differential Equations] [https://moodle.innopolis.university/course/view.php?id=792 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/NikolayShilov Nikolay Shilov]&lt;br /&gt;
| 07.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:History History] [https://moodle.innopolis.university/course/view.php?id=869 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
|&lt;br /&gt;
| 22.12.2021 &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 2, Spring Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PhysicsII Physics II] [https://moodle.innopolis.university/course/view.php?id=672 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/IgorGaponov Igor Gaponov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:Networks Networks] [https://moodle.innopolis.university/course/view.php?id=673 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/RasheedHussain Rasheed Hussain]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:ControlTheory Control Theory] [https://moodle.innopolis.university/course/view.php?id=674 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/SergeySavin Sergei Savin], [https://eduwiki.innopolis.university/index.php/AlexandrMaloletov Alexandr Maloletov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToArtificialIntelligence Introduction To Artificial Intelligence] [https://moodle.innopolis.university/course/view.php?id=675 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/JosephBrown Joseph Brown]&amp;lt;br /&amp;gt;&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AdvancedDatabases Advanced Databases] [https://moodle.innopolis.university/course/view.php?id=676 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/LuizAraujo Luiz Araujo]&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 3, Fall Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Date of the Exam&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SoftwareSystemsDesign Software Systems Design] [https://moodle.innopolis.university/course/view.php?id=802 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/EvgeniiZouev Evgenii Zouev]&lt;br /&gt;
| 11.10.2021	&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToMachineLearning Introduction To Machine Learning] [https://moodle.innopolis.university/course/view.php?id=803 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AdilKhan Adil Khan]&lt;br /&gt;
| 26.11.2021 &amp;lt;br /&amp;gt; - deadline for submission&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PhilosophyII_Fall_2020 Philosophy II] [https://moodle.innopolis.university/course/view.php?id=795 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/MirkoFarina Mirko Farina]&lt;br /&gt;
| 07.12.2021 &amp;lt;br /&amp;gt; 08.12.2021 &amp;lt;br /&amp;gt; 09.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:Mechatronics Mechatronics] [https://moodle.innopolis.university/course/view.php?id=809 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/IgorGaponov Igor Gaponov]&lt;br /&gt;
| 10.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:ProgrammingParadigms Programming Paradigms] [https://moodle.innopolis.university/course/view.php?id=810 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/NikolayKudasov Nikolay Kudasov]&lt;br /&gt;
| 10.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToBigData Introduction To Big Data] [https://moodle.innopolis.university/course/view.php?id=807 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/LuizAraujo Luiz Araujo]&lt;br /&gt;
| 13.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToRobotics Introduction To Robotics] [https://moodle.innopolis.university/course/view.php?id=808 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AlexanderKlimchik Alexander Klimchik]&lt;br /&gt;
| 15.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SystemAndNetworkAdministration System And Network Administration] [https://moodle.innopolis.university/course/view.php?id=806 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AhsanKazmi Ahsan Kazmi]&lt;br /&gt;
| 15.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TheoreticalMechanics Theoretical Mechanics] [https://moodle.innopolis.university/course/view.php?id=805 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AlexandrMaloletov Alexandr Maloletov] &amp;lt;br /&amp;gt; [https://eduwiki.innopolis.university/index.php/OlegBulichev Oleg Bulichev]&lt;br /&gt;
| 08.10.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:DistributedAndNetworkProgramming Distributed And Network Programming] [https://moodle.innopolis.university/course/view.php?id=804 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/ShinnazarSeytnazarov Shinnazar Seytnazarov]&lt;br /&gt;
| 12.10.2021&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 3, Spring Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SignalsAndSystems Signals and Systems]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/NikolayShilov Nikolay Shilov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:CompilersConstruction Compilers Construction] [https://moodle.innopolis.university/course/view.php?id=515 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/EvgeniiZouev Evgenii Zouev]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:FundamentalsofComputerSecurity Fundamentals of Information Security]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/ShinnazarSeytnazarov Shinnazar Seytnazarov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:GameTheory Game Theory] [https://moodle.innopolis.university/course/view.php?id=677 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/JosephBrown Joseph Brown]&amp;lt;br /&amp;gt;&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:RoboticSystems Robotic Systems] [https://moodle.innopolis.university/course/view.php?id=714 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/IgorGaponov Igor Gaponov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AdvancedCompilerConstructionAndProgramAnalysis Advanced Compiler Construction And Program Analysis]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/NikolayKudasov Nikolay Kudasov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:InformationRetrieval Information Retrieval] [https://moodle.innopolis.university/course/view.php?id=683 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/StanislavProtasov Stanislav Protasov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:MechanicsAndMachines Mechanics And Machines] [https://moodle.innopolis.university/course/view.php?id=680 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AlexandrMaloletov Alexandr Maloletov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:DataMining Data Mining] [https://moodle.innopolis.university/course/view.php?id=678 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/LuizAraujo Luiz Araujo]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:LeanSoftwareDevelopment Lean Software Development] [https://moodle.innopolis.university/course/view.php?id=681 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/GiancarloSucci Giancarlo Succi]&amp;lt;br /&amp;gt;&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:NaturalLanguageProcessing Natural Language Processing]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/VladimirIvanov Vladimir Ivanov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:NetworkAndCyberSecurity Network And Cyber Security] [https://moodle.innopolis.university/course/view.php?id=679 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/KirillSaltanov Kirill Saltanov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SensorsAndSensing Sensors And Sensing] [https://moodle.innopolis.university/course/view.php?id=684 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/KirillPoletkin Kirill Poletkin]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TechnicalElective Technical Elective 1]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TechnicalElective Technical Elective 2]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 4, Fall Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Date of the Exam&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AcademicResearchandWritingCulture Academic Research and Writing Culture 1] [https://moodle.innopolis.university/course/view.php?id=867 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/GeorgyGelvanovsky Georgy Gelvanovsky] &amp;lt;br /&amp;gt; [https://eduwiki.innopolis.university/index.php/RuslanSaduov Ruslan Saduov ] &amp;lt;br /&amp;gt; [https://eduwiki.innopolis.university/index.php/RababMarouf Rabab Marouf] &amp;lt;br /&amp;gt; [https://eduwiki.innopolis.university/index.php/GuzelFazlyeva Guzel Fazlyeva] &amp;lt;br /&amp;gt; [https://eduwiki.innopolis.university/index.php/OksanaZhirosh Oksana Zhirosh]&lt;br /&gt;
| 08.12.2021 &amp;lt;br /&amp;gt; - deadline for submission &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToComputerVision Introduction To Computer Vision] [https://moodle.innopolis.university/course/view.php?id=812 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/ImadBekkouch Imad Bekkouch]&lt;br /&gt;
| 09.10.2021		 &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:DevOpsEngineering DevOps Engineering] [https://moodle.innopolis.university/course/view.php?id=813 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/PaoloCiancarini Paolo Ciancarini]&lt;br /&gt;
| 07.10.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PracticumProjects Practicum Project 1]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PracticumProjects Practicum Project 2]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PracticalMachineLearningDeepLearning Practical Machine Learning And Deep Learning] [https://moodle.innopolis.university/course/view.php?id=811 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/VladimirIvanov Vladimir Ivanov]&lt;br /&gt;
| 16.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SecureSystemDevelopment Secure System Development]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:ProgrammingParadigms Programming Paradigms]  [https://moodle.innopolis.university/course/view.php?id=814 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
|&lt;br /&gt;
| 10.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TechnicalElective Technical Elective 3]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TechnicalElective Technical Elective 4]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 4, Spring Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:HumanAIInteractionDesign Human-AI Interaction Design]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:StatisticalTechniquesForDataScience Statistical Techniques For Data Science] [https://moodle.innopolis.university/course/view.php?id=692 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/VladimirIvanov Vladimir Ivanov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SoftwareQualityandReliability Software Quality And Reliability] [https://moodle.innopolis.university/course/view.php?id=688 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AndreySadovykh Andrey Sadovykh]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AcademicResearchAndWritingCulture Academic Research and Writing Culture 2] [https://moodle.innopolis.university/course/view.php?id=712 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PracticumProjects Practicum Project 3]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
|  &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Thesis - Final&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:History History] [https://moodle.innopolis.university/course/view.php?id=869 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:HumanitiesElectives Humanities Elective 2]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1856</id>
		<title>BSc: Fundamentals of Computer Security</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1856"/>
		<updated>2022-01-12T20:38:14Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Fundamentals of Computer Security =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Fundamentals of Computer Security&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* User authentication and authorization&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Reverse engineering and malicious software&lt;br /&gt;
* Buffer overflow and software security&lt;br /&gt;
* OS security&lt;br /&gt;
* Symmetric encryption&lt;br /&gt;
* Public-key cryptography&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
The purpose of this course is to teach the students the important aspects of cryptography, authentication, access control, DoS attacks, intrusion detection, etc. The students will learn major types of attacks and methods of protection from them.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Message and user authentication&lt;br /&gt;
* Encryption algorithms&lt;br /&gt;
* Authorization and access control mechanisms&lt;br /&gt;
* Different types of attacks&lt;br /&gt;
* Firewalls and intrusion detection methods&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* The importance of authentication and authentication protocols&lt;br /&gt;
* Encryption algorithms used for authentication and message integrity&lt;br /&gt;
* The importance of authorization and access control, different protocols&lt;br /&gt;
* Major types of attacks and methods of protection from them&lt;br /&gt;
* Importance of intrusion detection and firewalls &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Authentication protocols&lt;br /&gt;
* Encryption techniques and algorithms&lt;br /&gt;
* Well-known access control techniques&lt;br /&gt;
* Mitigate the DoS attacks&lt;br /&gt;
* Intrusion detection algorithms&lt;br /&gt;
* Using firewalls&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Stallings, William, and Lawrie Brown. &amp;quot;Computer Security: Principles and Practice, Global Edition.&amp;quot; (2017).&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Computer security technology and principles&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 23&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Software and system security &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 18&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Cryptographic algorithms&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 9&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Additional&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 14&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Computer security technology and principles ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Introduction to computer security&lt;br /&gt;
* User authentication and authorization&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Network security of data center&lt;br /&gt;
* Reverse engineering and malicious software&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What is meant by the CIA triad?&lt;br /&gt;
# What is the difference between data integrity and system integrity?&lt;br /&gt;
# How is cryptanalysis different from brute-force attack?&lt;br /&gt;
# List and briefly explain the different approaches to attacking a symmetric encryption scheme.&lt;br /&gt;
# In general terms, what are four means of authenticating a user’s identity?&lt;br /&gt;
# What is a Trojan horse attack?&lt;br /&gt;
# What is the difference between authentication and authorization?&lt;br /&gt;
# How does RBAC relate to DAC and MAC?&lt;br /&gt;
# Define the terms database, database management system, and query language.&lt;br /&gt;
# What is a relational database and what are its principal ingredients?&lt;br /&gt;
# What is an SQL injection attack? What are the implications of an SQL injection attack?&lt;br /&gt;
# List the categories for grouping different types of SQLi attacks.&lt;br /&gt;
# Why is RBAC considered fit for database access control?&lt;br /&gt;
# What are three broad mechanisms that malware can use to propagate?&lt;br /&gt;
# What is a blended attack?&lt;br /&gt;
# Define a denial-of-service (DoS) attack&lt;br /&gt;
# State the difference between a SYN flooding attack and a SYN spoofing attack.&lt;br /&gt;
# What is the goal of an HTTP flood attack?&lt;br /&gt;
# What is a poison packet attack? Give two examples of such an attack.&lt;br /&gt;
# How are intruders classified according to skill level?&lt;br /&gt;
# List and briefly describe the classifications of intrusion detection systems based on the source and the type of data analyzed.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Consider the given general code for allowing access to a resource: a) Explain the security flaw in this program, b) Rewrite the code to avoid the flaw&lt;br /&gt;
# Develop an attack tree for gaining access to the contents of a physical safe&lt;br /&gt;
# Typically, in practice, the length of the message is greater than the block size of the encryption algorithm. The simplest approach to handle such encryption is known as electronic codebook (ECB) mode. Explain this mode. Mention a scenario where it cannot be applied. Explain briefly why it is not a secure mode of encryption&lt;br /&gt;
# Consider a very simple symmetric block encryption algorithm, in which 64-bits blocks of plaintext are encrypted using a 128-bit key. Show the decryption equation.&lt;br /&gt;
# Explain the suitability or unsuitability of the given passwords&lt;br /&gt;
# Assume that Personal Identification Numbers (PINs) are formed by nine-digit combinations of numbers 0 to 9. Assume that an adversary is able to attempt three PINs per second.&lt;br /&gt;
## Assuming no feedback to the adversary until each attempt has been completed, what is the expected time to discover the correct PIN?&lt;br /&gt;
## Assuming feedback to the adversary flagging an error as each incorrect digit is entered, what is the expected time to discover the correct PIN?&lt;br /&gt;
# Assume an application requires access control policies based on the applicant’s age and the type of funding to be provided. Using an ABAC approach, write policy rules for each of the following scenarios:&lt;br /&gt;
## If the applicant’s age is more than 35, only “Research Grants (RG)” can be provided.&lt;br /&gt;
## If the applicant’s age is less than or equal to 35, both “RG and Travel Grants (TG)” can be provided.&lt;br /&gt;
# Assume a system with K subject attributes, M object attributes and Range () denotes the range of possible values that each attribute can take. What are the number of roles and permissions required for an RBAC model? What is the problem with this approach if additional attributes are added?&lt;br /&gt;
# Consider a simplified database for an organization that includes information of several departments (identity, name, manager, number of employees) and of managers and employees of the respective departments. Suggest a relational database for efficiently managing this information&lt;br /&gt;
# Users hulkhogan and undertaker do not have the SELECT access right to the Inventory table and the Item table. These tables were created by and are owned by user bruno-s. Write the SQL commands that would enable bruno-s to grant SELECT access to these tables to hulkhogan and undertaker.&lt;br /&gt;
# Consider the given fragment of code. What type of malware is this?&lt;br /&gt;
# Consider the given fragment embedded in a webpage. What type of malicious software is this?&lt;br /&gt;
# In order to implement a classic DoS flood attack, the attacker must generate a sufficiently large volume of packets to exceed the capacity of the link to the target organization. Consider an attack using ICMP echo request (ping) packets that are 100 bytes in size (ignoring framing overhead). How many of these packets per second must the attacker send to flood a target organization using a 8-Mbps link? How many per second if the packets are 1000 bytes in size? Or 1460 bytes?&lt;br /&gt;
# It is discussed that an amplification attack, which is a variant of reflection attack, can be launched by using any type of a suitable UDP service, such as the echo service. However, TCP services cannot be used in this attack. Why?&lt;br /&gt;
# Consider the first step of the common attack methodology we describe, which is to gather publicly available information on possible targets. What types of information could be used? What does this use suggest to you about the content and detail of such information? How does this correlate with the organization’s business and legal requirements? How do you reconcile these conflicting demands?&lt;br /&gt;
# As was mentioned in this chapter, the application gateway does not permit an end-toend TCP connection; rather, it sets up two TCP connections, one between itself and a TCP user on an inner host and one between itself and a TCP user on an outside host. The disadvantage of this approach is the additional processing overhead on each connection since the gateway must examine and forward all traffic in both directions. Describe at least one more limitation of this approach which is not discussed.&lt;br /&gt;
# Given table shows a sample of a packet filter firewall ruleset for an imaginary network of IP address that range from 192.168.1.0 to 192.168.1.254. Describe the effect of each rule.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Software and system security ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Buffer overflow and software security&lt;br /&gt;
* OS security&lt;br /&gt;
* Guest lecture from industry&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Define buffer overflow. &lt;br /&gt;
# Define an off-by-one attack.&lt;br /&gt;
# Define an injection attack. List some examples of injection attacks. What are the general circumstances in which injection attacks are found?&lt;br /&gt;
# State the similarities and differences between command injection and SQL injection attacks&lt;br /&gt;
# What are the basic steps needed in the process of securing a system?&lt;br /&gt;
# State different types of full virtualization with their security requirements.&lt;br /&gt;
# List five essential characteristics of cloud computing.&lt;br /&gt;
# List and briefly define three cloud service models.&lt;br /&gt;
# Briefly explain the most prominent deployment models for cloud computing.&lt;br /&gt;
# Describe some of the main cloud-specific security threats.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Investigate each of the unsafe standard C library functions shown in the figure using the UNIX man pages or any C programming text, and determine a safer alternative to use.&lt;br /&gt;
# Investigate the use of a replacement standard C string library, such as Libsafe, bstring, vstr, or other. Determine how significant the required code changes are, if any, to use the chosen library.&lt;br /&gt;
# Investigate the issues that arise while using sequence number as both identifier and authenticator of packets. Identify the root cause of the problem.&lt;br /&gt;
# Investigate the various types of cross-site scripting (XSS) attacks. How can such attacks be prevented? &lt;br /&gt;
# How can we use the TCP Wrappers and tcpd daemon to achieve secure remote control access? What if the network servers are heavily loaded?&lt;br /&gt;
# Why is it important to secure the boot process? Is it required to limit which media the system must boot from?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Cryptographic algorithms ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Symmetric encryption and message confidentiality&lt;br /&gt;
* Public key cryptography and message authentication&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are different types of cryptanalysis attacks?&lt;br /&gt;
# Why do some block cipher modes of operation only use encryption while others use both encryption and decryption?&lt;br /&gt;
# In the context of a hash function, what is a compression function?&lt;br /&gt;
# Briefly explain Diffie-Hellman key exchange.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why?&lt;br /&gt;
# Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption?&lt;br /&gt;
# Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&lt;br /&gt;
## Will this checksum detect all errors caused by an odd number of error bits? Explain.&lt;br /&gt;
## Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&lt;br /&gt;
## Comment on the effectiveness of this function for use as a hash function for authentication&lt;br /&gt;
# It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 4: Additional ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Compliances and documentation in computer security&lt;br /&gt;
* New technologies and research areas in cyber security&lt;br /&gt;
* Cybercrime and forensics, incident response&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are different types of cryptanalysis attacks?&lt;br /&gt;
# Why do some block cipher modes of operation only use encryption while others use both encryption and decryption?&lt;br /&gt;
# In the context of a hash function, what is a compression function?&lt;br /&gt;
# Briefly explain Diffie-Hellman key exchange.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why?&lt;br /&gt;
# Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption?&lt;br /&gt;
# Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&lt;br /&gt;
## Will this checksum detect all errors caused by an odd number of error bits? Explain.&lt;br /&gt;
## Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&lt;br /&gt;
## Comment on the effectiveness of this function for use as a hash function for authentication&lt;br /&gt;
# It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1855</id>
		<title>BSc: Fundamentals of Computer Security</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1855"/>
		<updated>2022-01-12T20:12:12Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Course Sections */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Fundamentals of Computer Security =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Fundamentals of Computer Security&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* User authentication and authorization&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Reverse engineering and malicious software&lt;br /&gt;
* Buffer overflow and software security&lt;br /&gt;
* OS security&lt;br /&gt;
* Symmetric encryption&lt;br /&gt;
* Public-key cryptography&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
The purpose of this course is to teach the students the important aspects of cryptography, authentication, access control, DoS attacks, intrusion detection, etc. The students will learn major types of attacks and methods of protection from them.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Message and user authentication&lt;br /&gt;
* Encryption algorithms&lt;br /&gt;
* Authorization and access control mechanisms&lt;br /&gt;
* Different types of attacks&lt;br /&gt;
* Firewalls and intrusion detection methods&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* The importance of authentication and authentication protocols&lt;br /&gt;
* Encryption algorithms used for authentication and message integrity&lt;br /&gt;
* The importance of authorization and access control, different protocols&lt;br /&gt;
* Major types of attacks and methods of protection from them&lt;br /&gt;
* Importance of intrusion detection and firewalls &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Authentication protocols&lt;br /&gt;
* Encryption techniques and algorithms&lt;br /&gt;
* Well-known access control techniques&lt;br /&gt;
* Mitigate the DoS attacks&lt;br /&gt;
* Intrusion detection algorithms&lt;br /&gt;
* Using firewalls&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Stallings, William, and Lawrie Brown. &amp;quot;Computer Security: Principles and Practice, Global Edition.&amp;quot; (2017).&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Computer security technology and principles&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 23&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Software and system security &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 18&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Cryptographic algorithms&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 9&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Additional&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 14&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Computer security technology and principles ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Introduction to computer security&lt;br /&gt;
* User authentication and authorization&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Network security of data center&lt;br /&gt;
* Reverse engineering and malicious software&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What is meant by the CIA triad?&lt;br /&gt;
# What is the difference between data integrity and system integrity?&lt;br /&gt;
# How is cryptanalysis different from brute-force attack?&lt;br /&gt;
# List and briefly explain the different approaches to attacking a symmetric encryption scheme.&lt;br /&gt;
# In general terms, what are four means of authenticating a user’s identity?&lt;br /&gt;
# What is a Trojan horse attack?&lt;br /&gt;
# What is the difference between authentication and authorization?&lt;br /&gt;
# How does RBAC relate to DAC and MAC?&lt;br /&gt;
# Define the terms database, database management system, and query language.&lt;br /&gt;
# What is a relational database and what are its principal ingredients?&lt;br /&gt;
# What is an SQL injection attack? What are the implications of an SQL injection attack?&lt;br /&gt;
# List the categories for grouping different types of SQLi attacks.&lt;br /&gt;
# Why is RBAC considered fit for database access control?&lt;br /&gt;
# What are three broad mechanisms that malware can use to propagate?&lt;br /&gt;
# What is a blended attack?&lt;br /&gt;
# Define a denial-of-service (DoS) attack&lt;br /&gt;
# State the difference between a SYN flooding attack and a SYN spoofing attack.&lt;br /&gt;
# What is the goal of an HTTP flood attack?&lt;br /&gt;
# What is a poison packet attack? Give two examples of such an attack.&lt;br /&gt;
# How are intruders classified according to skill level?&lt;br /&gt;
# List and briefly describe the classifications of intrusion detection systems based on the source and the type of data analyzed.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Consider the given general code for allowing access to a resource: a) Explain the security flaw in this program, b) Rewrite the code to avoid the flaw&lt;br /&gt;
# Develop an attack tree for gaining access to the contents of a physical safe&lt;br /&gt;
# Typically, in practice, the length of the message is greater than the block size of the encryption algorithm. The simplest approach to handle such encryption is known as electronic codebook (ECB) mode. Explain this mode. Mention a scenario where it cannot be applied. Explain briefly why it is not a secure mode of encryption&lt;br /&gt;
# Consider a very simple symmetric block encryption algorithm, in which 64-bits blocks of plaintext are encrypted using a 128-bit key. Show the decryption equation.&lt;br /&gt;
# Explain the suitability or unsuitability of the given passwords&lt;br /&gt;
# Assume that Personal Identification Numbers (PINs) are formed by nine-digit combinations of numbers 0 to 9. Assume that an adversary is able to attempt three PINs per second.&lt;br /&gt;
## Assuming no feedback to the adversary until each attempt has been completed, what is the expected time to discover the correct PIN?&lt;br /&gt;
## Assuming feedback to the adversary flagging an error as each incorrect digit is entered, what is the expected time to discover the correct PIN?&lt;br /&gt;
# Assume an application requires access control policies based on the applicant’s age and the type of funding to be provided. Using an ABAC approach, write policy rules for each of the following scenarios:&lt;br /&gt;
## If the applicant’s age is more than 35, only “Research Grants (RG)” can be provided.&lt;br /&gt;
## If the applicant’s age is less than or equal to 35, both “RG and Travel Grants (TG)” can be provided.&lt;br /&gt;
# Assume a system with K subject attributes, M object attributes and Range () denotes the range of possible values that each attribute can take. What are the number of roles and permissions required for an RBAC model? What is the problem with this approach if additional attributes are added?&lt;br /&gt;
# Consider a simplified database for an organization that includes information of several departments (identity, name, manager, number of employees) and of managers and employees of the respective departments. Suggest a relational database for efficiently managing this information&lt;br /&gt;
# Users hulkhogan and undertaker do not have the SELECT access right to the Inventory table and the Item table. These tables were created by and are owned by user bruno-s. Write the SQL commands that would enable bruno-s to grant SELECT access to these tables to hulkhogan and undertaker.&lt;br /&gt;
# Consider the given fragment of code. What type of malware is this?&lt;br /&gt;
# Consider the given fragment embedded in a webpage. What type of malicious software is this?&lt;br /&gt;
# In order to implement a classic DoS flood attack, the attacker must generate a sufficiently large volume of packets to exceed the capacity of the link to the target organization. Consider an attack using ICMP echo request (ping) packets that are 100 bytes in size (ignoring framing overhead). How many of these packets per second must the attacker send to flood a target organization using a 8-Mbps link? How many per second if the packets are 1000 bytes in size? Or 1460 bytes?&lt;br /&gt;
# It is discussed that an amplification attack, which is a variant of reflection attack, can be launched by using any type of a suitable UDP service, such as the echo service. However, TCP services cannot be used in this attack. Why?&lt;br /&gt;
# Consider the first step of the common attack methodology we describe, which is to gather publicly available information on possible targets. What types of information could be used? What does this use suggest to you about the content and detail of such information? How does this correlate with the organization’s business and legal requirements? How do you reconcile these conflicting demands?&lt;br /&gt;
# As was mentioned in this chapter, the application gateway does not permit an end-toend TCP connection; rather, it sets up two TCP connections, one between itself and a TCP user on an inner host and one between itself and a TCP user on an outside host. The disadvantage of this approach is the additional processing overhead on each connection since the gateway must examine and forward all traffic in both directions. Describe at least one more limitation of this approach which is not discussed.&lt;br /&gt;
# Given table shows a sample of a packet filter firewall ruleset for an imaginary network of IP address that range from 192.168.1.0 to 192.168.1.254. Describe the effect of each rule.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Software and system security ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Buffer overflow and software security&lt;br /&gt;
* OS security&lt;br /&gt;
* Guest lecture from industry&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Define buffer overflow. &lt;br /&gt;
# Define an off-by-one attack.&lt;br /&gt;
# Define an injection attack. List some examples of injection attacks. What are the general circumstances in which injection attacks are found?&lt;br /&gt;
# State the similarities and differences between command injection and SQL injection attacks&lt;br /&gt;
# What are the basic steps needed in the process of securing a system?&lt;br /&gt;
# State different types of full virtualization with their security requirements.&lt;br /&gt;
# List five essential characteristics of cloud computing.&lt;br /&gt;
# List and briefly define three cloud service models.&lt;br /&gt;
# Briefly explain the most prominent deployment models for cloud computing.&lt;br /&gt;
# Describe some of the main cloud-specific security threats.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Investigate each of the unsafe standard C library functions shown in the figure using the UNIX man pages or any C programming text, and determine a safer alternative to use.&lt;br /&gt;
# Investigate the use of a replacement standard C string library, such as Libsafe, bstring, vstr, or other. Determine how significant the required code changes are, if any, to use the chosen library.&lt;br /&gt;
# Investigate the issues that arise while using sequence number as both identifier and authenticator of packets. Identify the root cause of the problem.&lt;br /&gt;
# Investigate the various types of cross-site scripting (XSS) attacks. How can such attacks be prevented? &lt;br /&gt;
# How can we use the TCP Wrappers and tcpd daemon to achieve secure remote control access? What if the network servers are heavily loaded?&lt;br /&gt;
# Why is it important to secure the boot process? Is it required to limit which media the system must boot from?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Cryptographic algorithms ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Symmetric encryption and message confidentiality&lt;br /&gt;
* Public key cryptography and message authentication&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are different types of cryptanalysis attacks?&lt;br /&gt;
# Why do some block cipher modes of operation only use encryption while others use both encryption and decryption?&lt;br /&gt;
# In the context of a hash function, what is a compression function?&lt;br /&gt;
# Briefly explain Diffie-Hellman key exchange.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why?&lt;br /&gt;
# Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption?&lt;br /&gt;
# Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&lt;br /&gt;
## Will this checksum detect all errors caused by an odd number of error bits? Explain.&lt;br /&gt;
## Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&lt;br /&gt;
## Comment on the effectiveness of this function for use as a hash function for authentication&lt;br /&gt;
# It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1854</id>
		<title>BSc: Fundamentals of Computer Security</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1854"/>
		<updated>2022-01-12T19:54:42Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Fundamentals of Computer Security =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Fundamentals of Computer Security&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* User authentication and authorization&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Reverse engineering and malicious software&lt;br /&gt;
* Buffer overflow and software security&lt;br /&gt;
* OS security&lt;br /&gt;
* Symmetric encryption&lt;br /&gt;
* Public-key cryptography&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
The purpose of this course is to teach the students the important aspects of cryptography, authentication, access control, DoS attacks, intrusion detection, etc. The students will learn major types of attacks and methods of protection from them.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Message and user authentication&lt;br /&gt;
* Encryption algorithms&lt;br /&gt;
* Authorization and access control mechanisms&lt;br /&gt;
* Different types of attacks&lt;br /&gt;
* Firewalls and intrusion detection methods&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* The importance of authentication and authentication protocols&lt;br /&gt;
* Encryption algorithms used for authentication and message integrity&lt;br /&gt;
* The importance of authorization and access control, different protocols&lt;br /&gt;
* Major types of attacks and methods of protection from them&lt;br /&gt;
* Importance of intrusion detection and firewalls &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Authentication protocols&lt;br /&gt;
* Encryption techniques and algorithms&lt;br /&gt;
* Well-known access control techniques&lt;br /&gt;
* Mitigate the DoS attacks&lt;br /&gt;
* Intrusion detection algorithms&lt;br /&gt;
* Using firewalls&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Stallings, William, and Lawrie Brown. &amp;quot;Computer Security: Principles and Practice, Global Edition.&amp;quot; (2017).&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Computer security technology and principles&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 36&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Software and system security &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 16&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Cryptographic algorithms&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Computer security technology and principles ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Introduction to computer security&lt;br /&gt;
* User authentication and authorization&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Network security of data center&lt;br /&gt;
* Reverse engineering and malicious software&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What is meant by the CIA triad?&lt;br /&gt;
# What is the difference between data integrity and system integrity?&lt;br /&gt;
# How is cryptanalysis different from brute-force attack?&lt;br /&gt;
# List and briefly explain the different approaches to attacking a symmetric encryption scheme.&lt;br /&gt;
# In general terms, what are four means of authenticating a user’s identity?&lt;br /&gt;
# What is a Trojan horse attack?&lt;br /&gt;
# What is the difference between authentication and authorization?&lt;br /&gt;
# How does RBAC relate to DAC and MAC?&lt;br /&gt;
# Define the terms database, database management system, and query language.&lt;br /&gt;
# What is a relational database and what are its principal ingredients?&lt;br /&gt;
# What is an SQL injection attack? What are the implications of an SQL injection attack?&lt;br /&gt;
# List the categories for grouping different types of SQLi attacks.&lt;br /&gt;
# Why is RBAC considered fit for database access control?&lt;br /&gt;
# What are three broad mechanisms that malware can use to propagate?&lt;br /&gt;
# What is a blended attack?&lt;br /&gt;
# Define a denial-of-service (DoS) attack&lt;br /&gt;
# State the difference between a SYN flooding attack and a SYN spoofing attack.&lt;br /&gt;
# What is the goal of an HTTP flood attack?&lt;br /&gt;
# What is a poison packet attack? Give two examples of such an attack.&lt;br /&gt;
# How are intruders classified according to skill level?&lt;br /&gt;
# List and briefly describe the classifications of intrusion detection systems based on the source and the type of data analyzed.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Consider the given general code for allowing access to a resource: a) Explain the security flaw in this program, b) Rewrite the code to avoid the flaw&lt;br /&gt;
# Develop an attack tree for gaining access to the contents of a physical safe&lt;br /&gt;
# Typically, in practice, the length of the message is greater than the block size of the encryption algorithm. The simplest approach to handle such encryption is known as electronic codebook (ECB) mode. Explain this mode. Mention a scenario where it cannot be applied. Explain briefly why it is not a secure mode of encryption&lt;br /&gt;
# Consider a very simple symmetric block encryption algorithm, in which 64-bits blocks of plaintext are encrypted using a 128-bit key. Show the decryption equation.&lt;br /&gt;
# Explain the suitability or unsuitability of the given passwords&lt;br /&gt;
# Assume that Personal Identification Numbers (PINs) are formed by nine-digit combinations of numbers 0 to 9. Assume that an adversary is able to attempt three PINs per second.&lt;br /&gt;
## Assuming no feedback to the adversary until each attempt has been completed, what is the expected time to discover the correct PIN?&lt;br /&gt;
## Assuming feedback to the adversary flagging an error as each incorrect digit is entered, what is the expected time to discover the correct PIN?&lt;br /&gt;
# Assume an application requires access control policies based on the applicant’s age and the type of funding to be provided. Using an ABAC approach, write policy rules for each of the following scenarios:&lt;br /&gt;
## If the applicant’s age is more than 35, only “Research Grants (RG)” can be provided.&lt;br /&gt;
## If the applicant’s age is less than or equal to 35, both “RG and Travel Grants (TG)” can be provided.&lt;br /&gt;
# Assume a system with K subject attributes, M object attributes and Range () denotes the range of possible values that each attribute can take. What are the number of roles and permissions required for an RBAC model? What is the problem with this approach if additional attributes are added?&lt;br /&gt;
# Consider a simplified database for an organization that includes information of several departments (identity, name, manager, number of employees) and of managers and employees of the respective departments. Suggest a relational database for efficiently managing this information&lt;br /&gt;
# Users hulkhogan and undertaker do not have the SELECT access right to the Inventory table and the Item table. These tables were created by and are owned by user bruno-s. Write the SQL commands that would enable bruno-s to grant SELECT access to these tables to hulkhogan and undertaker.&lt;br /&gt;
# Consider the given fragment of code. What type of malware is this?&lt;br /&gt;
# Consider the given fragment embedded in a webpage. What type of malicious software is this?&lt;br /&gt;
# In order to implement a classic DoS flood attack, the attacker must generate a sufficiently large volume of packets to exceed the capacity of the link to the target organization. Consider an attack using ICMP echo request (ping) packets that are 100 bytes in size (ignoring framing overhead). How many of these packets per second must the attacker send to flood a target organization using a 8-Mbps link? How many per second if the packets are 1000 bytes in size? Or 1460 bytes?&lt;br /&gt;
# It is discussed that an amplification attack, which is a variant of reflection attack, can be launched by using any type of a suitable UDP service, such as the echo service. However, TCP services cannot be used in this attack. Why?&lt;br /&gt;
# Consider the first step of the common attack methodology we describe, which is to gather publicly available information on possible targets. What types of information could be used? What does this use suggest to you about the content and detail of such information? How does this correlate with the organization’s business and legal requirements? How do you reconcile these conflicting demands?&lt;br /&gt;
# As was mentioned in this chapter, the application gateway does not permit an end-toend TCP connection; rather, it sets up two TCP connections, one between itself and a TCP user on an inner host and one between itself and a TCP user on an outside host. The disadvantage of this approach is the additional processing overhead on each connection since the gateway must examine and forward all traffic in both directions. Describe at least one more limitation of this approach which is not discussed.&lt;br /&gt;
# Given table shows a sample of a packet filter firewall ruleset for an imaginary network of IP address that range from 192.168.1.0 to 192.168.1.254. Describe the effect of each rule.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Software and system security ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Buffer overflow and software security&lt;br /&gt;
* OS security&lt;br /&gt;
* Guest lecture from industry&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Define buffer overflow. &lt;br /&gt;
# Define an off-by-one attack.&lt;br /&gt;
# Define an injection attack. List some examples of injection attacks. What are the general circumstances in which injection attacks are found?&lt;br /&gt;
# State the similarities and differences between command injection and SQL injection attacks&lt;br /&gt;
# What are the basic steps needed in the process of securing a system?&lt;br /&gt;
# State different types of full virtualization with their security requirements.&lt;br /&gt;
# List five essential characteristics of cloud computing.&lt;br /&gt;
# List and briefly define three cloud service models.&lt;br /&gt;
# Briefly explain the most prominent deployment models for cloud computing.&lt;br /&gt;
# Describe some of the main cloud-specific security threats.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Investigate each of the unsafe standard C library functions shown in the figure using the UNIX man pages or any C programming text, and determine a safer alternative to use.&lt;br /&gt;
# Investigate the use of a replacement standard C string library, such as Libsafe, bstring, vstr, or other. Determine how significant the required code changes are, if any, to use the chosen library.&lt;br /&gt;
# Investigate the issues that arise while using sequence number as both identifier and authenticator of packets. Identify the root cause of the problem.&lt;br /&gt;
# Investigate the various types of cross-site scripting (XSS) attacks. How can such attacks be prevented? &lt;br /&gt;
# How can we use the TCP Wrappers and tcpd daemon to achieve secure remote control access? What if the network servers are heavily loaded?&lt;br /&gt;
# Why is it important to secure the boot process? Is it required to limit which media the system must boot from?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Cryptographic algorithms ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Symmetric encryption and message confidentiality&lt;br /&gt;
* Public key cryptography and message authentication&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are different types of cryptanalysis attacks?&lt;br /&gt;
# Why do some block cipher modes of operation only use encryption while others use both encryption and decryption?&lt;br /&gt;
# In the context of a hash function, what is a compression function?&lt;br /&gt;
# Briefly explain Diffie-Hellman key exchange.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why?&lt;br /&gt;
# Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption?&lt;br /&gt;
# Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&lt;br /&gt;
## Will this checksum detect all errors caused by an odd number of error bits? Explain.&lt;br /&gt;
## Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&lt;br /&gt;
## Comment on the effectiveness of this function for use as a hash function for authentication&lt;br /&gt;
# It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1520</id>
		<title>BSc: Fundamentals of Computer Security</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1520"/>
		<updated>2021-12-04T14:41:57Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Fundamentals of Computer Security =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Fundamentals of Computer Security&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Cryptographic tools&lt;br /&gt;
* User authentication &lt;br /&gt;
* Access control&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Malicious software&lt;br /&gt;
* Denial-of-service attacks&lt;br /&gt;
* Intrusion detection&lt;br /&gt;
* Firewalls and intrusion prevention systems&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
The purpose of this course is to teach the students the important aspects of cryptography, authentication, access control, DoS attacks, intrusion detection, etc. The students will learn major types of attacks and methods of protection from them.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Message and user authentication&lt;br /&gt;
* Encryption algorithms&lt;br /&gt;
* Authorization and access control mechanisms&lt;br /&gt;
* Different types of attacks&lt;br /&gt;
* Firewalls and intrusion detection methods&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* The importance of authentication and authentication protocols&lt;br /&gt;
* Encryption algorithms used for authentication and message integrity&lt;br /&gt;
* The importance of authorization and access control, different protocols&lt;br /&gt;
* Major types of attacks and methods of protection from them&lt;br /&gt;
* Importance of intrusion detection and firewalls &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Authentication protocols&lt;br /&gt;
* Encryption techniques and algorithms&lt;br /&gt;
* Well-known access control techniques&lt;br /&gt;
* Mitigate the DoS attacks&lt;br /&gt;
* Intrusion detection algorithms&lt;br /&gt;
* Using firewalls&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Stallings, William, and Lawrie Brown. &amp;quot;Computer Security: Principles and Practice, Global Edition.&amp;quot; (2017).&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Computer security technology and principles&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 36&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Software and system security &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 16&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Cryptographic algorithms&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Computer security technology and principles ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Overview&lt;br /&gt;
* Cryptographic tools&lt;br /&gt;
* User authentication &lt;br /&gt;
* Access control&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Malicious software&lt;br /&gt;
* Denial-of-service attacks&lt;br /&gt;
* Intrusion detection&lt;br /&gt;
* Firewalls and intrusion prevention systems&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What is meant by the CIA triad?&lt;br /&gt;
# What is the difference between data integrity and system integrity?&lt;br /&gt;
# How is cryptanalysis different from brute-force attack?&lt;br /&gt;
# List and briefly explain the different approaches to attacking a symmetric encryption scheme.&lt;br /&gt;
# In general terms, what are four means of authenticating a user’s identity?&lt;br /&gt;
# What is a Trojan horse attack?&lt;br /&gt;
# What is the difference between authentication and authorization?&lt;br /&gt;
# How does RBAC relate to DAC and MAC?&lt;br /&gt;
# Define the terms database, database management system, and query language.&lt;br /&gt;
# What is a relational database and what are its principal ingredients?&lt;br /&gt;
# What is an SQL injection attack? What are the implications of an SQL injection attack?&lt;br /&gt;
# List the categories for grouping different types of SQLi attacks.&lt;br /&gt;
# Why is RBAC considered fit for database access control?&lt;br /&gt;
# What are three broad mechanisms that malware can use to propagate?&lt;br /&gt;
# What is a blended attack?&lt;br /&gt;
# Define a denial-of-service (DoS) attack&lt;br /&gt;
# State the difference between a SYN flooding attack and a SYN spoofing attack.&lt;br /&gt;
# What is the goal of an HTTP flood attack?&lt;br /&gt;
# What is a poison packet attack? Give two examples of such an attack.&lt;br /&gt;
# How are intruders classified according to skill level?&lt;br /&gt;
# List and breifly describe the classifications of intrusion detection systems based on the source and the type of data analyzed.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Consider the given general code for allowing access to a resource: a) Explain the security flaw in this program, b) Rewrite the code to avoid the flaw&lt;br /&gt;
# Develop an attack tree for gaining access to the contents of a physical safe&lt;br /&gt;
# Typically, in practice, the length of the message is greater than the block size of the encryption algorithm. The simplest approach to handle such encryption is known as electronic codebook (ECB) mode. Explain this mode. Mention a scenario where it cannot be applied. Explain briefly why it is not a secure mode of encryption&lt;br /&gt;
# Consider a very simple symmetric block encryption algorithm, in which 64-bits blocks of plaintext are encrypted using a 128-bit key. Show the decryption equation.&lt;br /&gt;
# Explain the suitability or unsuitability of the given passwords&lt;br /&gt;
# Assume that Personal Identification Numbers (PINs) are formed by nine-digit combinations of numbers 0 to 9. Assume that an adversary is able to attempt three PINs per second.&lt;br /&gt;
## Assuming no feedback to the adversary until each attempt has been completed, what is the expected time to discover the correct PIN?&lt;br /&gt;
## Assuming feedback to the adversary flagging an error as each incorrect digit is entered, what is the expected time to discover the correct PIN?&lt;br /&gt;
# Assume an application requires access control policies based on the applicant’s age and the type of funding to be provided. Using an ABAC approach, write policy rules for each of the following scenarios:&lt;br /&gt;
## If the applicant’s age is more than 35, only “Research Grants (RG)” can be provided.&lt;br /&gt;
## If the applicant’s age is less than or equal to 35, both “RG and Travel Grants (TG)” can be provided.&lt;br /&gt;
# Assume a system with K subject attributes, M object attributes and Range () denotes the range of possible values that each attribute can take. What are the number of roles and permissions required for an RBAC model? What is the problem with this approach if additional attributes are added?&lt;br /&gt;
# Consider a simplified database for an organization that includes information of several departments (identity, name, manager, number of employees) and of managers and employees of the respective departments. Suggest a relational database for efficiently managing this information&lt;br /&gt;
# Users hulkhogan and undertaker do not have the SELECT access right to the Inventory table and the Item table. These tables were created by and are owned by user bruno-s. Write the SQL commands that would enable bruno-s to grant SELECT access to these tables to hulkhogan and undertaker.&lt;br /&gt;
# Consider the given fragment of code. What type of malware is this?&lt;br /&gt;
# Consider the given fragment embedded in a webpage. What type of malicious software is this?&lt;br /&gt;
# In order to implement a classic DoS flood attack, the attacker must generate a sufficiently large volume of packets to exceed the capacity of the link to the target organization. Consider an attack using ICMP echo request (ping) packets that are 100 bytes in size (ignoring framing overhead). How many of these packets per second must the attacker send to flood a target organization using a 8-Mbps link? How many per second if the packets are 1000 bytes in size? Or 1460 bytes?&lt;br /&gt;
# It is discussed that an amplification attack, which is a variant of reflection attack, can be launched by using any type of a suitable UDP service, such as the echo service. However, TCP services cannot be used in this attack. Why?&lt;br /&gt;
# Consider the first step of the common attack methodology we describe, which is to gather publicly available information on possible targets. What types of information could be used? What does this use suggest to you about the content and detail of such information? How does this correlate with the organization’s business and legal requirements? How do you reconcile these conflicting demands?&lt;br /&gt;
# As was mentioned in this chapter, the application gateway does not permit an end-toend TCP connection; rather, it sets up two TCP connections, one between itself and a TCP user on an inner host and one between itself and a TCP user on an outside host. The disadvantage of this approach is the additional processing overhead on each connection since the gateway must examine and forward all traffic in both directions. Describe at least one more limitation of this approach which is not discussed.&lt;br /&gt;
# Given table shows a sample of a packet filter firewall ruleset for an imaginary network of IP address that range from 192.168.1.0 to 192.168.1.254. Describe the effect of each rule.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Software and system security ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Buffer overflow&lt;br /&gt;
* Software security&lt;br /&gt;
* Operating system security&lt;br /&gt;
* Cloud and IoT security&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Define buffer overflow. &lt;br /&gt;
# Define an off-by-one attack.&lt;br /&gt;
# Define an injection attack. List some examples of injection attacks. What are the general circumstances in which injection attacks are found?&lt;br /&gt;
# State the similarities and differences between command injection and SQL injection attacks&lt;br /&gt;
# What are the basic steps needed in the process of securing a system?&lt;br /&gt;
# State different types of full virtualization with their security requirements.&lt;br /&gt;
# List five essential characteristics of cloud computing.&lt;br /&gt;
# List and briefly define three cloud service models.&lt;br /&gt;
# Briefly explain the most prominent deployment models for cloud computing.&lt;br /&gt;
# Describe some of the main cloud-specific security threats.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Investigate each of the unsafe standard C library functions shown in the figure using the UNIX man pages or any C programming text, and determine a safer alternative to use.&lt;br /&gt;
# Investigate the use of a replacement standard C string library, such as Libsafe, bstring, vstr, or other. Determine how significant the required code changes are, if any, to use the chosen library.&lt;br /&gt;
# Investigate the issues that arise while using sequence number as both identifier and authenticator of packets. Identify the root cause of the problem.&lt;br /&gt;
# Investigate the various types of cross-site scripting (XSS) attacks. How can such attacks be prevented? &lt;br /&gt;
# How can we use the TCP Wrappers and tcpd daemon to achieve secure remote control access? What if the network servers are heavily loaded?&lt;br /&gt;
# Why is it important to secure the boot process? Is it required to limit which media the system must boot from?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Cryptographic algorithms ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Symmetric encryption and message confidentiality&lt;br /&gt;
* Public key cryptography and message authentication&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are different types of cryptanalysis attacks?&lt;br /&gt;
# Why do some block cipher modes of operation only use encryption while others use both encryption and decryption?&lt;br /&gt;
# In the context of a hash function, what is a compression function?&lt;br /&gt;
# Briefly explain Diffie-Hellman key exchange.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why?&lt;br /&gt;
# Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption?&lt;br /&gt;
# Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&lt;br /&gt;
## Will this checksum detect all errors caused by an odd number of error bits? Explain.&lt;br /&gt;
## Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&lt;br /&gt;
## Comment on the effectiveness of this function for use as a hash function for authentication&lt;br /&gt;
# It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1017</id>
		<title>BSc: Fundamentals of Computer Security</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1017"/>
		<updated>2021-10-19T23:01:11Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Course characteristics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Fundamentals of Computer Security =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Fundamentals of Computer Security&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Cryptographic tools&lt;br /&gt;
* User authentication &lt;br /&gt;
* Access control&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Malicious software&lt;br /&gt;
* Denial-of-service attacks&lt;br /&gt;
* Intrusion detection&lt;br /&gt;
* Firewalls and intrusion prevention systems&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
The purpose of this course is to teach the students the important aspects of cryptography, authentication, access control, DoS attacks, intrusion detection, etc. The students will learn major types of attacks and methods of protection from them.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Message and user authentication&lt;br /&gt;
* Encryption algorithms&lt;br /&gt;
* Authorization and access control mechanisms&lt;br /&gt;
* Different types of attacks&lt;br /&gt;
* Firewalls and intrusion detection methods&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* The importance of authentication and authentication protocols&lt;br /&gt;
* Encryption algorithms used for authentication and message integrity&lt;br /&gt;
* The importance of authorization and access control, different protocols&lt;br /&gt;
* Major types of attacks and methods of protection from them&lt;br /&gt;
* Importance of intrusion detection and firewalls &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Authentication protocols&lt;br /&gt;
* Encryption techniques and algorithms&lt;br /&gt;
* Well-known access control techniques&lt;br /&gt;
* Mitigate the DoS attacks&lt;br /&gt;
* Intrusion detection algorithms&lt;br /&gt;
* Using firewalls&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Stallings, William, and Lawrie Brown. &amp;quot;Computer Security: Principles and Practice, Global Edition.&amp;quot; (2017).&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Computer security technology and principles&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 36&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Software and system security &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 16&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Cryptographic algorithms&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Introduction to subject, computer networks basics, transport layer protocols, and socket programming ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Overview&lt;br /&gt;
* Cryptographic tools&lt;br /&gt;
* User authentication &lt;br /&gt;
* Access control&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Malicious software&lt;br /&gt;
* Denial-of-service attacks&lt;br /&gt;
* Intrusion detection&lt;br /&gt;
* Firewalls and intrusion prevention systems&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What is meant by the CIA triad?&lt;br /&gt;
# What is the difference between data integrity and system integrity?&lt;br /&gt;
# How is cryptanalysis different from brute-force attack?&lt;br /&gt;
# List and briefly explain the different approaches to attacking a symmetric encryption scheme.&lt;br /&gt;
# In general terms, what are four means of authenticating a user’s identity?&lt;br /&gt;
# What is a Trojan horse attack?&lt;br /&gt;
# What is the difference between authentication and authorization?&lt;br /&gt;
# How does RBAC relate to DAC and MAC?&lt;br /&gt;
# Define the terms database, database management system, and query language.&lt;br /&gt;
# What is a relational database and what are its principal ingredients?&lt;br /&gt;
# What is an SQL injection attack? What are the implications of an SQL injection attack?&lt;br /&gt;
# List the categories for grouping different types of SQLi attacks.&lt;br /&gt;
# Why is RBAC considered fit for database access control?&lt;br /&gt;
# What are three broad mechanisms that malware can use to propagate?&lt;br /&gt;
# What is a blended attack?&lt;br /&gt;
# Define a denial-of-service (DoS) attack&lt;br /&gt;
# State the difference between a SYN flooding attack and a SYN spoofing attack.&lt;br /&gt;
# What is the goal of an HTTP flood attack?&lt;br /&gt;
# What is a poison packet attack? Give two examples of such an attack.&lt;br /&gt;
# How are intruders classified according to skill level?&lt;br /&gt;
# List and breifly describe the classifications of intrusion detection systems based on the source and the type of data analyzed.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Consider the given general code for allowing access to a resource: a) Explain the security flaw in this program, b) Rewrite the code to avoid the flaw&lt;br /&gt;
# Develop an attack tree for gaining access to the contents of a physical safe&lt;br /&gt;
# Typically, in practice, the length of the message is greater than the block size of the encryption algorithm. The simplest approach to handle such encryption is known as electronic codebook (ECB) mode. Explain this mode. Mention a scenario where it cannot be applied. Explain briefly why it is not a secure mode of encryption&lt;br /&gt;
# Consider a very simple symmetric block encryption algorithm, in which 64-bits blocks of plaintext are encrypted using a 128-bit key. Show the decryption equation.&lt;br /&gt;
# Explain the suitability or unsuitability of the given passwords&lt;br /&gt;
# Assume that Personal Identification Numbers (PINs) are formed by nine-digit combinations of numbers 0 to 9. Assume that an adversary is able to attempt three PINs per second.&lt;br /&gt;
## Assuming no feedback to the adversary until each attempt has been completed, what is the expected time to discover the correct PIN?&lt;br /&gt;
## Assuming feedback to the adversary flagging an error as each incorrect digit is entered, what is the expected time to discover the correct PIN?&lt;br /&gt;
# Assume an application requires access control policies based on the applicant’s age and the type of funding to be provided. Using an ABAC approach, write policy rules for each of the following scenarios:&lt;br /&gt;
## If the applicant’s age is more than 35, only “Research Grants (RG)” can be provided.&lt;br /&gt;
## If the applicant’s age is less than or equal to 35, both “RG and Travel Grants (TG)” can be provided.&lt;br /&gt;
# Assume a system with K subject attributes, M object attributes and Range () denotes the range of possible values that each attribute can take. What are the number of roles and permissions required for an RBAC model? What is the problem with this approach if additional attributes are added?&lt;br /&gt;
# Consider a simplified database for an organization that includes information of several departments (identity, name, manager, number of employees) and of managers and employees of the respective departments. Suggest a relational database for efficiently managing this information&lt;br /&gt;
# Users hulkhogan and undertaker do not have the SELECT access right to the Inventory table and the Item table. These tables were created by and are owned by user bruno-s. Write the SQL commands that would enable bruno-s to grant SELECT access to these tables to hulkhogan and undertaker.&lt;br /&gt;
# Consider the given fragment of code. What type of malware is this?&lt;br /&gt;
# Consider the given fragment embedded in a webpage. What type of malicious software is this?&lt;br /&gt;
# In order to implement a classic DoS flood attack, the attacker must generate a sufficiently large volume of packets to exceed the capacity of the link to the target organization. Consider an attack using ICMP echo request (ping) packets that are 100 bytes in size (ignoring framing overhead). How many of these packets per second must the attacker send to flood a target organization using a 8-Mbps link? How many per second if the packets are 1000 bytes in size? Or 1460 bytes?&lt;br /&gt;
# It is discussed that an amplification attack, which is a variant of reflection attack, can be launched by using any type of a suitable UDP service, such as the echo service. However, TCP services cannot be used in this attack. Why?&lt;br /&gt;
# Consider the first step of the common attack methodology we describe, which is to gather publicly available information on possible targets. What types of information could be used? What does this use suggest to you about the content and detail of such information? How does this correlate with the organization’s business and legal requirements? How do you reconcile these conflicting demands?&lt;br /&gt;
# As was mentioned in this chapter, the application gateway does not permit an end-toend TCP connection; rather, it sets up two TCP connections, one between itself and a TCP user on an inner host and one between itself and a TCP user on an outside host. The disadvantage of this approach is the additional processing overhead on each connection since the gateway must examine and forward all traffic in both directions. Describe at least one more limitation of this approach which is not discussed.&lt;br /&gt;
# Given table shows a sample of a packet filter firewall ruleset for an imaginary network of IP address that range from 192.168.1.0 to 192.168.1.254. Describe the effect of each rule.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Software and system security ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Buffer overflow&lt;br /&gt;
* Software security&lt;br /&gt;
* Operating system security&lt;br /&gt;
* Cloud and IoT security&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Define buffer overflow. &lt;br /&gt;
# Define an off-by-one attack.&lt;br /&gt;
# Define an injection attack. List some examples of injection attacks. What are the general circumstances in which injection attacks are found?&lt;br /&gt;
# State the similarities and differences between command injection and SQL injection attacks&lt;br /&gt;
# What are the basic steps needed in the process of securing a system?&lt;br /&gt;
# State different types of full virtualization with their security requirements.&lt;br /&gt;
# List five essential characteristics of cloud computing.&lt;br /&gt;
# List and briefly define three cloud service models.&lt;br /&gt;
# Briefly explain the most prominent deployment models for cloud computing.&lt;br /&gt;
# Describe some of the main cloud-specific security threats.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Investigate each of the unsafe standard C library functions shown in the figure using the UNIX man pages or any C programming text, and determine a safer alternative to use.&lt;br /&gt;
# Investigate the use of a replacement standard C string library, such as Libsafe, bstring, vstr, or other. Determine how significant the required code changes are, if any, to use the chosen library.&lt;br /&gt;
# Investigate the issues that arise while using sequence number as both identifier and authenticator of packets. Identify the root cause of the problem.&lt;br /&gt;
# Investigate the various types of cross-site scripting (XSS) attacks. How can such attacks be prevented? &lt;br /&gt;
# How can we use the TCP Wrappers and tcpd daemon to achieve secure remote control access? What if the network servers are heavily loaded?&lt;br /&gt;
# Why is it important to secure the boot process? Is it required to limit which media the system must boot from?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Cryptographic algorithms ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Symmetric encryption and message confidentiality&lt;br /&gt;
* Public key cryptography and message authentication&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are different types of cryptanalysis attacks?&lt;br /&gt;
# Why do some block cipher modes of operation only use encryption while others use both encryption and decryption?&lt;br /&gt;
# In the context of a hash function, what is a compression function?&lt;br /&gt;
# Briefly explain Diffie-Hellman key exchange.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why?&lt;br /&gt;
# Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption?&lt;br /&gt;
# Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&lt;br /&gt;
## Will this checksum detect all errors caused by an odd number of error bits? Explain.&lt;br /&gt;
## Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&lt;br /&gt;
## Comment on the effectiveness of this function for use as a hash function for authentication&lt;br /&gt;
# It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1016</id>
		<title>BSc: Fundamentals of Computer Security</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1016"/>
		<updated>2021-10-19T22:36:48Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Key concepts of the class */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Fundamentals of Computer Security =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Fundamentals of Computer Security&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Cryptographic tools&lt;br /&gt;
* User authentication &lt;br /&gt;
* Access control&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Malicious software&lt;br /&gt;
* Denial-of-service attacks&lt;br /&gt;
* Intrusion detection&lt;br /&gt;
* Firewalls and intrusion prevention systems&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' &lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Computer security technology and principles&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 36&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Software and system security &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 16&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Cryptographic algorithms&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Introduction to subject, computer networks basics, transport layer protocols, and socket programming ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Overview&lt;br /&gt;
* Cryptographic tools&lt;br /&gt;
* User authentication &lt;br /&gt;
* Access control&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Malicious software&lt;br /&gt;
* Denial-of-service attacks&lt;br /&gt;
* Intrusion detection&lt;br /&gt;
* Firewalls and intrusion prevention systems&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What is meant by the CIA triad?&lt;br /&gt;
# What is the difference between data integrity and system integrity?&lt;br /&gt;
# How is cryptanalysis different from brute-force attack?&lt;br /&gt;
# List and briefly explain the different approaches to attacking a symmetric encryption scheme.&lt;br /&gt;
# In general terms, what are four means of authenticating a user’s identity?&lt;br /&gt;
# What is a Trojan horse attack?&lt;br /&gt;
# What is the difference between authentication and authorization?&lt;br /&gt;
# How does RBAC relate to DAC and MAC?&lt;br /&gt;
# Define the terms database, database management system, and query language.&lt;br /&gt;
# What is a relational database and what are its principal ingredients?&lt;br /&gt;
# What is an SQL injection attack? What are the implications of an SQL injection attack?&lt;br /&gt;
# List the categories for grouping different types of SQLi attacks.&lt;br /&gt;
# Why is RBAC considered fit for database access control?&lt;br /&gt;
# What are three broad mechanisms that malware can use to propagate?&lt;br /&gt;
# What is a blended attack?&lt;br /&gt;
# Define a denial-of-service (DoS) attack&lt;br /&gt;
# State the difference between a SYN flooding attack and a SYN spoofing attack.&lt;br /&gt;
# What is the goal of an HTTP flood attack?&lt;br /&gt;
# What is a poison packet attack? Give two examples of such an attack.&lt;br /&gt;
# How are intruders classified according to skill level?&lt;br /&gt;
# List and breifly describe the classifications of intrusion detection systems based on the source and the type of data analyzed.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Consider the given general code for allowing access to a resource: a) Explain the security flaw in this program, b) Rewrite the code to avoid the flaw&lt;br /&gt;
# Develop an attack tree for gaining access to the contents of a physical safe&lt;br /&gt;
# Typically, in practice, the length of the message is greater than the block size of the encryption algorithm. The simplest approach to handle such encryption is known as electronic codebook (ECB) mode. Explain this mode. Mention a scenario where it cannot be applied. Explain briefly why it is not a secure mode of encryption&lt;br /&gt;
# Consider a very simple symmetric block encryption algorithm, in which 64-bits blocks of plaintext are encrypted using a 128-bit key. Show the decryption equation.&lt;br /&gt;
# Explain the suitability or unsuitability of the given passwords&lt;br /&gt;
# Assume that Personal Identification Numbers (PINs) are formed by nine-digit combinations of numbers 0 to 9. Assume that an adversary is able to attempt three PINs per second.&lt;br /&gt;
## Assuming no feedback to the adversary until each attempt has been completed, what is the expected time to discover the correct PIN?&lt;br /&gt;
## Assuming feedback to the adversary flagging an error as each incorrect digit is entered, what is the expected time to discover the correct PIN?&lt;br /&gt;
# Assume an application requires access control policies based on the applicant’s age and the type of funding to be provided. Using an ABAC approach, write policy rules for each of the following scenarios:&lt;br /&gt;
## If the applicant’s age is more than 35, only “Research Grants (RG)” can be provided.&lt;br /&gt;
## If the applicant’s age is less than or equal to 35, both “RG and Travel Grants (TG)” can be provided.&lt;br /&gt;
# Assume a system with K subject attributes, M object attributes and Range () denotes the range of possible values that each attribute can take. What are the number of roles and permissions required for an RBAC model? What is the problem with this approach if additional attributes are added?&lt;br /&gt;
# Consider a simplified database for an organization that includes information of several departments (identity, name, manager, number of employees) and of managers and employees of the respective departments. Suggest a relational database for efficiently managing this information&lt;br /&gt;
# Users hulkhogan and undertaker do not have the SELECT access right to the Inventory table and the Item table. These tables were created by and are owned by user bruno-s. Write the SQL commands that would enable bruno-s to grant SELECT access to these tables to hulkhogan and undertaker.&lt;br /&gt;
# Consider the given fragment of code. What type of malware is this?&lt;br /&gt;
# Consider the given fragment embedded in a webpage. What type of malicious software is this?&lt;br /&gt;
# In order to implement a classic DoS flood attack, the attacker must generate a sufficiently large volume of packets to exceed the capacity of the link to the target organization. Consider an attack using ICMP echo request (ping) packets that are 100 bytes in size (ignoring framing overhead). How many of these packets per second must the attacker send to flood a target organization using a 8-Mbps link? How many per second if the packets are 1000 bytes in size? Or 1460 bytes?&lt;br /&gt;
# It is discussed that an amplification attack, which is a variant of reflection attack, can be launched by using any type of a suitable UDP service, such as the echo service. However, TCP services cannot be used in this attack. Why?&lt;br /&gt;
# Consider the first step of the common attack methodology we describe, which is to gather publicly available information on possible targets. What types of information could be used? What does this use suggest to you about the content and detail of such information? How does this correlate with the organization’s business and legal requirements? How do you reconcile these conflicting demands?&lt;br /&gt;
# As was mentioned in this chapter, the application gateway does not permit an end-toend TCP connection; rather, it sets up two TCP connections, one between itself and a TCP user on an inner host and one between itself and a TCP user on an outside host. The disadvantage of this approach is the additional processing overhead on each connection since the gateway must examine and forward all traffic in both directions. Describe at least one more limitation of this approach which is not discussed.&lt;br /&gt;
# Given table shows a sample of a packet filter firewall ruleset for an imaginary network of IP address that range from 192.168.1.0 to 192.168.1.254. Describe the effect of each rule.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Software and system security ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Buffer overflow&lt;br /&gt;
* Software security&lt;br /&gt;
* Operating system security&lt;br /&gt;
* Cloud and IoT security&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Define buffer overflow. &lt;br /&gt;
# Define an off-by-one attack.&lt;br /&gt;
# Define an injection attack. List some examples of injection attacks. What are the general circumstances in which injection attacks are found?&lt;br /&gt;
# State the similarities and differences between command injection and SQL injection attacks&lt;br /&gt;
# What are the basic steps needed in the process of securing a system?&lt;br /&gt;
# State different types of full virtualization with their security requirements.&lt;br /&gt;
# List five essential characteristics of cloud computing.&lt;br /&gt;
# List and briefly define three cloud service models.&lt;br /&gt;
# Briefly explain the most prominent deployment models for cloud computing.&lt;br /&gt;
# Describe some of the main cloud-specific security threats.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Investigate each of the unsafe standard C library functions shown in the figure using the UNIX man pages or any C programming text, and determine a safer alternative to use.&lt;br /&gt;
# Investigate the use of a replacement standard C string library, such as Libsafe, bstring, vstr, or other. Determine how significant the required code changes are, if any, to use the chosen library.&lt;br /&gt;
# Investigate the issues that arise while using sequence number as both identifier and authenticator of packets. Identify the root cause of the problem.&lt;br /&gt;
# Investigate the various types of cross-site scripting (XSS) attacks. How can such attacks be prevented? &lt;br /&gt;
# How can we use the TCP Wrappers and tcpd daemon to achieve secure remote control access? What if the network servers are heavily loaded?&lt;br /&gt;
# Why is it important to secure the boot process? Is it required to limit which media the system must boot from?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Cryptographic algorithms ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Symmetric encryption and message confidentiality&lt;br /&gt;
* Public key cryptography and message authentication&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are different types of cryptanalysis attacks?&lt;br /&gt;
# Why do some block cipher modes of operation only use encryption while others use both encryption and decryption?&lt;br /&gt;
# In the context of a hash function, what is a compression function?&lt;br /&gt;
# Briefly explain Diffie-Hellman key exchange.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why?&lt;br /&gt;
# Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption?&lt;br /&gt;
# Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&lt;br /&gt;
## Will this checksum detect all errors caused by an odd number of error bits? Explain.&lt;br /&gt;
## Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&lt;br /&gt;
## Comment on the effectiveness of this function for use as a hash function for authentication&lt;br /&gt;
# It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1015</id>
		<title>BSc: Fundamentals of Computer Security</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1015"/>
		<updated>2021-10-19T22:31:20Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Fundamentals of Computer Security =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Fundamentals of Computer Security&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' &lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Computer security technology and principles&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 36&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Software and system security &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 16&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Cryptographic algorithms&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Introduction to subject, computer networks basics, transport layer protocols, and socket programming ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Overview&lt;br /&gt;
* Cryptographic tools&lt;br /&gt;
* User authentication &lt;br /&gt;
* Access control&lt;br /&gt;
* Database and data center security&lt;br /&gt;
* Malicious software&lt;br /&gt;
* Denial-of-service attacks&lt;br /&gt;
* Intrusion detection&lt;br /&gt;
* Firewalls and intrusion prevention systems&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What is meant by the CIA triad?&lt;br /&gt;
# What is the difference between data integrity and system integrity?&lt;br /&gt;
# How is cryptanalysis different from brute-force attack?&lt;br /&gt;
# List and briefly explain the different approaches to attacking a symmetric encryption scheme.&lt;br /&gt;
# In general terms, what are four means of authenticating a user’s identity?&lt;br /&gt;
# What is a Trojan horse attack?&lt;br /&gt;
# What is the difference between authentication and authorization?&lt;br /&gt;
# How does RBAC relate to DAC and MAC?&lt;br /&gt;
# Define the terms database, database management system, and query language.&lt;br /&gt;
# What is a relational database and what are its principal ingredients?&lt;br /&gt;
# What is an SQL injection attack? What are the implications of an SQL injection attack?&lt;br /&gt;
# List the categories for grouping different types of SQLi attacks.&lt;br /&gt;
# Why is RBAC considered fit for database access control?&lt;br /&gt;
# What are three broad mechanisms that malware can use to propagate?&lt;br /&gt;
# What is a blended attack?&lt;br /&gt;
# Define a denial-of-service (DoS) attack&lt;br /&gt;
# State the difference between a SYN flooding attack and a SYN spoofing attack.&lt;br /&gt;
# What is the goal of an HTTP flood attack?&lt;br /&gt;
# What is a poison packet attack? Give two examples of such an attack.&lt;br /&gt;
# How are intruders classified according to skill level?&lt;br /&gt;
# List and breifly describe the classifications of intrusion detection systems based on the source and the type of data analyzed.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Consider the given general code for allowing access to a resource: a) Explain the security flaw in this program, b) Rewrite the code to avoid the flaw&lt;br /&gt;
# Develop an attack tree for gaining access to the contents of a physical safe&lt;br /&gt;
# Typically, in practice, the length of the message is greater than the block size of the encryption algorithm. The simplest approach to handle such encryption is known as electronic codebook (ECB) mode. Explain this mode. Mention a scenario where it cannot be applied. Explain briefly why it is not a secure mode of encryption&lt;br /&gt;
# Consider a very simple symmetric block encryption algorithm, in which 64-bits blocks of plaintext are encrypted using a 128-bit key. Show the decryption equation.&lt;br /&gt;
# Explain the suitability or unsuitability of the given passwords&lt;br /&gt;
# Assume that Personal Identification Numbers (PINs) are formed by nine-digit combinations of numbers 0 to 9. Assume that an adversary is able to attempt three PINs per second.&lt;br /&gt;
## Assuming no feedback to the adversary until each attempt has been completed, what is the expected time to discover the correct PIN?&lt;br /&gt;
## Assuming feedback to the adversary flagging an error as each incorrect digit is entered, what is the expected time to discover the correct PIN?&lt;br /&gt;
# Assume an application requires access control policies based on the applicant’s age and the type of funding to be provided. Using an ABAC approach, write policy rules for each of the following scenarios:&lt;br /&gt;
## If the applicant’s age is more than 35, only “Research Grants (RG)” can be provided.&lt;br /&gt;
## If the applicant’s age is less than or equal to 35, both “RG and Travel Grants (TG)” can be provided.&lt;br /&gt;
# Assume a system with K subject attributes, M object attributes and Range () denotes the range of possible values that each attribute can take. What are the number of roles and permissions required for an RBAC model? What is the problem with this approach if additional attributes are added?&lt;br /&gt;
# Consider a simplified database for an organization that includes information of several departments (identity, name, manager, number of employees) and of managers and employees of the respective departments. Suggest a relational database for efficiently managing this information&lt;br /&gt;
# Users hulkhogan and undertaker do not have the SELECT access right to the Inventory table and the Item table. These tables were created by and are owned by user bruno-s. Write the SQL commands that would enable bruno-s to grant SELECT access to these tables to hulkhogan and undertaker.&lt;br /&gt;
# Consider the given fragment of code. What type of malware is this?&lt;br /&gt;
# Consider the given fragment embedded in a webpage. What type of malicious software is this?&lt;br /&gt;
# In order to implement a classic DoS flood attack, the attacker must generate a sufficiently large volume of packets to exceed the capacity of the link to the target organization. Consider an attack using ICMP echo request (ping) packets that are 100 bytes in size (ignoring framing overhead). How many of these packets per second must the attacker send to flood a target organization using a 8-Mbps link? How many per second if the packets are 1000 bytes in size? Or 1460 bytes?&lt;br /&gt;
# It is discussed that an amplification attack, which is a variant of reflection attack, can be launched by using any type of a suitable UDP service, such as the echo service. However, TCP services cannot be used in this attack. Why?&lt;br /&gt;
# Consider the first step of the common attack methodology we describe, which is to gather publicly available information on possible targets. What types of information could be used? What does this use suggest to you about the content and detail of such information? How does this correlate with the organization’s business and legal requirements? How do you reconcile these conflicting demands?&lt;br /&gt;
# As was mentioned in this chapter, the application gateway does not permit an end-toend TCP connection; rather, it sets up two TCP connections, one between itself and a TCP user on an inner host and one between itself and a TCP user on an outside host. The disadvantage of this approach is the additional processing overhead on each connection since the gateway must examine and forward all traffic in both directions. Describe at least one more limitation of this approach which is not discussed.&lt;br /&gt;
# Given table shows a sample of a packet filter firewall ruleset for an imaginary network of IP address that range from 192.168.1.0 to 192.168.1.254. Describe the effect of each rule.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Software and system security ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Buffer overflow&lt;br /&gt;
* Software security&lt;br /&gt;
* Operating system security&lt;br /&gt;
* Cloud and IoT security&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Define buffer overflow. &lt;br /&gt;
# Define an off-by-one attack.&lt;br /&gt;
# Define an injection attack. List some examples of injection attacks. What are the general circumstances in which injection attacks are found?&lt;br /&gt;
# State the similarities and differences between command injection and SQL injection attacks&lt;br /&gt;
# What are the basic steps needed in the process of securing a system?&lt;br /&gt;
# State different types of full virtualization with their security requirements.&lt;br /&gt;
# List five essential characteristics of cloud computing.&lt;br /&gt;
# List and briefly define three cloud service models.&lt;br /&gt;
# Briefly explain the most prominent deployment models for cloud computing.&lt;br /&gt;
# Describe some of the main cloud-specific security threats.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Investigate each of the unsafe standard C library functions shown in the figure using the UNIX man pages or any C programming text, and determine a safer alternative to use.&lt;br /&gt;
# Investigate the use of a replacement standard C string library, such as Libsafe, bstring, vstr, or other. Determine how significant the required code changes are, if any, to use the chosen library.&lt;br /&gt;
# Investigate the issues that arise while using sequence number as both identifier and authenticator of packets. Identify the root cause of the problem.&lt;br /&gt;
# Investigate the various types of cross-site scripting (XSS) attacks. How can such attacks be prevented? &lt;br /&gt;
# How can we use the TCP Wrappers and tcpd daemon to achieve secure remote control access? What if the network servers are heavily loaded?&lt;br /&gt;
# Why is it important to secure the boot process? Is it required to limit which media the system must boot from?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Cryptographic algorithms ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Symmetric encryption and message confidentiality&lt;br /&gt;
* Public key cryptography and message authentication&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are different types of cryptanalysis attacks?&lt;br /&gt;
# Why do some block cipher modes of operation only use encryption while others use both encryption and decryption?&lt;br /&gt;
# In the context of a hash function, what is a compression function?&lt;br /&gt;
# Briefly explain Diffie-Hellman key exchange.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Suppose that your organization wants you to ensure the security of its data while the data is in transit. Which one out of stream cipher and block cipher would you select and why?&lt;br /&gt;
# Can we perform encryption operations in parallel on multiple blocks of plaintext in any of the five modes? How about decryption?&lt;br /&gt;
# Consider a 32-bit hash function defined as the concatenation of two 16-bit functions: XOR and RXOR, defined as “two simple hash functions.”&lt;br /&gt;
## Will this checksum detect all errors caused by an odd number of error bits? Explain.&lt;br /&gt;
## Will this checksum detect all errors caused by an even number of error bits? If not, characterize the error patterns that will cause the checksum to fail.&lt;br /&gt;
## Comment on the effectiveness of this function for use as a hash function for authentication&lt;br /&gt;
# It is possible to use a hash function to construct a block cipher with a structure similar to DES. Because a hash function is one way and a block cipher must be reversible (to decrypt), how is it possible?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
Questions from previous two subsections can be used.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1014</id>
		<title>BSc: Fundamentals of Computer Security</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Fundamentals_of_Computer_Security&amp;diff=1014"/>
		<updated>2021-10-19T20:48:09Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: Created page with &amp;quot;= Fundamentals of Computer Security =  * &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Fundamentals of Computer Security * &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ * &amp;lt;span&amp;gt;'''Knowledge area:''...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Fundamentals of Computer Security =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Fundamentals of Computer Security&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' &lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Computer security technology and principles&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Software and system security &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Cryptographic algorithms&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Introduction to subject, computer networks basics, transport layer protocols, and socket programming ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* General introduction to the course&lt;br /&gt;
* Computer networks basic&lt;br /&gt;
* Socket programming &lt;br /&gt;
* UDP socket programming&lt;br /&gt;
* TCP socket programming&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are the distributed systems? &lt;br /&gt;
# Give an example of distributed systems.&lt;br /&gt;
# What are the advantages of layered architecture?&lt;br /&gt;
# What are the roles of transport protocols?&lt;br /&gt;
# How the TCP and UDP differ from each other? When one is preferred over the other?&lt;br /&gt;
# What is socket programming?&lt;br /&gt;
# How socket programming is different for UDP and TCP?&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Write a simple UDP/TCP client-server echo program&lt;br /&gt;
# Write a simple chatting program using UDP/TCP sockets&lt;br /&gt;
# Given the simple echo server program, apply socket timeouts and catch timeout exceptions&lt;br /&gt;
# Write a UDP-based reliable file transfer protocol&lt;br /&gt;
# Write a program that parallelly executes the CPU-bound tasks using multiple processes&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Describe an advantage of layered architecture?&lt;br /&gt;
# Describe the differences between TCP and UDP protocols?&lt;br /&gt;
# Provide examples when using UDP can be more reasonable than TCP?&lt;br /&gt;
# Describe how UDP and TCP socket programming differ from each other?&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Multithreaded socket programming, RPCs, and distributed system architecture ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Multithreading and multithreaded socket programming&lt;br /&gt;
* Remote procedure calls (RPCs)&lt;br /&gt;
* Distributed system architectures&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How the threads differ from processes? &lt;br /&gt;
# What are the I/O and CPU-bound tasks?&lt;br /&gt;
# For what kind of tasks, using threads is preferred than using processes?&lt;br /&gt;
# What is a remote procedure call?&lt;br /&gt;
# What are some well-known distributed system architectures?&lt;br /&gt;
# Discuss the structured and unstructured decentralized architectures.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# 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.&lt;br /&gt;
# 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)&lt;br /&gt;
# 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&lt;br /&gt;
# Given the function implemented locally, make it available to be called through RPC from remote process? Use xmlRPC.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the differences between the threads and processes.&lt;br /&gt;
# What is the Race condition?&lt;br /&gt;
# Discuss the ways to protect the shared data from the race condition&lt;br /&gt;
# You're given the worker function that just sleeps for a second and quits, implement the same behavior in a subclass of the Thread.&lt;br /&gt;
# Discuss the RPC and its advantages over using the low-level socket programming?&lt;br /&gt;
# Discuss the decentralized architecture: structured and unstructured p2p systems.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Coordination, consistency, and replication in distributed systems ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Clock synchronization algorithms (NTP, Berkeley)&lt;br /&gt;
* Logical clock (Lamport clocks)&lt;br /&gt;
* Mutual exclusion algorithms: permission-based, token-based&lt;br /&gt;
* Election algorithms: Bully, Ring&lt;br /&gt;
* Consistency models&lt;br /&gt;
* Replica management&lt;br /&gt;
* Consistency protocols&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How NTP protocol works? &lt;br /&gt;
# How Berkeley protocol works?&lt;br /&gt;
# Discuss the mutual exclusion algorithms.&lt;br /&gt;
# Discuss the permanent and server-initiated replicas and their difference&lt;br /&gt;
# Explain the Primary-backup protocol.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Given three machines with drifting clocks, adjust their clocks using Berkeley algorithm.&lt;br /&gt;
# Explain how Bully algorithm for election works&lt;br /&gt;
# Explain how Ring algorithm for election works &lt;br /&gt;
# Explain the centralized (permission-based) method of mutual exclusion&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss NTP and Berkeley protocols for synchronization and explain their key difference&lt;br /&gt;
# Discuss permission-based and token-based solution for mutual exclusion.&lt;br /&gt;
# Discuss content replication: permanent, server-initiated, and client-initiated replicas.&lt;br /&gt;
# Explain the Primary-backup protocol, its advantages and disadvantages.&lt;br /&gt;
&lt;br /&gt;
=== Section 4: Fault tolerance and security in distributed systems ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Intro to fault tolerance: Failure models, Failure masking by redundancy&lt;br /&gt;
* Process resilience: process groups, process replication, consensus in faulty systems, failure detection&lt;br /&gt;
* Reliable group communication: atomic multicast, &lt;br /&gt;
* Distributed commit&lt;br /&gt;
* Recovery: checkpointing&lt;br /&gt;
* Intro to security: threats, design issues, cryptography&lt;br /&gt;
* Secure channels: authentication, message integrity and confidentiality, secure group communication&lt;br /&gt;
* Access control: general issues, firewalls, secure mobile code, denial of service&lt;br /&gt;
* Secure naming&lt;br /&gt;
* Security management: Key management, secure group management, authorization management&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the failure models &lt;br /&gt;
# Discuss different failure masking techniques by redundancy &lt;br /&gt;
# What is k-fault tolerant group?&lt;br /&gt;
# What is general model of failure detection?&lt;br /&gt;
# Explain basic reliable multicasting&lt;br /&gt;
# Explain what is authentication&lt;br /&gt;
# Explain what are message confidentiality and integrity&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Same as above&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Same as above&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:Syllabi_Table&amp;diff=1013</id>
		<title>BSc:Syllabi Table</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:Syllabi_Table&amp;diff=1013"/>
		<updated>2021-10-19T20:21:22Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview of the BS Program =&lt;br /&gt;
&lt;br /&gt;
[https://eduwiki.innopolis.university/index.php/BSc:Syllabi_Index The detailed description of the program can be found here.]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 1, Fall Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Date of the Exam&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToProgrammingI Introduction To Programming I] [https://moodle.innopolis.university/course/view.php?id=800 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/EvgeniiZouev Evgenii Zouev]&lt;br /&gt;
| 07.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:ComputerArchitecture Computer Architecture] [https://moodle.innopolis.university/course/view.php?id=786 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AlexanderTormasov Alexander Tormasov]&lt;br /&gt;
| 09.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:MathematicalAnalysisI Mathematical Analysis I] [https://moodle.innopolis.university/course/view.php?id=801 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/SergeyGorodetsky Sergey Gorodetsky]&lt;br /&gt;
| 13.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AnalyticGeometryAndLinearAlgebraI_new Analytic Geometry And Linear Algebra I] [https://moodle.innopolis.university/course/view.php?id=787 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/MohammedrezaBahrami Mohammedreza Bahrami]&lt;br /&gt;
| 10.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PhilosophyI_Fall_2020 Philosophy I]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AndreyFrolov Andrey Frolov]&amp;lt;br /&amp;gt;[https://eduwiki.innopolis.university/index.php/MirkoFarina Mirko Farina]&lt;br /&gt;
| 15.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:EnglishForAcademicPurposesI English For Academic Purposes I] [https://moodle.innopolis.university/course/view.php?id=866 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
|  &lt;br /&gt;
| 08.12.2021&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 1, Spring Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToProgrammingII Introduction To Programming II] [https://moodle.innopolis.university/course/view.php?id=664 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/EvgeniiZouev Evgenii Zouev]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:DataStructuresAlgorithmsI Data Structures Algorithms I] [https://moodle.innopolis.university/course/view.php?id=671 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AdilKhan Adil Khan]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:MathematicalAnalysisII Mathematical Analysis II] [https://moodle.innopolis.university/course/view.php?id=666 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/SergeyGorodetsky Sergey Gorodetsky]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AnalyticGeometryAndLinearAlgebraII Analytic Geometry And Linear Algebra II] [https://moodle.innopolis.university/course/view.php?id=668 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/YaroslavKholodov Yaroslav Kholodov]&amp;lt;br /&amp;gt;&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TheoreticalComputerScience Theoretical Computer Science] [https://moodle.innopolis.university/course/view.php?id=670 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/ManuelMazzara Manuel Mazzara]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:EnglishForAcademicPurposesII English For Academic Purposes II] [https://moodle.innopolis.university/course/view.php?id=710 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left;&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 2, Fall Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Date of the Exam&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:ProbabilityAndStatistics Probability And Statistics] [https://moodle.innopolis.university/course/view.php?id=789 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/SergeyGorodetsky Sergey Gorodetsky]&lt;br /&gt;
| 14.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PhysicsI Physics I] [https://moodle.innopolis.university/course/view.php?id=790 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/IgorGaponov Igor Gaponov]&lt;br /&gt;
| 13.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SoftwareSystemsDesign Software Systems Design]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/EvgeniiZouev Evgenii Zouev]&lt;br /&gt;
| 10.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:OperatingSystems Operating Systems] [https://moodle.innopolis.university/course/view.php?id=791 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/GiancarloSucci Giancarlo Succi]&lt;br /&gt;
| 08.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:DifferentialEquations_new Differential Equations] [https://moodle.innopolis.university/course/view.php?id=792 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/NikolayShilov Nikolay Shilov]&lt;br /&gt;
| 07.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:History History] [https://moodle.innopolis.university/course/view.php?id=869 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
|&lt;br /&gt;
| 22.12.2021 &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 2, Spring Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PhysicsII Physics II] [https://moodle.innopolis.university/course/view.php?id=672 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/IgorGaponov Igor Gaponov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:Networks Networks] [https://moodle.innopolis.university/course/view.php?id=673 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/RasheedHussain Rasheed Hussain]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:ControlTheory Control Theory] [https://moodle.innopolis.university/course/view.php?id=674 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AlexandrMaloletov Alexandr Maloletov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToArtificialIntelligence Introduction To Artificial Intelligence] [https://moodle.innopolis.university/course/view.php?id=675 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/JosephBrown Joseph Brown]&amp;lt;br /&amp;gt;&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AdvancedDatabases Advanced Databases] [https://moodle.innopolis.university/course/view.php?id=676 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/LuizAraujo Luiz Araujo]&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 3, Fall Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Date of the Exam&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SoftwareSystemsDesign Software Systems Design] [https://moodle.innopolis.university/course/view.php?id=802 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/EvgeniiZouev Evgenii Zouev]&lt;br /&gt;
| 11.10.2021	&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToMachineLearning Introduction To Machine Learning] [https://moodle.innopolis.university/course/view.php?id=803 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AdilKhan Adil Khan]&lt;br /&gt;
| 26.11.2021 &amp;lt;br /&amp;gt; - deadline for submission&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PhilosophyII_Fall_2020 Philosophy II] [https://moodle.innopolis.university/course/view.php?id=795 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/MirkoFarina Mirko Farina]&lt;br /&gt;
| 07.12.2021 &amp;lt;br /&amp;gt; 08.12.2021 &amp;lt;br /&amp;gt; 09.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:Mechatronics Mechatronics] [https://moodle.innopolis.university/course/view.php?id=809 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/IgorGaponov Igor Gaponov]&lt;br /&gt;
| 10.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:ProgrammingParadigms Programming Paradigms] [https://moodle.innopolis.university/course/view.php?id=810 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/NikolayKudasov Nikolay Kudasov]&lt;br /&gt;
| 10.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToBigData Introduction To Big Data] [https://moodle.innopolis.university/course/view.php?id=807 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/LuizAraujo Luiz Araujo]&lt;br /&gt;
| 13.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToRobotics Introduction To Robotics] [https://moodle.innopolis.university/course/view.php?id=808 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AlexanderKlimchik Alexander Klimchik]&lt;br /&gt;
| 15.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SystemAndNetworkAdministration System And Network Administration] [https://moodle.innopolis.university/course/view.php?id=806 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AhsanKazmi Ahsan Kazmi]&lt;br /&gt;
| 15.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TheoreticalMechanics Theoretical Mechanics] [https://moodle.innopolis.university/course/view.php?id=805 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AlexandrMaloletov Alexandr Maloletov] &amp;lt;br /&amp;gt; [https://eduwiki.innopolis.university/index.php/OlegBulichev Oleg Bulichev]&lt;br /&gt;
| 08.10.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:DistributedAndNetworkProgramming Distributed And Network Programming] [https://moodle.innopolis.university/course/view.php?id=804 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/ShinnazarSeytnazarov Shinnazar Seytnazarov]&lt;br /&gt;
| 12.10.2021&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 3, Spring Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SignalsAndSystems Signals and Systems]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/NikolayShilov Nikolay Shilov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:CompilersConstruction Compilers Construction] [https://moodle.innopolis.university/course/view.php?id=515 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/EvgeniiZouev Evgenii Zouev]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:FundamentalsofComputerSecurity Fundamentals of Computer Security]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/ShinnazarSeytnazarov Shinnazar Seytnazarov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:GameTheory Game Theory] [https://moodle.innopolis.university/course/view.php?id=677 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/JosephBrown Joseph Brown]&amp;lt;br /&amp;gt;&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:RoboticSystems Robotic Systems] [https://moodle.innopolis.university/course/view.php?id=714 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/IgorGaponov Igor Gaponov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AdvancedCompilerConstructionAndProgramAnalysis Advanced Compiler Construction And Program Analysis]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/NikolayKudasov Nikolay Kudasov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:InformationRetrieval Information Retrieval] [https://moodle.innopolis.university/course/view.php?id=683 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/StanislavProtasov Stanislav Protasov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:MechanicsAndMachines Mechanics And Machines] [https://moodle.innopolis.university/course/view.php?id=680 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AlexandrMaloletov Alexandr Maloletov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:DataMining Data Mining] [https://moodle.innopolis.university/course/view.php?id=678 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/LuizAraujo Luiz Araujo]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:LeanSoftwareDevelopment Lean Software Development] [https://moodle.innopolis.university/course/view.php?id=681 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/GiancarloSucci Giancarlo Succi]&amp;lt;br /&amp;gt;&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:NaturalLanguageProcessing Natural Language Processing]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/VladimirIvanov Vladimir Ivanov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:NetworkAndCyberSecurity Network And Cyber Security] [https://moodle.innopolis.university/course/view.php?id=679 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/KirillSaltanov Kirill Saltanov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SensorsAndSensing Sensors And Sensing] [https://moodle.innopolis.university/course/view.php?id=684 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/KirillPoletkin Kirill Poletkin]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TechnicalElective Technical Elective 1]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TechnicalElective Technical Elective 2]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 4, Fall Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Date of the Exam&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AcademicResearchandWritingCulture Academic Research and Writing Culture 1] [https://moodle.innopolis.university/course/view.php?id=867 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
|&lt;br /&gt;
| 08.12.2021 &amp;lt;br /&amp;gt; - deadline for submission &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToComputerVision Introduction To Computer Vision] [https://moodle.innopolis.university/course/view.php?id=812 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/ImadBekkouch Imad Bekkouch]&lt;br /&gt;
| 09.10.2021		 &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:DevOpsEngineering DevOps Engineering] [https://moodle.innopolis.university/course/view.php?id=813 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/PaoloCiancarini Paolo Ciancarini]&lt;br /&gt;
| 07.10.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PracticumProjects Practicum Project 1]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PracticumProjects Practicum Project 2]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PracticalMachineLearningDeepLearning Practical Machine Learning And Deep Learning] [https://moodle.innopolis.university/course/view.php?id=811 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/VladimirIvanov Vladimir Ivanov]&lt;br /&gt;
| 16.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SecureSystemDevelopment Secure System Development]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:ProgrammingParadigms Programming Paradigms]  [https://moodle.innopolis.university/course/view.php?id=814 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
|&lt;br /&gt;
| 10.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TechnicalElective Technical Elective 3]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TechnicalElective Technical Elective 4]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 4, Spring Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:HumanAIInteractionDesign Human-AI Interaction Design]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:StatisticalTechniquesForDataScience Statistical Techniques For Data Science] [https://moodle.innopolis.university/course/view.php?id=692 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/VladimirIvanov Vladimir Ivanov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SoftwareQualityandReliability Software Quality And Reliability] [https://moodle.innopolis.university/course/view.php?id=688 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AndreySadovykh Andrey Sadovykh]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AcademicResearchAndWritingCulture Academic Research and Writing Culture 2] [https://moodle.innopolis.university/course/view.php?id=712 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PracticumProjects Practicum Project 3]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
|  &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Thesis - Final&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:History History] [https://moodle.innopolis.university/course/view.php?id=869 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:HumanitiesElectives Humanities Elective 2]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=1012</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=1012"/>
		<updated>2021-10-19T20:11:15Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Introduction to subject, computer networks basics, transport layer protocols, and socket programming&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Multithreaded socket programming, remote procedure calls, and distributed system architecture &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Coordination, consistency, and replication in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Fault tolerance and security in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Introduction to subject, computer networks basics, transport layer protocols, and socket programming ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* General introduction to the course&lt;br /&gt;
* Computer networks basic&lt;br /&gt;
* Socket programming &lt;br /&gt;
* UDP socket programming&lt;br /&gt;
* TCP socket programming&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are the distributed systems? &lt;br /&gt;
# Give an example of distributed systems.&lt;br /&gt;
# What are the advantages of layered architecture?&lt;br /&gt;
# What are the roles of transport protocols?&lt;br /&gt;
# How the TCP and UDP differ from each other? When one is preferred over the other?&lt;br /&gt;
# What is socket programming?&lt;br /&gt;
# How socket programming is different for UDP and TCP?&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Write a simple UDP/TCP client-server echo program&lt;br /&gt;
# Write a simple chatting program using UDP/TCP sockets&lt;br /&gt;
# Given the simple echo server program, apply socket timeouts and catch timeout exceptions&lt;br /&gt;
# Write a UDP-based reliable file transfer protocol&lt;br /&gt;
# Write a program that parallelly executes the CPU-bound tasks using multiple processes&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Describe an advantage of layered architecture?&lt;br /&gt;
# Describe the differences between TCP and UDP protocols?&lt;br /&gt;
# Provide examples when using UDP can be more reasonable than TCP?&lt;br /&gt;
# Describe how UDP and TCP socket programming differ from each other?&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Multithreaded socket programming, RPCs, and distributed system architecture ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Multithreading and multithreaded socket programming&lt;br /&gt;
* Remote procedure calls (RPCs)&lt;br /&gt;
* Distributed system architectures&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How the threads differ from processes? &lt;br /&gt;
# What are the I/O and CPU-bound tasks?&lt;br /&gt;
# For what kind of tasks, using threads is preferred than using processes?&lt;br /&gt;
# What is a remote procedure call?&lt;br /&gt;
# What are some well-known distributed system architectures?&lt;br /&gt;
# Discuss the structured and unstructured decentralized architectures.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# 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.&lt;br /&gt;
# 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)&lt;br /&gt;
# 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&lt;br /&gt;
# Given the function implemented locally, make it available to be called through RPC from remote process? Use xmlRPC.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the differences between the threads and processes.&lt;br /&gt;
# What is the Race condition?&lt;br /&gt;
# Discuss the ways to protect the shared data from the race condition&lt;br /&gt;
# You're given the worker function that just sleeps for a second and quits, implement the same behavior in a subclass of the Thread.&lt;br /&gt;
# Discuss the RPC and its advantages over using the low-level socket programming?&lt;br /&gt;
# Discuss the decentralized architecture: structured and unstructured p2p systems.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Coordination, consistency, and replication in distributed systems ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Clock synchronization algorithms (NTP, Berkeley)&lt;br /&gt;
* Logical clock (Lamport clocks)&lt;br /&gt;
* Mutual exclusion algorithms: permission-based, token-based&lt;br /&gt;
* Election algorithms: Bully, Ring&lt;br /&gt;
* Consistency models&lt;br /&gt;
* Replica management&lt;br /&gt;
* Consistency protocols&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How NTP protocol works? &lt;br /&gt;
# How Berkeley protocol works?&lt;br /&gt;
# Discuss the mutual exclusion algorithms.&lt;br /&gt;
# Discuss the permanent and server-initiated replicas and their difference&lt;br /&gt;
# Explain the Primary-backup protocol.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Given three machines with drifting clocks, adjust their clocks using Berkeley algorithm.&lt;br /&gt;
# Explain how Bully algorithm for election works&lt;br /&gt;
# Explain how Ring algorithm for election works &lt;br /&gt;
# Explain the centralized (permission-based) method of mutual exclusion&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss NTP and Berkeley protocols for synchronization and explain their key difference&lt;br /&gt;
# Discuss permission-based and token-based solution for mutual exclusion.&lt;br /&gt;
# Discuss content replication: permanent, server-initiated, and client-initiated replicas.&lt;br /&gt;
# Explain the Primary-backup protocol, its advantages and disadvantages.&lt;br /&gt;
&lt;br /&gt;
=== Section 4: Fault tolerance and security in distributed systems ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Intro to fault tolerance: Failure models, Failure masking by redundancy&lt;br /&gt;
* Process resilience: process groups, process replication, consensus in faulty systems, failure detection&lt;br /&gt;
* Reliable group communication: atomic multicast, &lt;br /&gt;
* Distributed commit&lt;br /&gt;
* Recovery: checkpointing&lt;br /&gt;
* Intro to security: threats, design issues, cryptography&lt;br /&gt;
* Secure channels: authentication, message integrity and confidentiality, secure group communication&lt;br /&gt;
* Access control: general issues, firewalls, secure mobile code, denial of service&lt;br /&gt;
* Secure naming&lt;br /&gt;
* Security management: Key management, secure group management, authorization management&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the failure models &lt;br /&gt;
# Discuss different failure masking techniques by redundancy &lt;br /&gt;
# What is k-fault tolerant group?&lt;br /&gt;
# What is general model of failure detection?&lt;br /&gt;
# Explain basic reliable multicasting&lt;br /&gt;
# Explain what is authentication&lt;br /&gt;
# Explain what are message confidentiality and integrity&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Same as above&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Same as above&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=1011</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=1011"/>
		<updated>2021-10-19T20:01:15Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Introduction to subject, computer networks basics, transport layer protocols, and socket programming&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Multithreaded socket programming, remote procedure calls, and distributed system architecture &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Coordination, consistency, and replication in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Fault tolerance and security in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Introduction to subject, computer networks basics, transport layer protocols, and socket programming ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* General introduction to the course&lt;br /&gt;
* Computer networks basic&lt;br /&gt;
* Socket programming &lt;br /&gt;
* UDP socket programming&lt;br /&gt;
* TCP socket programming&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are the distributed systems? &lt;br /&gt;
# Give an example of distributed systems.&lt;br /&gt;
# What are the advantages of layered architecture?&lt;br /&gt;
# What are the roles of transport protocols?&lt;br /&gt;
# How the TCP and UDP differ from each other? When one is preferred over the other?&lt;br /&gt;
# What is socket programming?&lt;br /&gt;
# How socket programming is different for UDP and TCP?&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Write a simple UDP/TCP client-server echo program&lt;br /&gt;
# Write a simple chatting program using UDP/TCP sockets&lt;br /&gt;
# Given the simple echo server program, apply socket timeouts and catch timeout exceptions&lt;br /&gt;
# Write a UDP-based reliable file transfer protocol&lt;br /&gt;
# Write a program that parallelly executes the CPU-bound tasks using multiple processes&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Describe an advantage of layered architecture?&lt;br /&gt;
# Describe the differences between TCP and UDP protocols?&lt;br /&gt;
# Provide examples when using UDP can be more reasonable than TCP?&lt;br /&gt;
# Describe how UDP and TCP socket programming differ from each other?&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Multithreaded socket programming, RPCs, and distributed system architecture ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Multithreading and multithreaded socket programming&lt;br /&gt;
* Remote procedure calls (RPCs)&lt;br /&gt;
* Distributed system architectures&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How the threads differ from processes? &lt;br /&gt;
# What are the I/O and CPU-bound tasks?&lt;br /&gt;
# For what kind of tasks, using threads is preferred than using processes?&lt;br /&gt;
# What is a remote procedure call?&lt;br /&gt;
# What are some well-known distributed system architectures?&lt;br /&gt;
# Discuss the structured and unstructured decentralized architectures.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# 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.&lt;br /&gt;
# 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)&lt;br /&gt;
# 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&lt;br /&gt;
# Given the function implemented locally, make it available to be called through RPC from remote process? Use xmlRPC.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the differences between the threads and processes.&lt;br /&gt;
# What is the Race condition?&lt;br /&gt;
# Discuss the ways to protect the shared data from the race condition&lt;br /&gt;
# You're given the worker function that just sleeps for a second and quits, implement the same behavior in a subclass of the Thread.&lt;br /&gt;
# Discuss the RPC and its advantages over using the low-level socket programming?&lt;br /&gt;
# Discuss the decentralized architecture: structured and unstructured p2p systems.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Coordination, consistency, and replication in distributed systems ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Clock synchronization algorithms (NTP, Berkeley)&lt;br /&gt;
* Logical clock (Lamport clocks)&lt;br /&gt;
* Mutual exclusion algorithms: permission-based, token-based&lt;br /&gt;
* Election algorithms: Bully, Ring&lt;br /&gt;
* Consistency models&lt;br /&gt;
* Replica management&lt;br /&gt;
* Consistency protocols&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How NTP protocol works? &lt;br /&gt;
# How Berkeley protocol works?&lt;br /&gt;
# Discuss the mutual exclusion algorithms.&lt;br /&gt;
# Discuss the permanent and server-initiated replicas and their difference&lt;br /&gt;
# Explain the Primary-backup protocol.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Given three machines with drifting clocks, adjust their clocks using Berkeley algorithm.&lt;br /&gt;
# Explain how Bully algorithm for election works&lt;br /&gt;
# Explain how Ring algorithm for election works &lt;br /&gt;
# Explain the centralized (permission-based) method of mutual exclusion&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss NTP and Berkeley protocols for synchronization and explain their key difference&lt;br /&gt;
# Discuss permission-based and token-based solution for mutual exclusion.&lt;br /&gt;
# Discuss content replication: permanent, server-initiated, and client-initiated replicas.&lt;br /&gt;
# Explain the Primary-backup protocol, its advantages and disadvantages.&lt;br /&gt;
&lt;br /&gt;
=== Section 4: Fault tolerance and security in distributed systems ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Intro to fault tolerance: Failure models, Failure masking by redundancy&lt;br /&gt;
* Process resilience: process groups, process replication, consensus in faulty systems, failure detection&lt;br /&gt;
* Reliable group communication: atomic multicast, &lt;br /&gt;
* Distributed commit&lt;br /&gt;
* Recovery: checkpointing&lt;br /&gt;
* Intro to security: threats, design issues, cryptography&lt;br /&gt;
* Secure channels: authentication, message integrity and confidentiality, secure group communication&lt;br /&gt;
* Access control: general issues, firewalls, secure mobile code, denial of service&lt;br /&gt;
* Secure naming&lt;br /&gt;
* Security management: Key management, secure group management, authorization management&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the failure models &lt;br /&gt;
# Discuss different failure masking techniques by redundancy &lt;br /&gt;
# What is k-fault tolerant group?&lt;br /&gt;
# What is general model of failure detection?&lt;br /&gt;
# Explain basic reliable multicasting&lt;br /&gt;
# Explain what is authentication&lt;br /&gt;
# Explain what are message confidentiality and integrity&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Given three machines with drifting clocks, adjust their clocks using Berkeley algorithm.&lt;br /&gt;
# Explain how Bully algorithm for election works&lt;br /&gt;
# Explain how Ring algorithm for election works &lt;br /&gt;
# Explain the centralized (permission-based) method of mutual exclusion&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss NTP and Berkeley protocols for synchronization and explain their key difference&lt;br /&gt;
# Discuss permission-based and token-based solution for mutual exclusion.&lt;br /&gt;
# Discuss content replication: permanent, server-initiated, and client-initiated replicas.&lt;br /&gt;
# Explain the Primary-backup protocol, its advantages and disadvantages.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:Syllabi_Table&amp;diff=1010</id>
		<title>BSc:Syllabi Table</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:Syllabi_Table&amp;diff=1010"/>
		<updated>2021-10-19T19:54:29Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview of the BS Program =&lt;br /&gt;
&lt;br /&gt;
[https://eduwiki.innopolis.university/index.php/BSc:Syllabi_Index The detailed description of the program can be found here.]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 1, Fall Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Date of the Exam&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToProgrammingI Introduction To Programming I] [https://moodle.innopolis.university/course/view.php?id=800 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/EvgeniiZouev Evgenii Zouev]&lt;br /&gt;
| 07.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:ComputerArchitecture Computer Architecture] [https://moodle.innopolis.university/course/view.php?id=786 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AlexanderTormasov Alexander Tormasov]&lt;br /&gt;
| 09.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:MathematicalAnalysisI Mathematical Analysis I] [https://moodle.innopolis.university/course/view.php?id=801 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/SergeyGorodetsky Sergey Gorodetsky]&lt;br /&gt;
| 13.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AnalyticGeometryAndLinearAlgebraI_new Analytic Geometry And Linear Algebra I] [https://moodle.innopolis.university/course/view.php?id=787 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/MohammedrezaBahrami Mohammedreza Bahrami]&lt;br /&gt;
| 10.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PhilosophyI_Fall_2020 Philosophy I]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AndreyFrolov Andrey Frolov]&amp;lt;br /&amp;gt;[https://eduwiki.innopolis.university/index.php/MirkoFarina Mirko Farina]&lt;br /&gt;
| 15.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:EnglishForAcademicPurposesI English For Academic Purposes I] [https://moodle.innopolis.university/course/view.php?id=866 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
|  &lt;br /&gt;
| 08.12.2021&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 1, Spring Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToProgrammingII Introduction To Programming II] [https://moodle.innopolis.university/course/view.php?id=664 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/EvgeniiZouev Evgenii Zouev]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:DataStructuresAlgorithmsI Data Structures Algorithms I] [https://moodle.innopolis.university/course/view.php?id=671 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AdilKhan Adil Khan]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:MathematicalAnalysisII Mathematical Analysis II] [https://moodle.innopolis.university/course/view.php?id=666 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/SergeyGorodetsky Sergey Gorodetsky]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AnalyticGeometryAndLinearAlgebraII Analytic Geometry And Linear Algebra II] [https://moodle.innopolis.university/course/view.php?id=668 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/YaroslavKholodov Yaroslav Kholodov]&amp;lt;br /&amp;gt;&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TheoreticalComputerScience Theoretical Computer Science] [https://moodle.innopolis.university/course/view.php?id=670 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/ManuelMazzara Manuel Mazzara]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:EnglishForAcademicPurposesII English For Academic Purposes II] [https://moodle.innopolis.university/course/view.php?id=710 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left;&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 2, Fall Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Date of the Exam&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:ProbabilityAndStatistics Probability And Statistics] [https://moodle.innopolis.university/course/view.php?id=789 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/SergeyGorodetsky Sergey Gorodetsky]&lt;br /&gt;
| 14.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PhysicsI Physics I] [https://moodle.innopolis.university/course/view.php?id=790 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/IgorGaponov Igor Gaponov]&lt;br /&gt;
| 13.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SoftwareSystemsDesign Software Systems Design]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/EvgeniiZouev Evgenii Zouev]&lt;br /&gt;
| 10.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:OperatingSystems Operating Systems] [https://moodle.innopolis.university/course/view.php?id=791 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/GiancarloSucci Giancarlo Succi]&lt;br /&gt;
| 08.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:DifferentialEquations_new Differential Equations] [https://moodle.innopolis.university/course/view.php?id=792 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/NikolayShilov Nikolay Shilov]&lt;br /&gt;
| 07.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:History History] [https://moodle.innopolis.university/course/view.php?id=869 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
|&lt;br /&gt;
| 22.12.2021 &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 2, Spring Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PhysicsII Physics II] [https://moodle.innopolis.university/course/view.php?id=672 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/IgorGaponov Igor Gaponov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:Networks Networks] [https://moodle.innopolis.university/course/view.php?id=673 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/RasheedHussain Rasheed Hussain]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:ControlTheory Control Theory] [https://moodle.innopolis.university/course/view.php?id=674 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AlexandrMaloletov Alexandr Maloletov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToArtificialIntelligence Introduction To Artificial Intelligence] [https://moodle.innopolis.university/course/view.php?id=675 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/JosephBrown Joseph Brown]&amp;lt;br /&amp;gt;&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B; text-align:left;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AdvancedDatabases Advanced Databases] [https://moodle.innopolis.university/course/view.php?id=676 (Moodle)]&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/LuizAraujo Luiz Araujo]&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 3, Fall Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Date of the Exam&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SoftwareSystemsDesign Software Systems Design] [https://moodle.innopolis.university/course/view.php?id=802 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/EvgeniiZouev Evgenii Zouev]&lt;br /&gt;
| 11.10.2021	&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToMachineLearning Introduction To Machine Learning] [https://moodle.innopolis.university/course/view.php?id=803 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AdilKhan Adil Khan]&lt;br /&gt;
| 26.11.2021 &amp;lt;br /&amp;gt; - deadline for submission&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PhilosophyII_Fall_2020 Philosophy II] [https://moodle.innopolis.university/course/view.php?id=795 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/MirkoFarina Mirko Farina]&lt;br /&gt;
| 07.12.2021 &amp;lt;br /&amp;gt; 08.12.2021 &amp;lt;br /&amp;gt; 09.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:Mechatronics Mechatronics] [https://moodle.innopolis.university/course/view.php?id=809 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/IgorGaponov Igor Gaponov]&lt;br /&gt;
| 10.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:ProgrammingParadigms Programming Paradigms] [https://moodle.innopolis.university/course/view.php?id=810 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/NikolayKudasov Nikolay Kudasov]&lt;br /&gt;
| 10.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToBigData Introduction To Big Data] [https://moodle.innopolis.university/course/view.php?id=807 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/LuizAraujo Luiz Araujo]&lt;br /&gt;
| 13.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToRobotics Introduction To Robotics] [https://moodle.innopolis.university/course/view.php?id=808 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AlexanderKlimchik Alexander Klimchik]&lt;br /&gt;
| 15.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SystemAndNetworkAdministration System And Network Administration] [https://moodle.innopolis.university/course/view.php?id=806 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AhsanKazmi Ahsan Kazmi]&lt;br /&gt;
| 15.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TheoreticalMechanics Theoretical Mechanics] [https://moodle.innopolis.university/course/view.php?id=805 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AlexandrMaloletov Alexandr Maloletov] &amp;lt;br /&amp;gt; [https://eduwiki.innopolis.university/index.php/OlegBulichev Oleg Bulichev]&lt;br /&gt;
| 08.10.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:DistributedAndNetworkProgramming Distributed And Network Programming] [https://moodle.innopolis.university/course/view.php?id=804 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/ShinnazarSeytnazarov Shinnazar Seytnazarov]&lt;br /&gt;
| 12.10.2021&lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 3, Spring Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SignalsAndSystems Signals and Systems]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/NikolayShilov Nikolay Shilov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:CompilersConstruction Compilers Construction] [https://moodle.innopolis.university/course/view.php?id=515 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/EvgeniiZouev Evgenii Zouev]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:FundamentalofInformationSecurity Fundamental of Information Security]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AlmaOracevic Alma Oracevic]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:GameTheory Game Theory] [https://moodle.innopolis.university/course/view.php?id=677 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/JosephBrown Joseph Brown]&amp;lt;br /&amp;gt;&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:RoboticSystems Robotic Systems] [https://moodle.innopolis.university/course/view.php?id=714 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/IgorGaponov Igor Gaponov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AdvancedCompilerConstructionAndProgramAnalysis Advanced Compiler Construction And Program Analysis]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/NikolayKudasov Nikolay Kudasov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:InformationRetrieval Information Retrieval] [https://moodle.innopolis.university/course/view.php?id=683 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/StanislavProtasov Stanislav Protasov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:MechanicsAndMachines Mechanics And Machines] [https://moodle.innopolis.university/course/view.php?id=680 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AlexandrMaloletov Alexandr Maloletov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:DataMining Data Mining] [https://moodle.innopolis.university/course/view.php?id=678 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/LuizAraujo Luiz Araujo]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:LeanSoftwareDevelopment Lean Software Development] [https://moodle.innopolis.university/course/view.php?id=681 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/GiancarloSucci Giancarlo Succi]&amp;lt;br /&amp;gt;&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:NaturalLanguageProcessing Natural Language Processing]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/VladimirIvanov Vladimir Ivanov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:NetworkAndCyberSecurity Network And Cyber Security] [https://moodle.innopolis.university/course/view.php?id=679 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/KirillSaltanov Kirill Saltanov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SensorsAndSensing Sensors And Sensing] [https://moodle.innopolis.university/course/view.php?id=684 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/KirillPoletkin Kirill Poletkin]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TechnicalElective Technical Elective 1]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TechnicalElective Technical Elective 2]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 4, Fall Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Date of the Exam&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AcademicResearchandWritingCulture Academic Research and Writing Culture 1] [https://moodle.innopolis.university/course/view.php?id=867 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
|&lt;br /&gt;
| 08.12.2021 &amp;lt;br /&amp;gt; - deadline for submission &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:IntroductionToComputerVision Introduction To Computer Vision] [https://moodle.innopolis.university/course/view.php?id=812 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/ImadBekkouch Imad Bekkouch]&lt;br /&gt;
| 09.10.2021		 &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:DevOpsEngineering DevOps Engineering] [https://moodle.innopolis.university/course/view.php?id=813 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/PaoloCiancarini Paolo Ciancarini]&lt;br /&gt;
| 07.10.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PracticumProjects Practicum Project 1]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PracticumProjects Practicum Project 2]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PracticalMachineLearningDeepLearning Practical Machine Learning And Deep Learning] [https://moodle.innopolis.university/course/view.php?id=811 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/VladimirIvanov Vladimir Ivanov]&lt;br /&gt;
| 16.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SecureSystemDevelopment Secure System Development]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:ProgrammingParadigms Programming Paradigms]  [https://moodle.innopolis.university/course/view.php?id=814 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
|&lt;br /&gt;
| 10.12.2021&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TechnicalElective Technical Elective 3]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:TechnicalElective Technical Elective 4]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;vertical-align:middle; background-color:#EAECF0; color:#202122;&amp;quot; | Year 4, Spring Semester&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Subject&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | DS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | CS&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | R&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | SD&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | AAI&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;  text-align:center;&amp;quot; | Instructor(s)&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:HumanAIInteractionDesign Human-AI Interaction Design]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:StatisticalTechniquesForDataScience Statistical Techniques For Data Science] [https://moodle.innopolis.university/course/view.php?id=692 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/VladimirIvanov Vladimir Ivanov]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:SoftwareQualityandReliability Software Quality And Reliability] [https://moodle.innopolis.university/course/view.php?id=688 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | No&lt;br /&gt;
| [https://eduwiki.innopolis.university/index.php/AndreySadovykh Andrey Sadovykh]&lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:AcademicResearchAndWritingCulture Academic Research and Writing Culture 2] [https://moodle.innopolis.university/course/view.php?id=712 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:PracticumProjects Practicum Project 3]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
|  &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Thesis - Final&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:History History] [https://moodle.innopolis.university/course/view.php?id=869 (Moodle)]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|- style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#F8F9FA; color:#36B;&amp;quot; | [https://eduwiki.innopolis.university/index.php/BSc:HumanitiesElectives Humanities Elective 2]&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;vertical-align:middle; background-color:#F8F9FA; color:#202122;&amp;quot; | Yes&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=855</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=855"/>
		<updated>2021-10-01T14:06:41Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Introduction to subject, computer networks basics, transport layer protocols, and socket programming&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Multithreaded socket programming, remote procedure calls, and distributed system architecture &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Coordination, consistency, and replication in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Fault tolerance and security in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Introduction to subject, computer networks basics, transport layer protocols, and socket programming ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* General introduction to the course&lt;br /&gt;
* Computer networks basic&lt;br /&gt;
* Socket programming &lt;br /&gt;
* UDP socket programming&lt;br /&gt;
* TCP socket programming&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are the distributed systems? &lt;br /&gt;
# Give an example of distributed systems.&lt;br /&gt;
# What are the advantages of layered architecture?&lt;br /&gt;
# What are the roles of transport protocols?&lt;br /&gt;
# How the TCP and UDP differ from each other? When one is preferred over the other?&lt;br /&gt;
# What is socket programming?&lt;br /&gt;
# How socket programming is different for UDP and TCP?&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Write a simple UDP/TCP client-server echo program&lt;br /&gt;
# Write a simple chatting program using UDP/TCP sockets&lt;br /&gt;
# Given the simple echo server program, apply socket timeouts and catch timeout exceptions&lt;br /&gt;
# Write a UDP-based reliable file transfer protocol&lt;br /&gt;
# Write a program that parallelly executes the CPU-bound tasks using multiple processes&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Describe an advantage of layered architecture?&lt;br /&gt;
# Describe the differences between TCP and UDP protocols?&lt;br /&gt;
# Provide examples when using UDP can be more reasonable than TCP?&lt;br /&gt;
# Describe how UDP and TCP socket programming differ from each other?&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Multithreaded socket programming, RPCs, and distributed system architecture ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Multithreading and multithreaded socket programming&lt;br /&gt;
* Remote procedure calls (RPCs)&lt;br /&gt;
* Distributed system architectures&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How the threads differ from processes? &lt;br /&gt;
# What are the I/O and CPU-bound tasks?&lt;br /&gt;
# For what kind of tasks, using threads is preferred than using processes?&lt;br /&gt;
# What is a remote procedure call?&lt;br /&gt;
# What are some well-known distributed system architectures?&lt;br /&gt;
# Discuss the structured and unstructured decentralized architectures.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# 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.&lt;br /&gt;
# 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)&lt;br /&gt;
# 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&lt;br /&gt;
# Given the function implemented locally, make it available to be called through RPC from remote process? Use xmlRPC.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the differences between the threads and processes.&lt;br /&gt;
# What is the Race condition?&lt;br /&gt;
# Discuss the ways to protect the shared data from the race condition&lt;br /&gt;
# You're given the worker function that just sleeps for a second and quits, implement the same behavior in a subclass of the Thread.&lt;br /&gt;
# Discuss the RPC and its advantages over using the low-level socket programming?&lt;br /&gt;
# Discuss the decentralized architecture: structured and unstructured p2p systems.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Coordination, consistency, and replication in distributed systems ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Clock synchronization algorithms (NTP, Berkeley)&lt;br /&gt;
* Logical clock (Lamport clocks)&lt;br /&gt;
* Mutual exclusion algorithms: permission-based, token-based&lt;br /&gt;
* Election algorithms: Bully, Ring&lt;br /&gt;
* Consistency models&lt;br /&gt;
* Replica management&lt;br /&gt;
* Consistency protocols&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How NTP protocol works? &lt;br /&gt;
# How Berkeley protocol works?&lt;br /&gt;
# Discuss the mutual exclusion algorithms.&lt;br /&gt;
# Discuss the permanent and server-initiated replicas and their difference&lt;br /&gt;
# Explain the Primary-backup protocol.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Given three machines with drifting clocks, adjust their clocks using Berkeley algorithm.&lt;br /&gt;
# Explain how Bully algorithm for election works&lt;br /&gt;
# Explain how Ring algorithm for election works &lt;br /&gt;
# Explain the centralized (permission-based) method of mutual exclusion&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss NTP and Berkeley protocols for synchronization and explain their key difference&lt;br /&gt;
# Discuss permission-based and token-based solution for mutual exclusion.&lt;br /&gt;
# Discuss content replication: permanent, server-initiated, and client-initiated replicas.&lt;br /&gt;
# Explain the Primary-backup protocol, its advantages and disadvantages.&lt;br /&gt;
&lt;br /&gt;
=== Section 4: Fault tolerance and security in distributed systems ===&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Intro to fault tolerance: Failure models, Failure masking by redundancy&lt;br /&gt;
* Process resilience: process groups, process replication, consensus in faulty systems, failure detection&lt;br /&gt;
* Reliable group communication: atomic multicast, &lt;br /&gt;
* Distributed commit&lt;br /&gt;
* Recovery: checkpointing&lt;br /&gt;
* Intro to security: threats, design issues, cryptography&lt;br /&gt;
* Secure channels: authentication, message integrity and confidentiality, secure group communication&lt;br /&gt;
* Access control: general issues, firewalls, secure mobile code, denial of service&lt;br /&gt;
* Secure naming&lt;br /&gt;
* Security management: Key management, secure group management, authorization management&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the failure models &lt;br /&gt;
# Discuss different failure masking techniques by redundancy &lt;br /&gt;
# What is k-fault tolerant group?&lt;br /&gt;
# What is general model of failure detection?&lt;br /&gt;
# Explain basic reliable multicasting&lt;br /&gt;
# Explain what is authentication&lt;br /&gt;
# Explain what are message confidentiality and integrity&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Given three machines with drifting clocks, adjust their clocks using Berkeley algorithm.&lt;br /&gt;
# Explain how Bully algorithm for election works&lt;br /&gt;
# Explain how Ring algorithm for election works &lt;br /&gt;
# Explain the centralized (permission-based) method of mutual exclusion&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss NTP and Berkeley protocols for synchronization and explain their key difference&lt;br /&gt;
# Discuss permission-based and token-based solution for mutual exclusion.&lt;br /&gt;
# Discuss content replication: permanent, server-initiated, and client-initiated replicas.&lt;br /&gt;
# Explain the Primary-backup protocol, its advantages and disadvantages.&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=770</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=770"/>
		<updated>2021-09-24T19:29:47Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Introduction to subject, computer networks basics, transport layer protocols, and socket programming&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Multithreaded socket programming, remote procedure calls, and distributed system architecture &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Coordination, consistency, and replication in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Fault tolerance and security in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Introduction to subject, computer networks basics, transport layer protocols, and socket programming ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* General introduction to the course&lt;br /&gt;
* Computer networks basic&lt;br /&gt;
* Socket programming &lt;br /&gt;
* UDP socket programming&lt;br /&gt;
* TCP socket programming&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are the distributed systems? &lt;br /&gt;
# Give an example of distributed systems.&lt;br /&gt;
# What are the advantages of layered architecture?&lt;br /&gt;
# What are the roles of transport protocols?&lt;br /&gt;
# How the TCP and UDP differ from each other? When one is preferred over the other?&lt;br /&gt;
# What is socket programming?&lt;br /&gt;
# How socket programming is different for UDP and TCP?&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Write a simple UDP/TCP client-server echo program&lt;br /&gt;
# Write a simple chatting program using UDP/TCP sockets&lt;br /&gt;
# Given the simple echo server program, apply socket timeouts and catch timeout exceptions&lt;br /&gt;
# Write a UDP-based reliable file transfer protocol&lt;br /&gt;
# Write a program that parallelly executes the CPU-bound tasks using multiple processes&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Describe an advantage of layered architecture?&lt;br /&gt;
# Describe the differences between TCP and UDP protocols?&lt;br /&gt;
# Provide examples when using UDP can be more reasonable than TCP?&lt;br /&gt;
# Describe how UDP and TCP socket programming differ from each other?&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Multithreaded socket programming, RPCs, and distributed system architecture ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Multithreading and multithreaded socket programming&lt;br /&gt;
* Remote procedure calls (RPCs)&lt;br /&gt;
* Distributed system architectures&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How the threads differ from processes? &lt;br /&gt;
# What are the I/O and CPU-bound tasks?&lt;br /&gt;
# For what kind of tasks, using threads is preferred than using processes?&lt;br /&gt;
# What is a remote procedure call?&lt;br /&gt;
# What are some well-known distributed system architectures?&lt;br /&gt;
# Discuss the structured and unstructured decentralized architectures.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# 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.&lt;br /&gt;
# 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)&lt;br /&gt;
# 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&lt;br /&gt;
# Given the function implemented locally, make it available to be called through RPC from remote process? Use xmlRPC.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the differences between the threads and processes.&lt;br /&gt;
# What is the Race condition?&lt;br /&gt;
# Discuss the ways to protect the shared data from the race condition&lt;br /&gt;
# You're given the worker function that just sleeps for a second and quits, implement the same behavior in a subclass of the Thread.&lt;br /&gt;
# Discuss the RPC and its advantages over using the low-level socket programming?&lt;br /&gt;
# Discuss the decentralized architecture: structured and unstructured p2p systems.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Coordination, consistency, and replication in distributed systems ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Clock synchronization algorithms (NTP, Berkeley)&lt;br /&gt;
* Logical clock (Lamport clocks)&lt;br /&gt;
* Mutual exclusion algorithms: permission-based, token-based&lt;br /&gt;
* Election algorithms: Bully, Ring&lt;br /&gt;
* Consistency models&lt;br /&gt;
* Replica management&lt;br /&gt;
* Consistency protocols&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How NTP protocol works? &lt;br /&gt;
# How Berkeley protocol works?&lt;br /&gt;
# Discuss the mutual exclusion algorithms.&lt;br /&gt;
# Discuss the permanent and server-initiated replicas and their difference&lt;br /&gt;
# Explain the Primary-backup protocol.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Given three machines with drifting clocks, adjust their clocks using Berkeley algorithm.&lt;br /&gt;
# Explain how Bully algorithm for election works&lt;br /&gt;
# Explain how Ring algorithm for election works &lt;br /&gt;
# Explain the centralized (permission-based) method of mutual exclusion&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss NTP and Berkeley protocols for synchronization and explain their key difference&lt;br /&gt;
# Discuss permission-based and token-based solution for mutual exclusion.&lt;br /&gt;
# Discuss content replication: permanent, server-initiated, and client-initiated replicas.&lt;br /&gt;
# Explain the Primary-backup protocol, its advantages and disadvantages.&lt;br /&gt;
&lt;br /&gt;
=== Section 4: Fault tolerance and security in distributed systems ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Clock synchronization algorithms (NTP, Berkeley)&lt;br /&gt;
* Logical clock (Lamport clocks)&lt;br /&gt;
* Mutual exclusion algorithms: permission-based, token-based&lt;br /&gt;
* Election algorithms: Bully, Ring&lt;br /&gt;
* Consistency models&lt;br /&gt;
* Replica management&lt;br /&gt;
* Consistency protocols&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How NTP protocol works? &lt;br /&gt;
# How Berkeley protocol works?&lt;br /&gt;
# Discuss the mutual exclusion algorithms.&lt;br /&gt;
# Discuss the permanent and server-initiated replicas and their difference&lt;br /&gt;
# Explain the Primary-backup protocol.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Given three machines with drifting clocks, adjust their clocks using Berkeley algorithm.&lt;br /&gt;
# Explain how Bully algorithm for election works&lt;br /&gt;
# Explain how Ring algorithm for election works &lt;br /&gt;
# Explain the centralized (permission-based) method of mutual exclusion&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss NTP and Berkeley protocols for synchronization and explain their key difference&lt;br /&gt;
# Discuss permission-based and token-based solution for mutual exclusion.&lt;br /&gt;
# Discuss content replication: permanent, server-initiated, and client-initiated replicas.&lt;br /&gt;
# Explain the Primary-backup protocol, its advantages and disadvantages.&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=769</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=769"/>
		<updated>2021-09-24T18:28:45Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Introduction to subject, computer networks basics, transport layer protocols, and socket programming&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Multithreaded socket programming, remote procedure calls, and distributed system architecture &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Coordination, consistency, and replication in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Fault tolerance and security in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Introduction to subject, computer networks basics, transport layer protocols, and socket programming ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* General introduction to the course&lt;br /&gt;
* Computer networks basic&lt;br /&gt;
* Socket programming &lt;br /&gt;
* UDP socket programming&lt;br /&gt;
* TCP socket programming&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are the distributed systems? &lt;br /&gt;
# Give an example of distributed systems.&lt;br /&gt;
# What are the advantages of layered architecture?&lt;br /&gt;
# What are the roles of transport protocols?&lt;br /&gt;
# How the TCP and UDP differ from each other? When one is preferred over the other?&lt;br /&gt;
# What is socket programming?&lt;br /&gt;
# How socket programming is different for UDP and TCP?&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Write a simple UDP/TCP client-server echo program&lt;br /&gt;
# Write a simple chatting program using UDP/TCP sockets&lt;br /&gt;
# Given the simple echo server program, apply socket timeouts and catch timeout exceptions&lt;br /&gt;
# Write a UDP-based reliable file transfer protocol&lt;br /&gt;
# Write a program that parallelly executes the CPU-bound tasks using multiple processes&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Describe an advantage of layered architecture?&lt;br /&gt;
# Describe the differences between TCP and UDP protocols?&lt;br /&gt;
# Provide examples when using UDP can be more reasonable than TCP?&lt;br /&gt;
# Describe how UDP and TCP socket programming differ from each other?&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Multithreaded socket programming, RPCs, and distributed system architecture ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Multithreading and multithreaded socket programming&lt;br /&gt;
* Remote procedure calls (RPCs)&lt;br /&gt;
* Distributed system architectures&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How the threads differ from processes? &lt;br /&gt;
# What are the I/O and CPU-bound tasks?&lt;br /&gt;
# For what kind of tasks, using threads is preferred than using processes?&lt;br /&gt;
# What is a remote procedure call?&lt;br /&gt;
# What are some well-known distributed system architectures?&lt;br /&gt;
# Discuss the structured and unstructured decentralized architectures.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# 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.&lt;br /&gt;
# 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)&lt;br /&gt;
# 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&lt;br /&gt;
# Given the function implemented locally, make it available to be called through RPC from remote process? Use xmlRPC.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the differences between the threads and processes.&lt;br /&gt;
# What is the Race condition?&lt;br /&gt;
# Discuss the ways to protect the shared data from the race condition&lt;br /&gt;
# You're given the worker function that just sleeps for a second and quits, implement the same behavior in a subclass of the Thread.&lt;br /&gt;
# Discuss the RPC and its advantages over using the low-level socket programming?&lt;br /&gt;
# Discuss the decentralized architecture: structured and unstructured p2p systems.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Coordination, consistency, and replication in distributed systems ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Clock synchronization algorithms (NTP, Berkeley)&lt;br /&gt;
* Logical clock (Lamport clocks)&lt;br /&gt;
* Mutual exclusion algorithms: permission-based, token-based&lt;br /&gt;
* Election algorithms: Bully, Ring&lt;br /&gt;
* Consistency models&lt;br /&gt;
* Replica management&lt;br /&gt;
* Consistency protocols&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How NTP protocol works? &lt;br /&gt;
# How Berkeley protocol works?&lt;br /&gt;
# Discuss the mutual exclusion algorithms.&lt;br /&gt;
# Discuss the permanent and server-initiated replicas and their difference&lt;br /&gt;
# Explain the Primary-backup protocol.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the differences between the threads and processes.&lt;br /&gt;
# What is the Race condition?&lt;br /&gt;
# Discuss the ways to protect the shared data from the race condition&lt;br /&gt;
# You're given the worker function that just sleeps for a second and quits, implement the same behavior in a subclass of the Thread.&lt;br /&gt;
# Discuss the RPC and its advantages over using the low-level socket programming?&lt;br /&gt;
# Discuss the decentralized architecture: structured and unstructured p2p systems.&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=738</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=738"/>
		<updated>2021-09-22T12:33:29Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Introduction to subject, computer networks basics, transport layer protocols, and socket programming&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Multithreaded socket programming, remote procedure calls, and distributed system architecture &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Coordination, consistency, and replication in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Fault tolerance and security in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1: Introduction to subject, computer networks basics, transport layer protocols, and socket programming ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* General introduction to the course&lt;br /&gt;
* Computer networks basic&lt;br /&gt;
* Socket programming &lt;br /&gt;
* UDP socket programming&lt;br /&gt;
* TCP socket programming&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are the distributed systems? &lt;br /&gt;
# Give an example of distributed systems.&lt;br /&gt;
# What are the advantages of layered architecture?&lt;br /&gt;
# What are the roles of transport protocols?&lt;br /&gt;
# How the TCP and UDP differ from each other? When one is preferred over the other?&lt;br /&gt;
# What is socket programming?&lt;br /&gt;
# How socket programming is different for UDP and TCP?&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Write a simple UDP/TCP client-server echo program&lt;br /&gt;
# Write a simple chatting program using UDP/TCP sockets&lt;br /&gt;
# Given the simple echo server program, apply socket timeouts and catch timeout exceptions&lt;br /&gt;
# Write a UDP-based reliable file transfer protocol&lt;br /&gt;
# Write a program that parallelly executes the CPU-bound tasks using multiple processes&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Describe an advantage of layered architecture?&lt;br /&gt;
# Describe the differences between TCP and UDP protocols?&lt;br /&gt;
# Provide examples when using UDP can be more reasonable than TCP?&lt;br /&gt;
# Describe how UDP and TCP socket programming differ from each other?&lt;br /&gt;
&lt;br /&gt;
=== Section 2: Multithreaded socket programming, RPCs, and distributed system architecture ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Multithreading and multithreaded socket programming&lt;br /&gt;
* Remote procedure calls (RPCs)&lt;br /&gt;
* Distributed system architectures&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How the threads differ from processes? &lt;br /&gt;
# What are the I/O and CPU-bound tasks?&lt;br /&gt;
# For what kind of tasks, using threads is preferred than using processes?&lt;br /&gt;
# What is a remote procedure call?&lt;br /&gt;
# What are some well-known distributed system architectures?&lt;br /&gt;
# Discuss the structured and unstructured decentralized architectures.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# 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.&lt;br /&gt;
# 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)&lt;br /&gt;
# 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&lt;br /&gt;
# Given the function implemented locally, make it available to be called through RPC from remote process? Use xmlRPC.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the differences between the threads and processes.&lt;br /&gt;
# What is the Race condition?&lt;br /&gt;
# Discuss the ways to protect the shared data from the race condition&lt;br /&gt;
# You're given the worker function that just sleeps for a second and quits, implement the same behavior in a subclass of the Thread.&lt;br /&gt;
# Discuss the RPC and its advantages over using the low-level socket programming?&lt;br /&gt;
# Discuss the decentralized architecture: structured and unstructured p2p systems.&lt;br /&gt;
&lt;br /&gt;
=== Section 3: Coordination, consistency, and replication in distributed systems ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Clock synchronization algorithms (NTP, Berkeley)&lt;br /&gt;
* Logical clock (Lamport clocks)&lt;br /&gt;
* Mutual exclusion algorithms: permission-based, token-based&lt;br /&gt;
* Election algorithms: Bully, Ring&lt;br /&gt;
* Data consistency models&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How the threads differ from processes? &lt;br /&gt;
# What are the I/O and CPU-bound tasks?&lt;br /&gt;
# For what kind of tasks, using threads is preferred than using processes?&lt;br /&gt;
# What is a remote procedure call?&lt;br /&gt;
# What are some well-known distributed system architectures?&lt;br /&gt;
# Discuss the structured and unstructured decentralized architectures.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# 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.&lt;br /&gt;
# 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)&lt;br /&gt;
# 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&lt;br /&gt;
# What are the advantages of using RPC over using the low-level socket programming?&lt;br /&gt;
# Discuss the p2p architectures, how structured ones differ from unstructured ones?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the differences between the threads and processes.&lt;br /&gt;
# What is the Race condition?&lt;br /&gt;
# Discuss the ways to protect the shared data from the race condition&lt;br /&gt;
# You're given the worker function that just sleeps for a second and quits, implement the same behavior in a subclass of the Thread.&lt;br /&gt;
# Discuss the RPC and its advantages over using the low-level socket programming?&lt;br /&gt;
# Discuss the decentralized architecture: structured and unstructured p2p systems.&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=737</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=737"/>
		<updated>2021-09-22T11:16:35Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Introduction to subject, computer networks basics, transport layer protocols, and socket programming&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Multithreaded socket programming, remote procedure calls, and distributed system architecture &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Coordination, consistency, and replication in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Fault tolerance and security in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1 ===&lt;br /&gt;
&lt;br /&gt;
==== Section title: Introduction to subject, computer networks basics, transport layer protocols, and socket programming ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* General introduction to the course&lt;br /&gt;
* Computer networks basic&lt;br /&gt;
* Socket programming &lt;br /&gt;
* UDP socket programming&lt;br /&gt;
* TCP socket programming&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are the distributed systems? &lt;br /&gt;
# Give an example of distributed systems.&lt;br /&gt;
# What are the advantages of layered architecture?&lt;br /&gt;
# What are the roles of transport protocols?&lt;br /&gt;
# How the TCP and UDP differ from each other? When one is preferred over the other?&lt;br /&gt;
# What is socket programming?&lt;br /&gt;
# How socket programming is different for UDP and TCP?&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Write a simple UDP/TCP client-server echo program&lt;br /&gt;
# Write a simple chatting program using UDP/TCP sockets&lt;br /&gt;
# Given the simple echo server program, apply socket timeouts and catch timeout exceptions&lt;br /&gt;
# Write a UDP-based reliable file transfer protocol&lt;br /&gt;
# Write a program that parallelly executes the CPU-bound tasks using multiple processes&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Describe an advantage of layered architecture?&lt;br /&gt;
# Describe the differences between TCP and UDP protocols?&lt;br /&gt;
# Provide examples when using UDP can be more reasonable than TCP?&lt;br /&gt;
# Describe how UDP and TCP socket programming differ from each other?&lt;br /&gt;
&lt;br /&gt;
=== Section 2 ===&lt;br /&gt;
&lt;br /&gt;
==== Multithreaded socket programming, RPCs, and distributed system architecture ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Multithreading and multithreaded socket programming&lt;br /&gt;
* Remote procedure calls (RPCs)&lt;br /&gt;
* Distributed system architectures&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How the threads differ from processes? &lt;br /&gt;
# What are the I/O and CPU-bound tasks?&lt;br /&gt;
# For what kind of tasks, using threads is preferred than using processes?&lt;br /&gt;
# What is a remote procedure call?&lt;br /&gt;
# What are some well-known distributed system architectures?&lt;br /&gt;
# Discuss the structured and unstructured architectures.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# 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.&lt;br /&gt;
# 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)&lt;br /&gt;
# 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&lt;br /&gt;
# What are the advantages of using RPC over using the low-level socket programming?&lt;br /&gt;
# Discuss the p2p system&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the differences between the threads and processes.&lt;br /&gt;
# What is the Race condition?&lt;br /&gt;
# Discuss the ways to protect the shared data from the race condition&lt;br /&gt;
# You're given the worker function that just sleeps for a second and quits, implement the same behavior in a subclass of the Thread.&lt;br /&gt;
# Discuss the RPC and its advantages over using the low-level socket programming?&lt;br /&gt;
# Discuss the decentralized architecture: structured and unstructured p2p systems.&lt;br /&gt;
&lt;br /&gt;
=== Section 3 ===&lt;br /&gt;
&lt;br /&gt;
==== Coordination, consistency, and replication in distributed systems ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Clock synchronization algorithms (NTP, Berkeley)&lt;br /&gt;
* Logical clock (Lamport clocks)&lt;br /&gt;
* Mutual exclusion algorithms: permission-based, token-based&lt;br /&gt;
* Election algorithms: Bully, Ring&lt;br /&gt;
* Data consistency models&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How the threads differ from processes? &lt;br /&gt;
# What are the I/O and CPU-bound tasks?&lt;br /&gt;
# For what kind of tasks, using threads is preferred than using processes?&lt;br /&gt;
# What is a remote procedure call?&lt;br /&gt;
# What are some well-known distributed system architectures?&lt;br /&gt;
# Discuss the structured and unstructured architectures.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# 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.&lt;br /&gt;
# 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)&lt;br /&gt;
# 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&lt;br /&gt;
# What are the advantages of using RPC over using the low-level socket programming?&lt;br /&gt;
# Discuss the p2p system&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the differences between the threads and processes.&lt;br /&gt;
# What is the Race condition?&lt;br /&gt;
# Discuss the ways to protect the shared data from the race condition&lt;br /&gt;
# You're given the worker function that just sleeps for a second and quits, implement the same behavior in a subclass of the Thread.&lt;br /&gt;
# Discuss the RPC and its advantages over using the low-level socket programming?&lt;br /&gt;
# Discuss the decentralized architecture: structured and unstructured p2p systems.&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=734</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=734"/>
		<updated>2021-09-22T09:15:49Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Course Sections */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Introduction to subject, computer networks basics, transport layer protocols, and socket programming&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Multithreaded socket programming, remote procedure calls, and distributed system architecture &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Coordination, consistency, and replication in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Fault tolerance and security in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1 ===&lt;br /&gt;
&lt;br /&gt;
==== Section title: Introduction to subject, computer networks basics, transport layer protocols, and socket programming ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* General introduction to the course&lt;br /&gt;
* Computer networks basic&lt;br /&gt;
* Socket programming &lt;br /&gt;
* UDP socket programming&lt;br /&gt;
* TCP socket programming&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are the distributed systems? &lt;br /&gt;
# Give an example of distributed systems.&lt;br /&gt;
# What are the advantages of layered architecture?&lt;br /&gt;
# What are the roles of transport protocols?&lt;br /&gt;
# How the TCP and UDP differ from each other? When one is preferred over the other?&lt;br /&gt;
# What is socket programming?&lt;br /&gt;
# How socket programming is different for UDP and TCP?&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Write a simple UDP/TCP client-server echo program&lt;br /&gt;
# Write a simple chatting program using UDP/TCP sockets&lt;br /&gt;
# Given the simple echo server program, apply socket timeouts and catch timeout exceptions&lt;br /&gt;
# Write a UDP-based reliable file transfer protocol&lt;br /&gt;
# Write a program that parallelly executes the CPU-bound tasks using multiple processes&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Describe an advantage of layered architecture?&lt;br /&gt;
# Describe the differences between TCP and UDP protocols?&lt;br /&gt;
# Provide examples when using UDP can be more reasonable than TCP?&lt;br /&gt;
# Describe how UDP and TCP socket programming differ from each other?&lt;br /&gt;
&lt;br /&gt;
=== Section 2 ===&lt;br /&gt;
&lt;br /&gt;
==== Multithreaded socket programming, RPCs, and distributed system architecture ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Multithreading and multithreaded socket programming&lt;br /&gt;
* Remote procedure calls (RPCs)&lt;br /&gt;
* Distributed system architectures&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How the threads differ from processes? &lt;br /&gt;
# What are the I/O and CPU-bound tasks?&lt;br /&gt;
# For what kind of tasks, using threads is preferred than using processes?&lt;br /&gt;
# What is a remote procedure call?&lt;br /&gt;
# What are some well-known distributed system architectures?&lt;br /&gt;
# Discuss the structured and unstructured architectures.&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# 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.&lt;br /&gt;
# You need to send multiple requests to a server and receive responses. Assume there is some delay for packets to travel between your computer and the server. Would you use multithreading, multiprocessing, or sequential programming in order to complete the task asap? Prove it in practice.&lt;br /&gt;
# &lt;br /&gt;
# 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&lt;br /&gt;
# What are the advantages of using RPC over using the low-level socket programming?&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the differences between the threads and processes.&lt;br /&gt;
# What is the Race condition?&lt;br /&gt;
# Discuss the ways to protect the shared data from the race condition&lt;br /&gt;
# You're given the worker function that just sleeps for a second and quits, implement the same behavior in a subclass of the Thread.&lt;br /&gt;
# Discuss the RPC and its advantages over using the low-level socket programming?&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=728</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=728"/>
		<updated>2021-09-21T15:25:02Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Introduction to subject, computer networks basics, transport layer protocols, and socket programming&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Multithreaded socket programming, remote procedure calls, and distributed system architecture &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Coordination, consistency, and replication in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Fault tolerance and security in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1 ===&lt;br /&gt;
&lt;br /&gt;
==== Section title: Introduction to subject, computer networks basics, transport layer protocols, and socket programming ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* General introduction to the course&lt;br /&gt;
* Computer networks basic&lt;br /&gt;
* Socket programming &lt;br /&gt;
* UDP socket programming&lt;br /&gt;
* TCP socket programming&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are the distributed systems? &lt;br /&gt;
# Give an example of distributed systems.&lt;br /&gt;
# What are the advantages of layered architecture?&lt;br /&gt;
# What are the roles of transport protocols?&lt;br /&gt;
# How the TCP and UDP differ from each other? When one is preferred over the other?&lt;br /&gt;
# What is socket programming?&lt;br /&gt;
# How socket programming is different for UDP and TCP?&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Write a simple UDP/TCP client-server echo program&lt;br /&gt;
# Write a simple chatting program using UDP/TCP sockets&lt;br /&gt;
# Given the simple echo server program, apply socket timeouts and catch timeout exceptions&lt;br /&gt;
# Write a UDP-based reliable file transfer protocol&lt;br /&gt;
# Write a program that parallelly executes the CPU-bound tasks using multiple processes&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Describe an advantage of layered architecture?&lt;br /&gt;
# Describe the differences between TCP and UDP protocols?&lt;br /&gt;
# Provide examples when using UDP can be more reasonable than TCP?&lt;br /&gt;
# Describe how UDP and TCP socket programming differ from each other?&lt;br /&gt;
&lt;br /&gt;
=== Section 2 ===&lt;br /&gt;
&lt;br /&gt;
==== Multithreaded socket programming, RPCs, and distributed system architecture ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Multithreading and multithreaded socket programming&lt;br /&gt;
* Remote procedure calls (RPCs)&lt;br /&gt;
* Distributed system architectures&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# How the threads differ from processes? &lt;br /&gt;
# What are the I/O and CPU-bound tasks?&lt;br /&gt;
# For what tasks using threads are preffered than using processes?&lt;br /&gt;
# What is a remote procedure call?&lt;br /&gt;
# What are the well-known distributed system architectures?&lt;br /&gt;
# &lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=727</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=727"/>
		<updated>2021-09-21T15:03:04Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Introduction to subject, computer networks basics, transport layer protocols, and socket programming&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Multithreaded socket programming, remote procedure calls, and distributed system architecture &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Coordination, consistency, and replication in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Fault tolerance and security in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1 ===&lt;br /&gt;
&lt;br /&gt;
==== Section title: Introduction to subject, computer networks basics, transport layer protocols, and socket programming ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* General introduction to the course&lt;br /&gt;
* Computer networks basic&lt;br /&gt;
* Socket programming &lt;br /&gt;
* UDP socket programming&lt;br /&gt;
* TCP socket programming&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are the distributed systems? &lt;br /&gt;
# Give an example of distributed systems.&lt;br /&gt;
# What are the advantages of layered architecture?&lt;br /&gt;
# What are the roles of transport protocols?&lt;br /&gt;
# How the TCP and UDP differ from each other? When one is preferred over the other?&lt;br /&gt;
# What is socket programming?&lt;br /&gt;
# How socket programming is different for UDP and TCP?&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Write a simple UDP/TCP client-server echo program&lt;br /&gt;
# Write a simple chatting program using UDP/TCP sockets&lt;br /&gt;
# Given the simple echo server program, apply socket timeouts and catch timeout exceptions&lt;br /&gt;
# Write a UDP-based reliable file transfer protocol&lt;br /&gt;
# Write a program that parallelly executes the CPU-bound tasks using multiple processes&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Describe the differences between TCP and UDP protocols?&lt;br /&gt;
# Provide examples when using UDP can be more reasonable than TCP?&lt;br /&gt;
# Describe how UDP and TCP socket programming differ from each other?&lt;br /&gt;
&lt;br /&gt;
=== Section 2 ===&lt;br /&gt;
&lt;br /&gt;
==== Multithreaded socket programming, RPCs, and distributed system architecture ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Multithreading and multithreaded socket programming&lt;br /&gt;
* Remote procedure calls (RPCs)&lt;br /&gt;
* Distributed system architectures&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are the distributed systems? &lt;br /&gt;
# Give an example of distributed systems.&lt;br /&gt;
# What are the advantages of layered architecture?&lt;br /&gt;
# What are the roles of transport protocols?&lt;br /&gt;
# How the TCP and UDP differ from each other? When one is preferred over the other?&lt;br /&gt;
# What is socket programming?&lt;br /&gt;
# How socket programming is different for UDP and TCP?&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Write a simple UDP/TCP client-server echo program&lt;br /&gt;
# Write a simple chatting program using UDP/TCP sockets&lt;br /&gt;
# Given the simple echo server program, apply socket timeouts and catch timeout exceptions&lt;br /&gt;
# Write a UDP-based reliable file transfer protocol&lt;br /&gt;
# Write a program that parallelly executes the CPU-bound tasks using multiple processes&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Describe the differences between TCP and UDP protocols?&lt;br /&gt;
# Provide examples when using UDP can be more reasonable than TCP?&lt;br /&gt;
# Describe how UDP and TCP socket programming differ from each other?&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=726</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=726"/>
		<updated>2021-09-21T14:55:52Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Course Sections */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Introduction to subject, computer networks basics, transport layer protocols, and socket programming&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Multithreaded socket programming, inter-process communication, remote procedure calls, and distributed system architecture &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Coordination, consistency, and replication in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Fault tolerance and security in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1 ===&lt;br /&gt;
&lt;br /&gt;
==== Section title: Introduction to subject, network programming, threading ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* General introduction to the course&lt;br /&gt;
* Computer networks basic&lt;br /&gt;
* Socket programming &lt;br /&gt;
* UDP socket programming&lt;br /&gt;
* TCP socket programming&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are the distributed systems? &lt;br /&gt;
# Give an example of distributed systems.&lt;br /&gt;
# What are the advantages of layered architecture?&lt;br /&gt;
# What are the roles of transport protocols?&lt;br /&gt;
# How the TCP and UDP differ from each other? When one is preferred over the other?&lt;br /&gt;
# What is socket programming?&lt;br /&gt;
# How socket programming is different for UDP and TCP?&lt;br /&gt;
 &lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Write a simple UDP/TCP client-server echo program&lt;br /&gt;
# Write a simple chatting program using UDP/TCP sockets&lt;br /&gt;
# Given the simple echo server program, apply socket timeouts and catch timeout exceptions&lt;br /&gt;
# Write a UDP-based reliable file transfer protocol&lt;br /&gt;
# Write a program that parallelly executes the CPU-bound tasks using multiple processes&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Describe the differences between TCP and UDP protocols?&lt;br /&gt;
# Provide examples when using UDP can be more reasonable than TCP?&lt;br /&gt;
# Describe how UDP and TCP socket programming differ from each other?&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=725</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=725"/>
		<updated>2021-09-21T14:06:45Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Typical questions for ongoing performance evaluation within this section */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Introduction to subject, network programming, threading&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| distributed system architecture, inter-process communication, and remote procedure calls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Coordination, consistency, and replication in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Fault tolerance and security in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1 ===&lt;br /&gt;
&lt;br /&gt;
==== Section title: Introduction to subject, network programming, threading ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* General introduction to the course&lt;br /&gt;
* Computer networks basic&lt;br /&gt;
* Socket programming &lt;br /&gt;
* UDP socket programming&lt;br /&gt;
* TCP socket programming&lt;br /&gt;
* Multithreaded socket programming&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are the distributed systems? &lt;br /&gt;
# Give an example of distributed systems.&lt;br /&gt;
# Why the computer networks are based-on layered architecture?&lt;br /&gt;
# What are the advantages of layered architecture?&lt;br /&gt;
# What are the roles of transport protocols?&lt;br /&gt;
# How the TCP and UDP differ from each other? When one is preferred over the other?&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Given a source .c file including a .h header file, show the results of preprossing in terms of the generated c file.&lt;br /&gt;
# Write a macro and a function in C for the same purpose and discuss pros and cons of both approaches.&lt;br /&gt;
# Show how you can write a generic swap function as a macro.&lt;br /&gt;
# Write the code allocating dynamic memory for a 2 dimensional array and initializing it.&lt;br /&gt;
# Provide an example of how with pointers it is possible in the called function to alter values of variable located in the calling function.&lt;br /&gt;
# Using function pointers, write a sorting function having the sorting rule as a parameter of such function.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the difference in the compiled code when using function and when using macros instead.&lt;br /&gt;
# Provide examples of functions that cannot be transformed into macros, also discussing the motivation for such impossibility.&lt;br /&gt;
# Describe the rules for scope and extent for local variables, static variables (in all cases), and pointers, supplying also code examples of them.&lt;br /&gt;
# Detail the structure of the address space of a process when using a three dimensional array allocated as a local variable of a function and when such array is allocated dynamically, also describe the types of the variables in use and how the compiler checks them.&lt;br /&gt;
# Outline the assembly code for a function calling another function passed as a parameter of it.&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=721</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=721"/>
		<updated>2021-09-21T07:27:09Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Topics covered in this section */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Introduction to subject, network programming, threading&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| distributed system architecture, inter-process communication, and remote procedure calls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Coordination, consistency, and replication in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Fault tolerance and security in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1 ===&lt;br /&gt;
&lt;br /&gt;
==== Section title: Introduction to subject, network programming, threading ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* General introduction to the course&lt;br /&gt;
* Computer networks basic&lt;br /&gt;
* Socket programming &lt;br /&gt;
* UDP socket programming&lt;br /&gt;
* TCP socket programming&lt;br /&gt;
* Multithreaded socket programming&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Explain the difference between an include file and a library.&lt;br /&gt;
# Is a parameter of a macro a “real” parameter?&lt;br /&gt;
# Discuss the importance of the conditional compilation.&lt;br /&gt;
# What happens when a function returning a pointer returns the address of a local variable?&lt;br /&gt;
# Detail the meaning of the keyword static and external for supporting information hiding.&lt;br /&gt;
# Describe how the use of virtual functions can make the code more flexible.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Given a source .c file including a .h header file, show the results of preprossing in terms of the generated c file.&lt;br /&gt;
# Write a macro and a function in C for the same purpose and discuss pros and cons of both approaches.&lt;br /&gt;
# Show how you can write a generic swap function as a macro.&lt;br /&gt;
# Write the code allocating dynamic memory for a 2 dimensional array and initializing it.&lt;br /&gt;
# Provide an example of how with pointers it is possible in the called function to alter values of variable located in the calling function.&lt;br /&gt;
# Using function pointers, write a sorting function having the sorting rule as a parameter of such function.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the difference in the compiled code when using function and when using macros instead.&lt;br /&gt;
# Provide examples of functions that cannot be transformed into macros, also discussing the motivation for such impossibility.&lt;br /&gt;
# Describe the rules for scope and extent for local variables, static variables (in all cases), and pointers, supplying also code examples of them.&lt;br /&gt;
# Detail the structure of the address space of a process when using a three dimensional array allocated as a local variable of a function and when such array is allocated dynamically, also describe the types of the variables in use and how the compiler checks them.&lt;br /&gt;
# Outline the assembly code for a function calling another function passed as a parameter of it.&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=715</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=715"/>
		<updated>2021-09-20T20:50:06Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Section title: Revision of programming fundamentals for OS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Introduction to subject, network programming, threading&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| distributed system architecture, inter-process communication, and remote procedure calls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Coordination, consistency, and replication in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Fault tolerance and security in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1 ===&lt;br /&gt;
&lt;br /&gt;
==== Section title: Introduction to subject, network programming, threading ====&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* General introduction to the course&lt;br /&gt;
* Computer networks basic&lt;br /&gt;
* Socket programming &lt;br /&gt;
* UDP socket programming&lt;br /&gt;
* TCP socket programming&lt;br /&gt;
* Threading&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Explain the difference between an include file and a library.&lt;br /&gt;
# Is a parameter of a macro a “real” parameter?&lt;br /&gt;
# Discuss the importance of the conditional compilation.&lt;br /&gt;
# What happens when a function returning a pointer returns the address of a local variable?&lt;br /&gt;
# Detail the meaning of the keyword static and external for supporting information hiding.&lt;br /&gt;
# Describe how the use of virtual functions can make the code more flexible.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Given a source .c file including a .h header file, show the results of preprossing in terms of the generated c file.&lt;br /&gt;
# Write a macro and a function in C for the same purpose and discuss pros and cons of both approaches.&lt;br /&gt;
# Show how you can write a generic swap function as a macro.&lt;br /&gt;
# Write the code allocating dynamic memory for a 2 dimensional array and initializing it.&lt;br /&gt;
# Provide an example of how with pointers it is possible in the called function to alter values of variable located in the calling function.&lt;br /&gt;
# Using function pointers, write a sorting function having the sorting rule as a parameter of such function.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the difference in the compiled code when using function and when using macros instead.&lt;br /&gt;
# Provide examples of functions that cannot be transformed into macros, also discussing the motivation for such impossibility.&lt;br /&gt;
# Describe the rules for scope and extent for local variables, static variables (in all cases), and pointers, supplying also code examples of them.&lt;br /&gt;
# Detail the structure of the address space of a process when using a three dimensional array allocated as a local variable of a function and when such array is allocated dynamically, also describe the types of the variables in use and how the compiler checks them.&lt;br /&gt;
# Outline the assembly code for a function calling another function passed as a parameter of it.&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=714</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=714"/>
		<updated>2021-09-20T20:49:31Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Course Sections */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Introduction to subject, network programming, threading&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| distributed system architecture, inter-process communication, and remote procedure calls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Coordination, consistency, and replication in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Fault tolerance and security in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1 ===&lt;br /&gt;
&lt;br /&gt;
==== Section title: Revision of programming fundamentals for OS ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* General introduction to the course&lt;br /&gt;
* Computer networks basic&lt;br /&gt;
* Socket programming &lt;br /&gt;
* UDP socket programming&lt;br /&gt;
* TCP socket programming&lt;br /&gt;
* Threading&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Explain the difference between an include file and a library.&lt;br /&gt;
# Is a parameter of a macro a “real” parameter?&lt;br /&gt;
# Discuss the importance of the conditional compilation.&lt;br /&gt;
# What happens when a function returning a pointer returns the address of a local variable?&lt;br /&gt;
# Detail the meaning of the keyword static and external for supporting information hiding.&lt;br /&gt;
# Describe how the use of virtual functions can make the code more flexible.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Given a source .c file including a .h header file, show the results of preprossing in terms of the generated c file.&lt;br /&gt;
# Write a macro and a function in C for the same purpose and discuss pros and cons of both approaches.&lt;br /&gt;
# Show how you can write a generic swap function as a macro.&lt;br /&gt;
# Write the code allocating dynamic memory for a 2 dimensional array and initializing it.&lt;br /&gt;
# Provide an example of how with pointers it is possible in the called function to alter values of variable located in the calling function.&lt;br /&gt;
# Using function pointers, write a sorting function having the sorting rule as a parameter of such function.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the difference in the compiled code when using function and when using macros instead.&lt;br /&gt;
# Provide examples of functions that cannot be transformed into macros, also discussing the motivation for such impossibility.&lt;br /&gt;
# Describe the rules for scope and extent for local variables, static variables (in all cases), and pointers, supplying also code examples of them.&lt;br /&gt;
# Detail the structure of the address space of a process when using a three dimensional array allocated as a local variable of a function and when such array is allocated dynamically, also describe the types of the variables in use and how the compiler checks them.&lt;br /&gt;
# Outline the assembly code for a function calling another function passed as a parameter of it.&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=713</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=713"/>
		<updated>2021-09-20T17:10:16Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Introduction to subject, network programming, threading&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| distributed system architecture, inter-process communication, and remote procedure calls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Coordination, consistency, and replication in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| Fault tolerance and security in distributed systems&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=712</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=712"/>
		<updated>2021-09-20T16:16:12Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Resources and reference material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available online: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available online: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=711</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=711"/>
		<updated>2021-09-20T16:15:50Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Resources and reference material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available: http://homepage.divms.uiowa.edu/~ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=710</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=710"/>
		<updated>2021-09-20T16:15:35Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Resources and reference material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available: https://www.distributed-systems.net/&lt;br /&gt;
* '''Reference:''' George F. Coulouris, Jean Dollimore, and Tim Kindberg. ''Distributed systems: concepts and design'' (5th Edition) Addision Wesley, 2012. Available online: https://www.cdk5.net/wp/  &lt;br /&gt;
* '''Reference:''' Sukumar Ghosh. ''Distributed systems: an algorithmic approach'' (2nd Edition) Chapman&amp;amp;Hall /CRC, Author’s own course material, Spring 2015. Available: http://homepage.divms.uiowa.edu/~ ghosh/16615.html&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=709</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=709"/>
		<updated>2021-09-20T16:09:04Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Maarten Van Steen, and Andrew S. Tanenbaum. ''Distributed systems'' (3rd Edition) Leiden, The Netherlands: Maarten van Steen, 2017. Available: https://www.distributed systems.net/&lt;br /&gt;
* '''Reference:''' Andrew S. Tanenbaum and David J. Wetherall. Computer Networks (5th Edition), Pearson&lt;br /&gt;
* '''Reference:''' Brian W. Kernighan, Dennis M. Ritchie. The C Programming Language - 2nd Edition, Prentice Hall&lt;br /&gt;
* '''Reference:''' Maurice J.Bach. The design of the Unix Operating System, PRENTICE-HALL, INC., Englewood Cliffs, New Jersey 07632&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=708</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=708"/>
		<updated>2021-09-20T15:50:13Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Course evaluation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grade breakdown&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
'''Important:''' In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=707</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=707"/>
		<updated>2021-09-20T15:48:16Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ '''Course grade breakdown'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Laboratory assignments&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 55%&lt;br /&gt;
|-&lt;br /&gt;
| Final exam&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 35%&lt;br /&gt;
|-&lt;br /&gt;
| Attendance&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 10%&lt;br /&gt;
|}&lt;br /&gt;
In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=706</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=706"/>
		<updated>2021-09-20T15:28:06Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
* Lab assignments (55%) &lt;br /&gt;
* Final exam (35%)&lt;br /&gt;
* Attendance (10%)&lt;br /&gt;
In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Operating_Systems&amp;diff=705</id>
		<title>BSc: Operating Systems</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Operating_Systems&amp;diff=705"/>
		<updated>2021-09-20T15:25:28Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: Undo revision 704 by S.seytnazarov (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Operating Systems =&lt;br /&gt;
&lt;br /&gt;
Course name: Operating Systems&amp;lt;br /&amp;gt;&lt;br /&gt;
Course number: R-01&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Structure of an operating system&lt;br /&gt;
* Specific mechanisms, policies, and algorithms used to implement the different parts of an operating system&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Operating systems are the core part of a computing device and computing devices are an integral part of our life, not only as programmers, but also just as human being – it is enough to think at smart homes infrastructures, now available at accessible prices to everyone, at car devices, like smart navigator and cruise control systems, at other infrastructures. Therefore, a fundamental understanding of the structure of an operating systems has a paramount role in the curriculum of a student in computer science and engineering. The purpose of this course is to provide such understanding. This is a core course, so it is not among its goals to explore the details of the various proposal for operating systems that are now emerging: this is the subject of more advanced endeavours.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define:&lt;br /&gt;
&lt;br /&gt;
* fundamental components of an Operating Systems,&lt;br /&gt;
* organization of primary memory and the associated concept of virtual memory, with techniques based on paging and segmenting,&lt;br /&gt;
* structure of secondary memory (file systems),&lt;br /&gt;
* management of the processor(s) and of the connected scheduling algorithms,&lt;br /&gt;
* allocation of resources and the associated problems (deadlocks),&lt;br /&gt;
* approaches to handle I/O.&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples):&lt;br /&gt;
&lt;br /&gt;
* strategies and algorithms for allocating processor(s) time to processes,&lt;br /&gt;
* strategies and algorithms for allocating primary memory to processes,&lt;br /&gt;
* the fundamental states of a process and how they are reached,&lt;br /&gt;
* concept and implementation of the address space of a process, both in the single threaded and in the multi threaded cases.&lt;br /&gt;
* techniques to organize files and directories in secondary memory,&lt;br /&gt;
* algorithms for a safe concurrent access to resources, preventing or avoiding deadlocks,&lt;br /&gt;
* methods for attaching different kind of devices to a computer, also considering different kind of buses.&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply:&lt;br /&gt;
&lt;br /&gt;
* strategies for programming at the Operating System level,&lt;br /&gt;
* fundamental system calls for process creation, termination,&lt;br /&gt;
* fundamental system calls to allocate, change, and deallocate primary memory to processes,&lt;br /&gt;
* libraries to handle buffered and unbuffered interconnections with the computer, including files and I/O devices,&lt;br /&gt;
* the identification of the most suitable algorithms for process, memory, and I/O management depending on the context in which their target operating system is working.&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
The course has two major forms of evaluations:&lt;br /&gt;
&lt;br /&gt;
* a standard evaluation,&lt;br /&gt;
* for very motivated students, an alternative form of evaluation.&lt;br /&gt;
&lt;br /&gt;
The '''standard evaluation''' follows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGrading&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ '''Course grade breakdown'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Labs/seminar classes (weekly evaluations)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30 &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Interim performance assessment (class participation)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 5&lt;br /&gt;
|-&lt;br /&gt;
| Exams&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 65 &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Of which 15 for online test done during the tutorial, 15 for homeworks related to labs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Of which 35% for the written and 30% for the oral.&lt;br /&gt;
&lt;br /&gt;
Note: A student who has earned 70% of the grade before the oral exam (meaning 49% of the total grade), can apply for exemption to such oral exam, unless explicitly required by the instructor to take it, at full discretion of the instructor. In such case the grade final grade is computed as follows: all the grades below a total of 55% will award a C and all the one from 55% onward (up to 70%) will award a B. A student aiming at an A in the course has to do the oral exam.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
The '''alternative evaluation''' follows.&lt;br /&gt;
&lt;br /&gt;
The alternative form of evaluation assumes attendance to all lecture and always a grade above 9/10 or equivalent. Students interested to opt for this approach need to inform Xavier Vasquez about their choice no later than during the third Tutorial (1st September). If during the semester a student fails to satisfy the criteria for taking the alternative form of evaluation, s/he is automatically reverted to the standard evaluation.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ '''Course grade breakdown'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Labs/seminar classes (weekly evaluations)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 20 &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Interim performance assessment (class participation)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 5&lt;br /&gt;
|-&lt;br /&gt;
| Solutions to questions of Bach directly in the text&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 50&lt;br /&gt;
|-&lt;br /&gt;
| Exams&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 25 &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Of which 10 for online test done during the tutorial and 10 for homeworks related to labs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Special cumulative oral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''In both case''' each component apart from homeworks will be assessed on a scale 0-10, where 6 is the minimum passing grade. In case of exceptional work a 10 cum laude will be assigned, with a numeric value from 11 to 13 at discretion of the instructor. The homeworks will be initially graded on a scale 0-2 weekly and then the overall grade will be assembled on a scale 0-10.&amp;lt;br /&amp;gt;&lt;br /&gt;
The grading, though, is not a simple linear combination of the components above. In particular:&lt;br /&gt;
&lt;br /&gt;
* failing any part of the evaluation will trigger a failure in the entire course,&lt;br /&gt;
* the online test done during the tutorial, and the homeworks related to labs will be both averaged on the (n-4) best performances, where the 4 will be used to consider any kind of absence of the student, without requiring any additional documentation; if the student has legitimate reasons to be absent more than 4 times, then supporting document should be provided for all her/his absences,&lt;br /&gt;
* if there are not failing components, the final grade will be computed as a weighted average of the components above approximated at the highest second digit and then rounded to the closest integer.&lt;br /&gt;
&lt;br /&gt;
Note that the questions for the exam are taken from the textbooks with possible modifications of some parts of them.&lt;br /&gt;
&lt;br /&gt;
=== Retakes ===&lt;br /&gt;
&lt;br /&gt;
Retakes will be run as comprehensive oral exam, where the student will be assessed the acquired knowledge coming from the textbooks, the lectures, the tutorials, the labs, and the additional required reading material, as supplied by the instructor. During such comprehensive oral the student could be asked to solve exercises and to explain theoretical and practical aspects of the course.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 96-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 66-95&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 56-65&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0-55&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Andrew S. Tanenbaum and Herbert Bos. ''Modern Operating Systems'' (5th Edition), Pearson&lt;br /&gt;
* '''Reference:''' Andrew S. Tanenbaum and David J. Wetherall. Computer Networks (5th Edition), Pearson&lt;br /&gt;
* '''Reference:''' Brian W. Kernighan, Dennis M. Ritchie. The C Programming Language - 2nd Edition, Prentice Hall&lt;br /&gt;
* '''Reference:''' Maurice J.Bach. The design of the Unix Operating System, PRENTICE-HALL, INC., Englewood Cliffs, New Jersey 07632&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
The course is organized in 15 weeks with every weeks 2 academics hours of lectures, 2 academic hours of labs, and 2 academic hours of tutorials. The main sections of the course and approximate hour distribution between them is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Revision of programming fundamentals for OS&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Processes and threads&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Memory management&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| File system, I/O, and management of resources&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1 ===&lt;br /&gt;
&lt;br /&gt;
==== Section title: Revision of programming fundamentals for OS ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Revision of the structure of a C program&lt;br /&gt;
* Overall organization of the computation in C&lt;br /&gt;
* Preprocessing&lt;br /&gt;
* Simulating function calls in preprocessing&lt;br /&gt;
* Analogies between macros and call by name&lt;br /&gt;
* Meaning of a variable in C&lt;br /&gt;
* Scope and extent of a variable&lt;br /&gt;
* Managing data structures with variable length&lt;br /&gt;
* Allocation and deallocation of memory&lt;br /&gt;
* Pointers and pointer arithmentics&lt;br /&gt;
* Pointers to functions&lt;br /&gt;
* Usage of pointers to function to simulate virtual functions&lt;br /&gt;
* Examples of usage of pointers to function in real life scenarios&lt;br /&gt;
* Pointers to functions to perform map and reduce&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Explain the difference between an include file and a library.&lt;br /&gt;
# Is a parameter of a macro a “real” parameter?&lt;br /&gt;
# Discuss the importance of the conditional compilation.&lt;br /&gt;
# What happens when a function returning a pointer returns the address of a local variable?&lt;br /&gt;
# Detail the meaning of the keyword static and external for supporting information hiding.&lt;br /&gt;
# Describe how the use of virtual functions can make the code more flexible.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Given a source .c file including a .h header file, show the results of preprossing in terms of the generated c file.&lt;br /&gt;
# Write a macro and a function in C for the same purpose and discuss pros and cons of both approaches.&lt;br /&gt;
# Show how you can write a generic swap function as a macro.&lt;br /&gt;
# Write the code allocating dynamic memory for a 2 dimensional array and initializing it.&lt;br /&gt;
# Provide an example of how with pointers it is possible in the called function to alter values of variable located in the calling function.&lt;br /&gt;
# Using function pointers, write a sorting function having the sorting rule as a parameter of such function.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the difference in the compiled code when using function and when using macros instead.&lt;br /&gt;
# Provide examples of functions that cannot be transformed into macros, also discussing the motivation for such impossibility.&lt;br /&gt;
# Describe the rules for scope and extent for local variables, static variables (in all cases), and pointers, supplying also code examples of them.&lt;br /&gt;
# Detail the structure of the address space of a process when using a three dimensional array allocated as a local variable of a function and when such array is allocated dynamically, also describe the types of the variables in use and how the compiler checks them.&lt;br /&gt;
# Outline the assembly code for a function calling another function passed as a parameter of it.&lt;br /&gt;
&lt;br /&gt;
=== Section 2 ===&lt;br /&gt;
&lt;br /&gt;
==== Section title: Processes and Threads ==== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====  Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Process models&lt;br /&gt;
* Process creation and termination&lt;br /&gt;
* Process hierarchies&lt;br /&gt;
* Process states&lt;br /&gt;
* Implementation of processes&lt;br /&gt;
* Threads&lt;br /&gt;
* Interprocess communication&lt;br /&gt;
* Races&lt;br /&gt;
* Critical regions, busy waiting, sleep and wakeup&lt;br /&gt;
* Semaphores&lt;br /&gt;
* Monitors&lt;br /&gt;
* Principles of scheduling&lt;br /&gt;
* Categories of scheduling algorithms&lt;br /&gt;
* Most common approaches for scheduling in interactive systems&lt;br /&gt;
&lt;br /&gt;
====  What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
====  Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Outline the typical life of a process from creation to termination&lt;br /&gt;
# Present the different possible models of waiting&lt;br /&gt;
# Define the concept of a semaphore and how it can be implemented&lt;br /&gt;
# Explain the concept of a monitor from a programming standpoint and how it relates to modern programming paradigms.&lt;br /&gt;
# Discuss advantages and disadvantages of the different scheduling algorithms&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Write a shell script that produces a file of sequential numbers by reading the last number in the file, adding 1 to it, and then appending it to the file. Run one instance of the script in the background and one in the foreground, each accessing the same file. Answer the following questions: (a) How long does it take before a race condition manifests itself? (b) What is the critical region? (c) How you can modify the script to prevent the race&lt;br /&gt;
# Write a producer-consumer problem that uses threads and shares a common buffer. However, do not use semaphores or any other synchronization primitives to guard the shared data structures. Just let each thread access them when it wants to. Use sleep and wakeup to handle the full and empty conditions. See how long it takes for a fatal race condition to occur. For example, you might have the producer print a number once in a while. Do not print more than one number every minute because the I/O could affect the race conditions.&lt;br /&gt;
# Write a program that creates a pipe. Have two strings – one should contain some text, the other one should be empty. Transfer a text from the first string to another one using the pipe you created. Show the result.&lt;br /&gt;
# Write a C program that forks a child process, waits for 10 seconds and then sends a SIGTERM signal to the child. The child process should run an infinite loop and print “I’m alive” every second&lt;br /&gt;
# Write the solution for the produced-consumer problem using monitors.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# ''From the textbook:'' Multiple jobs can run in parallel and finish faster than if they had run sequentially. Suppose that two jobs, each needing 20 minutes of CPU time, start simultaneously. How long will the last one take to complete if they run sequentially? How long if they run in parallel? Assume 50% I/O wait.&lt;br /&gt;
# ''From the textbook:'' The readers and writers problem can be formulated in several ways with regard to which category of processes can be started when. Carefully describe three different variations of the problem, each one favoring (or not favoring) some category of processes. For each variation, specify what happens when a reader or a writer becomes ready to access the database, and what happens when a process is finished?&lt;br /&gt;
# ''From the textbook:'' Consider a system in which threads are implemented entirely in user space, with the run-time system getting a clock interrupt once a second. Suppose that a clock interrupt occurs while some thread is executing in the run-time system. What problem might occur? Can you suggest a way to solve it?&lt;br /&gt;
# ''From the textbook:'' In this problem you are to compare reading a file using a single-threaded file server and a multithreaded server. It takes 12 msec to get a request for work, dispatch it, and do the rest of the necessary processing, assuming that the data needed are in the block cache. If a disk operation is needed, as is the case one-third of the time, an additional 75 msec is required, during which time the thread sleeps. How many requests/sec can the server handle if it is single threaded? If it is multithreaded?&lt;br /&gt;
# ''From the textbook:'' There are five batch jobs: A through E, they arrive at a computer center at almost the same time. They have estimated running times of 10, 6, 2, 4, and 8 minutes. Their (externally determined) priorities are 3, 5, 2, 1, and 4, respectively, with 5 being the highest priority. Consider the following scheduling algorithms: '''(a)''' Round robin, '''(b)''' Priority scheduling, '''(c)''' First-come, first-served (run in order 10, 6, 2, 4, 8), '''(d)''' Shortest job first. For each mentioned scheduling algorithms, determine the mean process turnaround time. Ignore process switching overhead. For (a), assume that the system is multi-programmed, and that each job gets its fair share of the CPU. For (b) through (d), assume that only one job at a time runs, until it finishes. All jobs are completely CPU bound.&lt;br /&gt;
&lt;br /&gt;
=== Section 3 ===&lt;br /&gt;
&lt;br /&gt;
====  Section title: Memory management ==== &lt;br /&gt;
&lt;br /&gt;
====  Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Address space&lt;br /&gt;
* Memory abstraction&lt;br /&gt;
* Based and limit registers&lt;br /&gt;
* Swapping&lt;br /&gt;
* Virtual memory&lt;br /&gt;
* Paging&lt;br /&gt;
* Implementation of paging&lt;br /&gt;
* Page replacement algorithms&lt;br /&gt;
* Page faults&lt;br /&gt;
* Segmentation&lt;br /&gt;
* Segmentation with paging&lt;br /&gt;
&lt;br /&gt;
====  What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval3&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
====  Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are the base and limit registers and what are the problems related to their usage?&lt;br /&gt;
# Can you have swapping in absence of paging? And paging in absence of swapping?&lt;br /&gt;
# What mechanisms and algorithms are available to handle effectively paging?&lt;br /&gt;
# Details advantages and disadvantages of the different page replacement algorithms.&lt;br /&gt;
# Describe the difference between paging and segmenting.&lt;br /&gt;
# Is it possible to combine segmenting and paging? If so, how?&lt;br /&gt;
&lt;br /&gt;
====  Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Run ‘free -t -h‘ in a Linux shell or ‘vmstat‘ in a macOS one. Discuss the output.&lt;br /&gt;
# Write a C program that runs for 10 seconds. Every second it should: (a) allocate 10 MB of memory – fill it with zeros, (b) sleep for 1 second. Then, compile and run the program in the background (./ex2 &amp;amp;amp;) and run ‘vmstat 1’ at the same time. Observe what happens to the memory. Pay attention to si and so fields. ''Hint:'' use memset(ptr, value, size) to fill the allocated memory.&lt;br /&gt;
# Write a program that simulates a paging system using the ageing algorithm. The number of page frames is a parameter. The sequence of page references should be read from a file. For a given input file, your program should print Hit/Miss ratio.&lt;br /&gt;
# Try to construct a sequence of references that will result in increased or decreased Hit/Miss ratio.&lt;br /&gt;
# ''From the textbook:'' A machine has 16-bit virtual addresses. Pages are 8 KB. How many entries are needed for a single-level linear page table? Explain your computations.&lt;br /&gt;
&lt;br /&gt;
====  Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# ''From the textbook:'' A computer provides each process with 65,536 bytes of address space divided into pages of 4096 bytes each. A particular program has a text size of 32,768 bytes, a data size of 16,386 bytes, and a stack size of 15,870 bytes. Will this program fit in the machine’s address space? Suppose that instead of 4096 bytes, the page size were 512 bytes, would it then fit? Each page must contain either text, data, or stack, not a mixture of two or three of them.&lt;br /&gt;
# ''From the textbook:'' You are given the following data about a virtual memory system: '''1.''' The TLB can hold 1024 entries and can be accessed in 1 clock cycle (1 nsec). '''2.''' A page table entry can be found in 100 clock cycles or 100 nsec. '''3.'''The average page replacement time is 6 msec. If page references are handled by the TLB 99% of the time, and only 0.01% lead to a page fault, what is the effective address-translation time?&lt;br /&gt;
# ''From the textbook:'' A small computer on a smart card has four page frames. At the first clock tick, the R bits are 0111 (page 0 is 0, the rest are 1). At subsequent clock ticks, the values are 1011, 1010, 1101, 0010, 1010, 1100, and 0001. If the aging algorithm is used with an 8-bit counter, give the values of the four counters after the last tick.&lt;br /&gt;
# ''From the textbook:'' A computer with a 32-bit address uses a two-level page table. Virtual addresses are split into a 9-bit top-level page table field, an 11-bit second-level page table field, and an offset. How large are the pages and how many are there in the address space?&lt;br /&gt;
# ''From the textbook:'' A computer has 32-bit virtual addresses and 4-KB pages. The program and data together fit in the lowest page (0–4095) The stack fits in the highest page. How many entries are needed in the page table if traditional (one-level) paging is used? How many page table entries are needed for two-level paging, with 10 bits in each part?&lt;br /&gt;
&lt;br /&gt;
=== Section 4 ===&lt;br /&gt;
&lt;br /&gt;
====  Section title: File system, I/O, and management of resources ==== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====  Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* File system&lt;br /&gt;
* Files and files types, attributes, and operations&lt;br /&gt;
* Paths&lt;br /&gt;
* File system layout&lt;br /&gt;
* Shared files&lt;br /&gt;
* File system backups&lt;br /&gt;
* FIle system performances&lt;br /&gt;
* General structure of I/O&lt;br /&gt;
* Block devices and character devices&lt;br /&gt;
* Device drivers&lt;br /&gt;
* Memory mapped I/O and Direct Memory Access&lt;br /&gt;
* Interrupts&lt;br /&gt;
* Programmed I/O&lt;br /&gt;
* Deadlocks&lt;br /&gt;
* Conditions for deadlocks&lt;br /&gt;
* Strategies to deal with dealocks&lt;br /&gt;
&lt;br /&gt;
====  What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval4&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
====  Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What is the overall structure of a file system&lt;br /&gt;
# How are files and directories organized on a disk and what are the roles of i-nodes, when they are used&lt;br /&gt;
# What are the key differences between block and character devices.&lt;br /&gt;
# How does DMA speeds up the computations?&lt;br /&gt;
# List the major classes of strategies to handle deadlock.&lt;br /&gt;
&lt;br /&gt;
====  Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Create tmp directory with two empty files (file1, file2). Then, create one hard link named link1 to file1. Write a program that scans tmp directory, locates all i-nodes with a hard link count of two or more and for each such file it should display together all file names that point to the file.&lt;br /&gt;
# Implement a simulated file system that will be fully contained in a single regular file stored on the disk. This disk file will contain directories, i-nodes, free- block information, file data blocks, etc. Choose appropriate algorithms for maintaining free-block information and for allocating data blocks (contiguous, indexed, linked). Your program will accept system commands from the user to create/delete directories, create/delete/open files, read/write from/to a selected file, and to list directory contents.&lt;br /&gt;
# Create a file ex1.txt with a random string in it. Write a C program (ex1.c) that changes the string in ex1.txt to “This is a nice day” by using mmap(). Hints: '''(a)''' open the file in O_RDWR mode, '''(b)''' use stat() or fstat() to get the size of the file.&lt;br /&gt;
# Write a C program (ex2.c) using line buffer. Write your code according to the instructions: '''(a)''' each of the 5 characters of “Hello” string should be put in separate printf(), '''(b)''' add a 1 sec sleep after every printf(). The output should be a 5 sec wait and then “Hello” printed instantaneously.&lt;br /&gt;
# The tee command reads its standard input until end-of- file, writing a copy of the input to standard output and to the files named in its command-line arguments. Implement tee using I/O system calls. By default, tee overwrites any existing file with the given name. Implement the -a command-line option (tee -a file), which causes tee to append text to the end of a file if it already exists.&lt;br /&gt;
# Write a C program for deadlock detection algorithm reading the resources available form a file (input.txt). For testing purposes consider 5 processes and 3 type of resources. However, your program must be able to process as many processes and resource types, as needed (check next slide for input file structure description). The output of your program should either say that no deadlock is detected or print out the numbers of processes that are deadlocked.&lt;br /&gt;
&lt;br /&gt;
====  Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# ''From the textbook:'' Two computer science students, Carolyn and Elinor, are having a discussion about i-nodes. Carolyn maintains that memories have gotten so large and so cheap that when a file is opened, it is simpler and faster just to fetch a new copy of the i-node into the i-node table, rather than search the entire table to see if it is already there. Elinor disagrees. Who is right? Why?&lt;br /&gt;
# ''From the textbook:'' A typical printed page of text contains 50 lines of 80 characters each. Imagine that a certain printer can print 6 pages per minute and that the time to write a character to the printer’s output register is so short it can be ignored. Does it make sense to run this printer using interrupt-driven I/O if each character printed requires an interrupt that takes 50 &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\mu&amp;lt;/math&amp;gt;sec all-in to service?&lt;br /&gt;
# ''From the textbook:'' Consider a disk that has 10 data blocks starting from block 14 through 23. Let there be 2 files on the disk: f1 and f2. The directory structure lists that the first data blocks of f1 and f2 are respectively 22 and 16. The FAT table is as follows: (14,18), (15,17), (16,23), (17,21), (18,20), (19,15), (20,-1), (21,-1), (22,19), (23,14), where (x,y) indicates that the value stored in table entry x points to data block y. What are the data blocks allotted to f1 and f2?&lt;br /&gt;
# ''From the textbook:'' Explain how hard links and soft links differ with respective to i-node allocations.&lt;br /&gt;
# ''From the textbook:'' When a user program makes a system call to read or write a disk file, it provides an indication of which file it wants, a pointer to the data buffer, and the count. Control is then transferred to the operating system, which calls the appropriate driver. Suppose that the driver starts the disk and terminates until an interrupt occurs. In the case of reading from the disk, obviously the caller will have to be blocked (because there are no data for it). What about the case of writing to the disk? Need the caller be blocked awaiting completion of the disk transfer?&lt;br /&gt;
# ''From the textbook:'' The banker’s algorithm is being run in a system with m resource classes and n processes. In the limit of large m and n, the number of operations that must be performed to check a state for safety is proportional to m&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;^a&amp;lt;/math&amp;gt;n&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;^b&amp;lt;/math&amp;gt; . What are the values of a and b ?&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Operating_Systems&amp;diff=704</id>
		<title>BSc: Operating Systems</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Operating_Systems&amp;diff=704"/>
		<updated>2021-09-20T15:23:49Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: /* Grades range */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Operating Systems =&lt;br /&gt;
&lt;br /&gt;
Course name: Operating Systems&amp;lt;br /&amp;gt;&lt;br /&gt;
Course number: R-01&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Structure of an operating system&lt;br /&gt;
* Specific mechanisms, policies, and algorithms used to implement the different parts of an operating system&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Operating systems are the core part of a computing device and computing devices are an integral part of our life, not only as programmers, but also just as human being – it is enough to think at smart homes infrastructures, now available at accessible prices to everyone, at car devices, like smart navigator and cruise control systems, at other infrastructures. Therefore, a fundamental understanding of the structure of an operating systems has a paramount role in the curriculum of a student in computer science and engineering. The purpose of this course is to provide such understanding. This is a core course, so it is not among its goals to explore the details of the various proposal for operating systems that are now emerging: this is the subject of more advanced endeavours.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define:&lt;br /&gt;
&lt;br /&gt;
* fundamental components of an Operating Systems,&lt;br /&gt;
* organization of primary memory and the associated concept of virtual memory, with techniques based on paging and segmenting,&lt;br /&gt;
* structure of secondary memory (file systems),&lt;br /&gt;
* management of the processor(s) and of the connected scheduling algorithms,&lt;br /&gt;
* allocation of resources and the associated problems (deadlocks),&lt;br /&gt;
* approaches to handle I/O.&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples):&lt;br /&gt;
&lt;br /&gt;
* strategies and algorithms for allocating processor(s) time to processes,&lt;br /&gt;
* strategies and algorithms for allocating primary memory to processes,&lt;br /&gt;
* the fundamental states of a process and how they are reached,&lt;br /&gt;
* concept and implementation of the address space of a process, both in the single threaded and in the multi threaded cases.&lt;br /&gt;
* techniques to organize files and directories in secondary memory,&lt;br /&gt;
* algorithms for a safe concurrent access to resources, preventing or avoiding deadlocks,&lt;br /&gt;
* methods for attaching different kind of devices to a computer, also considering different kind of buses.&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply:&lt;br /&gt;
&lt;br /&gt;
* strategies for programming at the Operating System level,&lt;br /&gt;
* fundamental system calls for process creation, termination,&lt;br /&gt;
* fundamental system calls to allocate, change, and deallocate primary memory to processes,&lt;br /&gt;
* libraries to handle buffered and unbuffered interconnections with the computer, including files and I/O devices,&lt;br /&gt;
* the identification of the most suitable algorithms for process, memory, and I/O management depending on the context in which their target operating system is working.&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
The course has two major forms of evaluations:&lt;br /&gt;
&lt;br /&gt;
* a standard evaluation,&lt;br /&gt;
* for very motivated students, an alternative form of evaluation.&lt;br /&gt;
&lt;br /&gt;
The '''standard evaluation''' follows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGrading&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ '''Course grade breakdown'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Labs/seminar classes (weekly evaluations)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30 &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Interim performance assessment (class participation)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 5&lt;br /&gt;
|-&lt;br /&gt;
| Exams&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 65 &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Of which 15 for online test done during the tutorial, 15 for homeworks related to labs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Of which 35% for the written and 30% for the oral.&lt;br /&gt;
&lt;br /&gt;
Note: A student who has earned 70% of the grade before the oral exam (meaning 49% of the total grade), can apply for exemption to such oral exam, unless explicitly required by the instructor to take it, at full discretion of the instructor. In such case the grade final grade is computed as follows: all the grades below a total of 55% will award a C and all the one from 55% onward (up to 70%) will award a B. A student aiming at an A in the course has to do the oral exam.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
The '''alternative evaluation''' follows.&lt;br /&gt;
&lt;br /&gt;
The alternative form of evaluation assumes attendance to all lecture and always a grade above 9/10 or equivalent. Students interested to opt for this approach need to inform Xavier Vasquez about their choice no later than during the third Tutorial (1st September). If during the semester a student fails to satisfy the criteria for taking the alternative form of evaluation, s/he is automatically reverted to the standard evaluation.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ '''Course grade breakdown'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Component'''&lt;br /&gt;
! '''Points'''&lt;br /&gt;
|-&lt;br /&gt;
| Labs/seminar classes (weekly evaluations)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 20 &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Interim performance assessment (class participation)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 5&lt;br /&gt;
|-&lt;br /&gt;
| Solutions to questions of Bach directly in the text&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 50&lt;br /&gt;
|-&lt;br /&gt;
| Exams&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 25 &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Of which 10 for online test done during the tutorial and 10 for homeworks related to labs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Special cumulative oral.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''In both case''' each component apart from homeworks will be assessed on a scale 0-10, where 6 is the minimum passing grade. In case of exceptional work a 10 cum laude will be assigned, with a numeric value from 11 to 13 at discretion of the instructor. The homeworks will be initially graded on a scale 0-2 weekly and then the overall grade will be assembled on a scale 0-10.&amp;lt;br /&amp;gt;&lt;br /&gt;
The grading, though, is not a simple linear combination of the components above. In particular:&lt;br /&gt;
&lt;br /&gt;
* failing any part of the evaluation will trigger a failure in the entire course,&lt;br /&gt;
* the online test done during the tutorial, and the homeworks related to labs will be both averaged on the (n-4) best performances, where the 4 will be used to consider any kind of absence of the student, without requiring any additional documentation; if the student has legitimate reasons to be absent more than 4 times, then supporting document should be provided for all her/his absences,&lt;br /&gt;
* if there are not failing components, the final grade will be computed as a weighted average of the components above approximated at the highest second digit and then rounded to the closest integer.&lt;br /&gt;
&lt;br /&gt;
Note that the questions for the exam are taken from the textbooks with possible modifications of some parts of them.&lt;br /&gt;
&lt;br /&gt;
=== Retakes ===&lt;br /&gt;
&lt;br /&gt;
Retakes will be run as comprehensive oral exam, where the student will be assessed the acquired knowledge coming from the textbooks, the lectures, the tutorials, the labs, and the additional required reading material, as supplied by the instructor. During such comprehensive oral the student could be asked to solve exercises and to explain theoretical and practical aspects of the course.&lt;br /&gt;
&lt;br /&gt;
=== Grades range ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseGradingRange&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course grading range&lt;br /&gt;
|-&lt;br /&gt;
| A. Excellent&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 90-100&lt;br /&gt;
|-&lt;br /&gt;
| B. Good&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 75-89&lt;br /&gt;
|-&lt;br /&gt;
| C. Satisfactory&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 60-74&lt;br /&gt;
|-&lt;br /&gt;
| D. Poor&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0-59&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resources and reference material ===&lt;br /&gt;
&lt;br /&gt;
* '''Textbook:''' Andrew S. Tanenbaum and Herbert Bos. ''Modern Operating Systems'' (5th Edition), Pearson&lt;br /&gt;
* '''Reference:''' Andrew S. Tanenbaum and David J. Wetherall. Computer Networks (5th Edition), Pearson&lt;br /&gt;
* '''Reference:''' Brian W. Kernighan, Dennis M. Ritchie. The C Programming Language - 2nd Edition, Prentice Hall&lt;br /&gt;
* '''Reference:''' Maurice J.Bach. The design of the Unix Operating System, PRENTICE-HALL, INC., Englewood Cliffs, New Jersey 07632&lt;br /&gt;
&lt;br /&gt;
== Course Sections ==&lt;br /&gt;
&lt;br /&gt;
The course is organized in 15 weeks with every weeks 2 academics hours of lectures, 2 academic hours of labs, and 2 academic hours of tutorials. The main sections of the course and approximate hour distribution between them is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSCourseSections&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|+ Course Sections&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Section'''&lt;br /&gt;
! '''Section Title'''&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| '''Teaching Hours'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
| Revision of programming fundamentals for OS&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 12&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 2&lt;br /&gt;
| Processes and threads&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 3&lt;br /&gt;
| Memory management&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 24&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 4&lt;br /&gt;
| File system, I/O, and management of resources&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Section 1 ===&lt;br /&gt;
&lt;br /&gt;
==== Section title: Revision of programming fundamentals for OS ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Revision of the structure of a C program&lt;br /&gt;
* Overall organization of the computation in C&lt;br /&gt;
* Preprocessing&lt;br /&gt;
* Simulating function calls in preprocessing&lt;br /&gt;
* Analogies between macros and call by name&lt;br /&gt;
* Meaning of a variable in C&lt;br /&gt;
* Scope and extent of a variable&lt;br /&gt;
* Managing data structures with variable length&lt;br /&gt;
* Allocation and deallocation of memory&lt;br /&gt;
* Pointers and pointer arithmentics&lt;br /&gt;
* Pointers to functions&lt;br /&gt;
* Usage of pointers to function to simulate virtual functions&lt;br /&gt;
* Examples of usage of pointers to function in real life scenarios&lt;br /&gt;
* Pointers to functions to perform map and reduce&lt;br /&gt;
&lt;br /&gt;
==== What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Explain the difference between an include file and a library.&lt;br /&gt;
# Is a parameter of a macro a “real” parameter?&lt;br /&gt;
# Discuss the importance of the conditional compilation.&lt;br /&gt;
# What happens when a function returning a pointer returns the address of a local variable?&lt;br /&gt;
# Detail the meaning of the keyword static and external for supporting information hiding.&lt;br /&gt;
# Describe how the use of virtual functions can make the code more flexible.&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Given a source .c file including a .h header file, show the results of preprossing in terms of the generated c file.&lt;br /&gt;
# Write a macro and a function in C for the same purpose and discuss pros and cons of both approaches.&lt;br /&gt;
# Show how you can write a generic swap function as a macro.&lt;br /&gt;
# Write the code allocating dynamic memory for a 2 dimensional array and initializing it.&lt;br /&gt;
# Provide an example of how with pointers it is possible in the called function to alter values of variable located in the calling function.&lt;br /&gt;
# Using function pointers, write a sorting function having the sorting rule as a parameter of such function.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# Discuss the difference in the compiled code when using function and when using macros instead.&lt;br /&gt;
# Provide examples of functions that cannot be transformed into macros, also discussing the motivation for such impossibility.&lt;br /&gt;
# Describe the rules for scope and extent for local variables, static variables (in all cases), and pointers, supplying also code examples of them.&lt;br /&gt;
# Detail the structure of the address space of a process when using a three dimensional array allocated as a local variable of a function and when such array is allocated dynamically, also describe the types of the variables in use and how the compiler checks them.&lt;br /&gt;
# Outline the assembly code for a function calling another function passed as a parameter of it.&lt;br /&gt;
&lt;br /&gt;
=== Section 2 ===&lt;br /&gt;
&lt;br /&gt;
==== Section title: Processes and Threads ==== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====  Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Process models&lt;br /&gt;
* Process creation and termination&lt;br /&gt;
* Process hierarchies&lt;br /&gt;
* Process states&lt;br /&gt;
* Implementation of processes&lt;br /&gt;
* Threads&lt;br /&gt;
* Interprocess communication&lt;br /&gt;
* Races&lt;br /&gt;
* Critical regions, busy waiting, sleep and wakeup&lt;br /&gt;
* Semaphores&lt;br /&gt;
* Monitors&lt;br /&gt;
* Principles of scheduling&lt;br /&gt;
* Categories of scheduling algorithms&lt;br /&gt;
* Most common approaches for scheduling in interactive systems&lt;br /&gt;
&lt;br /&gt;
====  What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval2&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
====  Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Outline the typical life of a process from creation to termination&lt;br /&gt;
# Present the different possible models of waiting&lt;br /&gt;
# Define the concept of a semaphore and how it can be implemented&lt;br /&gt;
# Explain the concept of a monitor from a programming standpoint and how it relates to modern programming paradigms.&lt;br /&gt;
# Discuss advantages and disadvantages of the different scheduling algorithms&lt;br /&gt;
&lt;br /&gt;
==== Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Write a shell script that produces a file of sequential numbers by reading the last number in the file, adding 1 to it, and then appending it to the file. Run one instance of the script in the background and one in the foreground, each accessing the same file. Answer the following questions: (a) How long does it take before a race condition manifests itself? (b) What is the critical region? (c) How you can modify the script to prevent the race&lt;br /&gt;
# Write a producer-consumer problem that uses threads and shares a common buffer. However, do not use semaphores or any other synchronization primitives to guard the shared data structures. Just let each thread access them when it wants to. Use sleep and wakeup to handle the full and empty conditions. See how long it takes for a fatal race condition to occur. For example, you might have the producer print a number once in a while. Do not print more than one number every minute because the I/O could affect the race conditions.&lt;br /&gt;
# Write a program that creates a pipe. Have two strings – one should contain some text, the other one should be empty. Transfer a text from the first string to another one using the pipe you created. Show the result.&lt;br /&gt;
# Write a C program that forks a child process, waits for 10 seconds and then sends a SIGTERM signal to the child. The child process should run an infinite loop and print “I’m alive” every second&lt;br /&gt;
# Write the solution for the produced-consumer problem using monitors.&lt;br /&gt;
&lt;br /&gt;
==== Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# ''From the textbook:'' Multiple jobs can run in parallel and finish faster than if they had run sequentially. Suppose that two jobs, each needing 20 minutes of CPU time, start simultaneously. How long will the last one take to complete if they run sequentially? How long if they run in parallel? Assume 50% I/O wait.&lt;br /&gt;
# ''From the textbook:'' The readers and writers problem can be formulated in several ways with regard to which category of processes can be started when. Carefully describe three different variations of the problem, each one favoring (or not favoring) some category of processes. For each variation, specify what happens when a reader or a writer becomes ready to access the database, and what happens when a process is finished?&lt;br /&gt;
# ''From the textbook:'' Consider a system in which threads are implemented entirely in user space, with the run-time system getting a clock interrupt once a second. Suppose that a clock interrupt occurs while some thread is executing in the run-time system. What problem might occur? Can you suggest a way to solve it?&lt;br /&gt;
# ''From the textbook:'' In this problem you are to compare reading a file using a single-threaded file server and a multithreaded server. It takes 12 msec to get a request for work, dispatch it, and do the rest of the necessary processing, assuming that the data needed are in the block cache. If a disk operation is needed, as is the case one-third of the time, an additional 75 msec is required, during which time the thread sleeps. How many requests/sec can the server handle if it is single threaded? If it is multithreaded?&lt;br /&gt;
# ''From the textbook:'' There are five batch jobs: A through E, they arrive at a computer center at almost the same time. They have estimated running times of 10, 6, 2, 4, and 8 minutes. Their (externally determined) priorities are 3, 5, 2, 1, and 4, respectively, with 5 being the highest priority. Consider the following scheduling algorithms: '''(a)''' Round robin, '''(b)''' Priority scheduling, '''(c)''' First-come, first-served (run in order 10, 6, 2, 4, 8), '''(d)''' Shortest job first. For each mentioned scheduling algorithms, determine the mean process turnaround time. Ignore process switching overhead. For (a), assume that the system is multi-programmed, and that each job gets its fair share of the CPU. For (b) through (d), assume that only one job at a time runs, until it finishes. All jobs are completely CPU bound.&lt;br /&gt;
&lt;br /&gt;
=== Section 3 ===&lt;br /&gt;
&lt;br /&gt;
====  Section title: Memory management ==== &lt;br /&gt;
&lt;br /&gt;
====  Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* Address space&lt;br /&gt;
* Memory abstraction&lt;br /&gt;
* Based and limit registers&lt;br /&gt;
* Swapping&lt;br /&gt;
* Virtual memory&lt;br /&gt;
* Paging&lt;br /&gt;
* Implementation of paging&lt;br /&gt;
* Page replacement algorithms&lt;br /&gt;
* Page faults&lt;br /&gt;
* Segmentation&lt;br /&gt;
* Segmentation with paging&lt;br /&gt;
&lt;br /&gt;
====  What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval3&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
====  Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What are the base and limit registers and what are the problems related to their usage?&lt;br /&gt;
# Can you have swapping in absence of paging? And paging in absence of swapping?&lt;br /&gt;
# What mechanisms and algorithms are available to handle effectively paging?&lt;br /&gt;
# Details advantages and disadvantages of the different page replacement algorithms.&lt;br /&gt;
# Describe the difference between paging and segmenting.&lt;br /&gt;
# Is it possible to combine segmenting and paging? If so, how?&lt;br /&gt;
&lt;br /&gt;
====  Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Run ‘free -t -h‘ in a Linux shell or ‘vmstat‘ in a macOS one. Discuss the output.&lt;br /&gt;
# Write a C program that runs for 10 seconds. Every second it should: (a) allocate 10 MB of memory – fill it with zeros, (b) sleep for 1 second. Then, compile and run the program in the background (./ex2 &amp;amp;amp;) and run ‘vmstat 1’ at the same time. Observe what happens to the memory. Pay attention to si and so fields. ''Hint:'' use memset(ptr, value, size) to fill the allocated memory.&lt;br /&gt;
# Write a program that simulates a paging system using the ageing algorithm. The number of page frames is a parameter. The sequence of page references should be read from a file. For a given input file, your program should print Hit/Miss ratio.&lt;br /&gt;
# Try to construct a sequence of references that will result in increased or decreased Hit/Miss ratio.&lt;br /&gt;
# ''From the textbook:'' A machine has 16-bit virtual addresses. Pages are 8 KB. How many entries are needed for a single-level linear page table? Explain your computations.&lt;br /&gt;
&lt;br /&gt;
====  Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# ''From the textbook:'' A computer provides each process with 65,536 bytes of address space divided into pages of 4096 bytes each. A particular program has a text size of 32,768 bytes, a data size of 16,386 bytes, and a stack size of 15,870 bytes. Will this program fit in the machine’s address space? Suppose that instead of 4096 bytes, the page size were 512 bytes, would it then fit? Each page must contain either text, data, or stack, not a mixture of two or three of them.&lt;br /&gt;
# ''From the textbook:'' You are given the following data about a virtual memory system: '''1.''' The TLB can hold 1024 entries and can be accessed in 1 clock cycle (1 nsec). '''2.''' A page table entry can be found in 100 clock cycles or 100 nsec. '''3.'''The average page replacement time is 6 msec. If page references are handled by the TLB 99% of the time, and only 0.01% lead to a page fault, what is the effective address-translation time?&lt;br /&gt;
# ''From the textbook:'' A small computer on a smart card has four page frames. At the first clock tick, the R bits are 0111 (page 0 is 0, the rest are 1). At subsequent clock ticks, the values are 1011, 1010, 1101, 0010, 1010, 1100, and 0001. If the aging algorithm is used with an 8-bit counter, give the values of the four counters after the last tick.&lt;br /&gt;
# ''From the textbook:'' A computer with a 32-bit address uses a two-level page table. Virtual addresses are split into a 9-bit top-level page table field, an 11-bit second-level page table field, and an offset. How large are the pages and how many are there in the address space?&lt;br /&gt;
# ''From the textbook:'' A computer has 32-bit virtual addresses and 4-KB pages. The program and data together fit in the lowest page (0–4095) The stack fits in the highest page. How many entries are needed in the page table if traditional (one-level) paging is used? How many page table entries are needed for two-level paging, with 10 bits in each part?&lt;br /&gt;
&lt;br /&gt;
=== Section 4 ===&lt;br /&gt;
&lt;br /&gt;
====  Section title: File system, I/O, and management of resources ==== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====  Topics covered in this section ==== &lt;br /&gt;
&lt;br /&gt;
* File system&lt;br /&gt;
* Files and files types, attributes, and operations&lt;br /&gt;
* Paths&lt;br /&gt;
* File system layout&lt;br /&gt;
* Shared files&lt;br /&gt;
* File system backups&lt;br /&gt;
* FIle system performances&lt;br /&gt;
* General structure of I/O&lt;br /&gt;
* Block devices and character devices&lt;br /&gt;
* Device drivers&lt;br /&gt;
* Memory mapped I/O and Direct Memory Access&lt;br /&gt;
* Interrupts&lt;br /&gt;
* Programmed I/O&lt;br /&gt;
* Deadlocks&lt;br /&gt;
* Conditions for deadlocks&lt;br /&gt;
* Strategies to deal with dealocks&lt;br /&gt;
&lt;br /&gt;
====  What forms of evaluation were used to test students’ performance in this section? ==== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;tab:OSSectionEval4&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing: 2px; border: 1px solid darkgray;&amp;quot;&lt;br /&gt;
|''' '''&lt;br /&gt;
! '''Yes/No'''&lt;br /&gt;
|-&lt;br /&gt;
| Development of individual parts of software product code&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Homework and group projects&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Midterm evaluation&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Testing (written or computer based)&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Reports&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Essays&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 0&lt;br /&gt;
|-&lt;br /&gt;
| Oral polls&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|-&lt;br /&gt;
| Discussions&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
====  Typical questions for ongoing performance evaluation within this section ==== &lt;br /&gt;
&lt;br /&gt;
# What is the overall structure of a file system&lt;br /&gt;
# How are files and directories organized on a disk and what are the roles of i-nodes, when they are used&lt;br /&gt;
# What are the key differences between block and character devices.&lt;br /&gt;
# How does DMA speeds up the computations?&lt;br /&gt;
# List the major classes of strategies to handle deadlock.&lt;br /&gt;
&lt;br /&gt;
====  Typical questions for seminar classes (labs) within this section ==== &lt;br /&gt;
&lt;br /&gt;
# Create tmp directory with two empty files (file1, file2). Then, create one hard link named link1 to file1. Write a program that scans tmp directory, locates all i-nodes with a hard link count of two or more and for each such file it should display together all file names that point to the file.&lt;br /&gt;
# Implement a simulated file system that will be fully contained in a single regular file stored on the disk. This disk file will contain directories, i-nodes, free- block information, file data blocks, etc. Choose appropriate algorithms for maintaining free-block information and for allocating data blocks (contiguous, indexed, linked). Your program will accept system commands from the user to create/delete directories, create/delete/open files, read/write from/to a selected file, and to list directory contents.&lt;br /&gt;
# Create a file ex1.txt with a random string in it. Write a C program (ex1.c) that changes the string in ex1.txt to “This is a nice day” by using mmap(). Hints: '''(a)''' open the file in O_RDWR mode, '''(b)''' use stat() or fstat() to get the size of the file.&lt;br /&gt;
# Write a C program (ex2.c) using line buffer. Write your code according to the instructions: '''(a)''' each of the 5 characters of “Hello” string should be put in separate printf(), '''(b)''' add a 1 sec sleep after every printf(). The output should be a 5 sec wait and then “Hello” printed instantaneously.&lt;br /&gt;
# The tee command reads its standard input until end-of- file, writing a copy of the input to standard output and to the files named in its command-line arguments. Implement tee using I/O system calls. By default, tee overwrites any existing file with the given name. Implement the -a command-line option (tee -a file), which causes tee to append text to the end of a file if it already exists.&lt;br /&gt;
# Write a C program for deadlock detection algorithm reading the resources available form a file (input.txt). For testing purposes consider 5 processes and 3 type of resources. However, your program must be able to process as many processes and resource types, as needed (check next slide for input file structure description). The output of your program should either say that no deadlock is detected or print out the numbers of processes that are deadlocked.&lt;br /&gt;
&lt;br /&gt;
====  Test questions for final assessment in this section ==== &lt;br /&gt;
&lt;br /&gt;
# ''From the textbook:'' Two computer science students, Carolyn and Elinor, are having a discussion about i-nodes. Carolyn maintains that memories have gotten so large and so cheap that when a file is opened, it is simpler and faster just to fetch a new copy of the i-node into the i-node table, rather than search the entire table to see if it is already there. Elinor disagrees. Who is right? Why?&lt;br /&gt;
# ''From the textbook:'' A typical printed page of text contains 50 lines of 80 characters each. Imagine that a certain printer can print 6 pages per minute and that the time to write a character to the printer’s output register is so short it can be ignored. Does it make sense to run this printer using interrupt-driven I/O if each character printed requires an interrupt that takes 50 &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\mu&amp;lt;/math&amp;gt;sec all-in to service?&lt;br /&gt;
# ''From the textbook:'' Consider a disk that has 10 data blocks starting from block 14 through 23. Let there be 2 files on the disk: f1 and f2. The directory structure lists that the first data blocks of f1 and f2 are respectively 22 and 16. The FAT table is as follows: (14,18), (15,17), (16,23), (17,21), (18,20), (19,15), (20,-1), (21,-1), (22,19), (23,14), where (x,y) indicates that the value stored in table entry x points to data block y. What are the data blocks allotted to f1 and f2?&lt;br /&gt;
# ''From the textbook:'' Explain how hard links and soft links differ with respective to i-node allocations.&lt;br /&gt;
# ''From the textbook:'' When a user program makes a system call to read or write a disk file, it provides an indication of which file it wants, a pointer to the data buffer, and the count. Control is then transferred to the operating system, which calls the appropriate driver. Suppose that the driver starts the disk and terminates until an interrupt occurs. In the case of reading from the disk, obviously the caller will have to be blocked (because there are no data for it). What about the case of writing to the disk? Need the caller be blocked awaiting completion of the disk transfer?&lt;br /&gt;
# ''From the textbook:'' The banker’s algorithm is being run in a system with m resource classes and n processes. In the limit of large m and n, the number of operations that must be performed to check a state for safety is proportional to m&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;^a&amp;lt;/math&amp;gt;n&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;^b&amp;lt;/math&amp;gt; . What are the values of a and b ?&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=692</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=692"/>
		<updated>2021-09-20T12:29:40Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
==== What should a student remember at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to understand at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Some methods to achieve the fault tolerance in distributed systems &lt;br /&gt;
&lt;br /&gt;
==== What should a student be able to apply at the end of the course? ====&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to apply&lt;br /&gt;
&lt;br /&gt;
* Building a custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Writing multithreaded server and client apps with sockets&lt;br /&gt;
* Using RPC for inter-process communication: command execution, file transfer&lt;br /&gt;
* Building peer-to-peer systems with distributed protocol such as Chord&lt;br /&gt;
* Building fault-tolerant systems with failure detection and leader election&lt;br /&gt;
&lt;br /&gt;
=== Course evaluation ===&lt;br /&gt;
&lt;br /&gt;
* Lab assignments (55%) &lt;br /&gt;
* Final exam (35%)&lt;br /&gt;
* Attendance (10%)&lt;br /&gt;
In order to successfully finish the course, the student is required to score at least 50% in final exam.&lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
	<entry>
		<id>https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=691</id>
		<title>BSc: Distributed And Network Programming</title>
		<link rel="alternate" type="text/html" href="https://eduwiki.innopolis.university/index.php?title=BSc:_Distributed_And_Network_Programming&amp;diff=691"/>
		<updated>2021-09-20T11:19:21Z</updated>

		<summary type="html">&lt;p&gt;S.seytnazarov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Distributed and Network Programming =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course name:'''&amp;lt;/span&amp;gt; Distributed and Network Programming&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Course number:'''&amp;lt;/span&amp;gt; XYZ&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Knowledge area:'''&amp;lt;/span&amp;gt; xxx&lt;br /&gt;
&lt;br /&gt;
== Course characteristics ==&lt;br /&gt;
&lt;br /&gt;
=== Key concepts of the class ===&lt;br /&gt;
&lt;br /&gt;
* Network programming concepts: Layered architecture, TCP and UDP sockets, multithreaded servers&lt;br /&gt;
* Distributed systems concepts: system architecture, inter-process communication, remote procedure calls, peer-to-peer systems, coordination, replication, and fault tolerance.&lt;br /&gt;
&lt;br /&gt;
=== What is the purpose of this course? ===&lt;br /&gt;
&lt;br /&gt;
Distributed and networked systems have become an integral part of our life, we use various applications such as chatting, online transactions, or cloud storage apps. All these popular applications are supported by an infrastructure (of servers) that is organized based on some concepts of distributed systems. The purpose of this course is to provide the students with the necessary concepts, models, and real-world problem-solving techniques of network programming and distributed systems.&lt;br /&gt;
&lt;br /&gt;
=== Course Objectives Based on Bloom’s Taxonomy ===&lt;br /&gt;
&lt;br /&gt;
=== - What should a student remember at the end of the course? ===&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to recognize and define&lt;br /&gt;
&lt;br /&gt;
* Concepts of network programming&lt;br /&gt;
* Different distributed system architectures&lt;br /&gt;
* Various synchronization and coordination techniques&lt;br /&gt;
* Different consistency models and replication methods&lt;br /&gt;
* Approaches to achieve fault tolerance and security in distributed systems&lt;br /&gt;
&lt;br /&gt;
=== - What should a student be able to understand at the end of the course? ===&lt;br /&gt;
&lt;br /&gt;
By the end of the course, the students should be able to describe and explain (with examples)&lt;br /&gt;
&lt;br /&gt;
* Difference between different transport protocols, when and why one is preferred over another&lt;br /&gt;
* Building custom application protocols on top of the existing transport protocols&lt;br /&gt;
* Difference between different distributed system architectures (centralized, decentralized, and hybrid)&lt;br /&gt;
* How a mutual exclusion is achieved between concurrent servers (centralized, distributed, token-ring, and decentralized)&lt;br /&gt;
* How a new leader is elected in peer-to-peer systems (bully, ring)&lt;br /&gt;
* How to achieve a consistent replicas across distributed systems (consistency models and protocols, content replication and placement)&lt;br /&gt;
* Fault &lt;br /&gt;
&lt;br /&gt;
== Administrative details ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Faculty:'''&amp;lt;/span&amp;gt; Computer Science and Engineering&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Year of instruction:'''&amp;lt;/span&amp;gt; 4th year of BS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Semester of instruction:'''&amp;lt;/span&amp;gt; 2nd semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''No. of Credits:'''&amp;lt;/span&amp;gt; 4 ECTS&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Total workload on average:'''&amp;lt;/span&amp;gt; 144 hours overall&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal lecture hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frontal tutorial hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Lab hours:'''&amp;lt;/span&amp;gt; 2 per week&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Individual lab hours:'''&amp;lt;/span&amp;gt; 0&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Frequency:'''&amp;lt;/span&amp;gt; weekly throughout the semester&lt;br /&gt;
* &amp;lt;span&amp;gt;'''Grading mode:'''&amp;lt;/span&amp;gt; letters: A, B, C, D&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Introduction to Programming I&lt;br /&gt;
* Introduction to Programming II&lt;br /&gt;
* Operating Systems&lt;br /&gt;
* Networks&lt;br /&gt;
&lt;br /&gt;
== Course outline ==&lt;br /&gt;
&lt;br /&gt;
This course focuses on the programming aspects of computer networks. Students will understand the current trends in communication protocols, socket programming and interprocess communication. Network programming will be covered for what concerns both wired networks and wireless networks.&lt;br /&gt;
&lt;br /&gt;
== Expected learning outcomes ==&lt;br /&gt;
&lt;br /&gt;
* Understanding issues in concurrent network applications&lt;br /&gt;
* Understand issues in implementing client/server systems using distributed programming techniques&lt;br /&gt;
* Implementing multithreaded client/server applications&lt;br /&gt;
&lt;br /&gt;
== Expected acquired core competences ==&lt;br /&gt;
&lt;br /&gt;
* Network programming&lt;br /&gt;
* Socket programming&lt;br /&gt;
* Client/Server applications&lt;br /&gt;
* Peer to peer network programming&lt;br /&gt;
&lt;br /&gt;
== Textbook ==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Reference material ==&lt;br /&gt;
&lt;br /&gt;
* Lecturing and lab slides and material will be provided&lt;br /&gt;
* Several resources are available online and will be pointed during the course&lt;br /&gt;
&lt;br /&gt;
== Required computer resources ==&lt;br /&gt;
&lt;br /&gt;
Students should have laptops.&lt;br /&gt;
&lt;br /&gt;
== Evaluation ==&lt;br /&gt;
&lt;br /&gt;
* Assignments and project (30%)&lt;br /&gt;
* Mid-term Exam (30 %)&lt;br /&gt;
* Written Final (40%)&lt;/div&gt;</summary>
		<author><name>S.seytnazarov</name></author>
	</entry>
</feed>