Data Structures and Algorithms - Syllabus

Course Overview and Structure

Embark on a profound academic exploration as you delve into the Data Structures and Algorithms course (DSA) within the distinguished Tribhuvan university's BIT department. Aligned with the BIT Curriculum, this course (BIT201) seamlessly merges theoretical frameworks with practical sessions, ensuring a comprehensive understanding of the subject. Rigorous assessment based on a 80 + 20 marks system, coupled with a challenging passing threshold of , propels students to strive for excellence, fostering a deeper grasp of the course content.

This 3 credit-hour journey unfolds as a holistic learning experience, bridging theory and application. Beyond theoretical comprehension, students actively engage in practical sessions, acquiring valuable skills for real-world scenarios. Immerse yourself in this well-structured course, where each element, from the course description to interactive sessions, is meticulously crafted to shape a well-rounded and insightful academic experience.


Course Synopsis: This course contains the concepts of different types of data structures and concepts of algorithms and their analysis.

Course Objective: This course aims to provide sufficient theoretical and practical knowledge of data structure and algorithms required to build efficient programs.

Units

Key Topics

  • Concept of Backtracking
    BA-1

    This topic introduces the concept of backtracking, a problem-solving strategy that involves recursively exploring all possible solutions and backtracking when a dead end is reached. It also compares and contrasts backtracking with recursion.

  • Backtracking Algorithms
    BA-2

    This topic covers various backtracking algorithms, including those for solving the subset-sum problem, zero-one knapsack problem, and N-queen problem, along with their analysis.

  • Instruction Format and Control Unit
    BA-3

    This topic covers the instruction format, instruction set completeness, and the control unit of a basic computer. It explains how the control unit retrieves and executes instructions.

  • Instruction Cycle and Interrupt Handling
    BA-4

    This topic explains the instruction cycle of a basic computer, including determining the type of instruction, memory reference instructions, input-output instructions, and program interrupts. It also covers the interrupt cycle and how it affects computer operation.

  • Basic Computer Description and Flowchart
    BA-5

    This topic provides a detailed description and flowchart of a basic computer, illustrating how the different components work together to execute instructions and perform tasks.

  • Pointers
    BA-6

    Concept of pointers in programming, including their use in data structures and memory management.

Key Topics

  • Introduction to Algorithms
    AL-1

    Introduction to algorithms, their importance, and properties.

  • Analysis of Algorithms
    AL-2

    Concepts of analysis of algorithms, including asymptotic notations (Big Oh) and their properties.

  • Time Complexity
    AL-3

    Measuring the time complexity of algorithms, including the concept of Big Oh notation.

  • Space Complexity
    AL-4

    Measuring the space complexity of algorithms, including the concept of memory usage.

Key Topics

  • State Management on Stateless HTTP
    ST-1

    Understanding state management in stateless HTTP protocol and its implications on ASP.NET Core application development.

  • Server-side Strategies
    ST-2

    Exploring server-side strategies for state management in ASP.NET Core applications, including Session State, TempData, and Using HttpContext.

  • Session State
    ST-3

    Using Session State to store and manage user data in ASP.NET Core applications.

  • TempData
    ST-4

    Using TempData to store and manage temporary data in ASP.NET Core applications.

  • Using HttpContext
    ST-5

    Using HttpContext to access and manage HTTP request and response data in ASP.NET Core applications.

  • Cache
    ST-6

    Using Cache to store and manage frequently accessed data in ASP.NET Core applications.

Key Topics

  • Query Processing
    QU-1

    Concept of query processing, including the steps involved in processing a query and the role of the query processor.

  • Query Trees and Heuristics
    QU-2

    Query trees and heuristics for query optimization, including the use of query trees to represent queries and heuristics to guide optimization.

  • Query Execution Plans
    QU-3

    Choice of query execution plans, including the factors that influence the choice of plan and the importance of plan selection.

  • Cost-Based Optimization
    QU-4

    Cost-based optimization, including the use of cost estimates to guide optimization and the role of cost-based optimization in query processing.

  • Measurement of Queueing System Performance
    QU-5

    This topic covers the metrics and methods used to measure the performance of queuing systems, including efficiency, effectiveness, and quality of service.

  • Networks of Queuing Systems
    QU-6

    This topic explores the concept of networks of queuing systems, with a focus on computer systems and their applications.

  • Applications of Queuing Systems
    QU-7

    This topic highlights the various applications of queuing systems in real-world scenarios, including manufacturing, healthcare, and transportation.

  • Priority Queue (Ascending Priority)
    QU-8

    Explanation of the concept of a priority queue with ascending priority, where elements are ordered based on their priority.

  • Priority Queue (Descending Priority)
    QU-9

    Explanation of the concept of a priority queue with descending priority, where elements are ordered based on their priority.

Key Topics

  • Relational Database Design Using ER-to-Relational Mapping
    RE-1

    Learn how to design relational databases using ER-to-relational mapping, including mapping of regular entities, weak entities, relationship types, multivalued attributes, and N-ary relationships.

  • Informal Design Guidelines for Relational Schemas
    RE-2

    Understand informal design guidelines for relational schemas, including semantics of attributes in relations, redundant information in tuples and update anomalies, NULL values in tuples, and generation of spurious tuples.

  • Functional Dependencies
    RE-3

    Study functional dependencies, including definition, inference rules, Armstrong's axioms, attribute closure, equivalence of functional dependencies, and minimal sets of functional dependencies.

  • Normal Forms Based on Primary Keys
    RE-4

    Explore normal forms based on primary keys, including First Normal Form, Second Normal Form, Third Normal Form, and their general definitions.

  • Boyce-Codd Normal Form
    RE-5

    Learn about Boyce-Codd Normal Form, a higher normal form that ensures a relational schema is in a good structure.

  • Multivalued Dependency and Fourth Normal Form
    RE-6

    Understand multivalued dependency and Fourth Normal Form, which eliminates multivalued dependencies in a relational schema.

  • Properties of Relational Decomposition
    RE-7

    Study properties of relational decomposition, including attribute preservation, dependency preservation, and loss-less/non-additive join.

  • Applications of Recursion
    RE-8

    This topic explores the various applications of recursion in problem-solving, including tree traversals and dynamic programming.

Key Topics

  • History of Linux
    LI-1

    Overview of the development and evolution of the Linux operating system.

  • Kernel Modules
    LI-2

    Understanding kernel modules, their types, and their role in extending Linux kernel functionality.

  • Process Management
    LI-3

    Managing processes in Linux, including process creation, synchronization, and termination.

  • Scheduling
    LI-4

    Linux scheduling algorithms and their role in allocating system resources to processes.

  • Inter-process Communication
    LI-5

    Methods and mechanisms for communication between processes in Linux.

  • Memory Management
    LI-6

    Linux memory management techniques, including memory allocation, deallocation, and protection.

  • File System Management Approaches
    LI-7

    Different file system management approaches used in Linux, including organization and structure.

  • Device Management Approaches
    LI-8

    Linux device management approaches, including device drivers and hardware interaction.

  • Linked Implementation of Stack and Queue
    LI-9

    Using singly linked lists to implement stacks and queues.

Key Topics

  • Introduction to Transaction Processing
    TR-1

    This topic introduces the concept of transaction processing, highlighting the differences between single user and multi-user systems, read/write operations, and the need for concurrency control to avoid problems such as lost update, temporary update, incorrect summary, and unrepeatable read.

  • Transaction and System Concepts
    TR-2

    This topic covers the fundamental concepts of transactions, including transaction states, system log, and commit point of transaction.

  • Desirable Properties of Transactions
    TR-3

    This topic discusses the desirable properties of transactions, namely atomicity, consistency, isolation, and durability (ACID).

  • Schedules and Concurrency Control
    TR-4

    This topic explores schedules, conflicting operations, and characterizing schedules based on recoverability and serializability, including serial, non-serial, and conflict serializable schedules.

  • Concurrency Control Techniques
    TR-5

    This topic introduces concurrency control techniques, including two-phase locking and timestamp ordering.

  • Two-Phase Locking
    TR-6

    This topic delves into two-phase locking, including types of locks, basic, conservative, strict, and rigorous two-phase locking, deadlock and starvation, deadlock prevention, and deadlock detection.

  • Timestamp Ordering
    TR-7

    This topic covers timestamp ordering, including timestamp, read timestamp, write timestamp, basic timestamp ordering, and strict timestamp ordering.

Key Topics

  • Errors in Numerical Calculations
    SO-1

    This topic covers the sources of errors in numerical calculations, propagation of errors, and a review of Taylor's Theorem.

  • Trial and Error Method
    SO-2

    This topic explains the trial and error method for solving non-linear equations, including its convergence.

  • Half-Interval Method
    SO-3

    This topic covers the half-interval method for solving non-linear equations, including its convergence.

  • Newton's Method
    SO-4

    This topic explains Newton's method for solving non-linear equations, including its convergence and application to calculating multiple roots.

  • Secant Method
    SO-5

    This topic covers the secant method for solving non-linear equations, including its convergence.

  • Fixed Point Iteration
    SO-6

    This topic explains the fixed point iteration method for solving non-linear equations, including its convergence.

  • Horner's Method
    SO-7

    This topic covers Horner's method for solving non-linear equations.

Key Topics

  • Challenges and Approach of E-government Security
    SE-1

    This topic covers the challenges faced by e-government in terms of security and the approaches to address them. It explores the importance of security in e-government and the ways to mitigate risks.

  • Security Management Model
    SE-2

    This topic introduces a security management model for e-government, outlining the key components and processes involved in ensuring the security of e-government systems.

  • E-Government Security Architecture
    SE-3

    This topic delves into the architecture of e-government security, including the design and implementation of secure systems and infrastructure for e-government services.

  • Security Standards
    SE-4

    This topic covers the security standards and guidelines for e-government, including international standards and best practices for ensuring the security of e-government systems and data.

  • Data Transaction Security
    SE-5

    Security measures for protecting data during transactions in e-commerce.

  • Security Mechanisms
    SE-6

    Various security mechanisms used in e-commerce including cryptography, hash functions, digital signatures, authentication, access controls, intrusion detection systems, and secured socket layer (SSL).

  • javax.servlet.http Package
    SE-7

    Exploring the javax.servlet.http package, including key classes and interfaces. Understanding how to use the package to develop HTTP-based servlets.

  • Handling HTTP Requests and Responses
    SE-8

    Understanding how to handle HTTP requests and responses using servlets, including request and response objects.

  • Using Cookies
    SE-9

    Understanding how to use cookies in servlets, including setting and retrieving cookie values.

Definition, Representation of Graph, Types of Graph, Graph Traversal: Depth First Search, Breadth First Search Spanning Tree, Prim’s Algorithm, Kruskal’s algorithm and Round Robin Algorithm, Shortest Path Algorithm, Greedy and Dijkstra’s Algorithm

Lab works

Data Structure and Algorithm is highly practical oriented course. Each unit should include plenty of programming practices. Laboratory work should include implementation of Stack, Queue, Lists, Tree, Graphs, and Recursive functions as well as implementation of Sorting Algorithms and Searching Algorithms. Laboratory exercises can be implemented in high level programming languages like C or C++.

Some important contents that should be included in lab exercises are as follows:

• Write a program to implement array as an ADT.

• Writing programs to implement stack operations

• Writing programs using stack to convert infix expression to postfix/prefix expression

• Write a program to evaluate postfix expression using stack

• Writing programs to implement primitive operation in linear and circular queue. 

• Writing recursive programs to implement factorial, Fibonacci sequence, GCD, and Tower of Hanoi algorithms

• Writing programs with dynamic memory allocation and de-allocation

• Writing programs for operation of linear linked list

• Linked list implementation of stack and queue

• Writing programs to implement Binary Search Trees basic operations

• Writing programs to implement sorting algorithms; bubble, insertion, selection, merge and quick sort

• Writing programs to implement: sequential, binary search and hashing

• Writing programs to implement searching, spanning tree and shortest path algorithms in graph