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 BCA department. Aligned with the BCA Curriculum, this course (CACS201) seamlessly merges theoretical frameworks with practical sessions, ensuring a comprehensive understanding of the subject. Rigorous assessment based on a 60 + 20 + 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 Description

This course includes fundamental concept of data structures such as stack, queue, list. 

linked list, trees and graph: application of these data structures along with several algorithms.

Course Objectives

The general objective of this course is to provide fundamental concepts of data structures, different algorithms and their implementation.

Units

Key Topics

  • .NET and ASP.NET Frameworks
    IN-001

    Overview of .NET and ASP.NET frameworks including .NET, .NET Core, Mono, ASP.NET Web Forms, ASP.NET MVC, ASP.NET Web API, and ASP.NET Core.

  • .NET Architecture and Design Principles
    IN-002

    Fundamentals of .NET architecture and design principles that guide the development of .NET applications.

  • Compilation and Execution of .NET Applications
    IN-003

    How .NET applications are compiled and executed, including the roles of CLI, MSIL, and CLR.

Introduction, Stack as an ADT, POP and PUSH Operation, Stack Application: Evaluation of Infix, Postfix, and Prefix Expressions, Conversion of Expression.

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.

Introduction, Static and Dynamic List Structure, Array Implementation of Lists, Queue as a list

Introduction, Linked List as an ADT, Dynamic Implementation, Insertion & Deletion of Nodes, Linked Stacks and Queues, Doubly Linked Lists and Its Advantages

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.

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.

  • The Huffman Algorithm
    TR-8

    Understanding the Huffman algorithm and its application in data compression.

  • Game Trees
    TR-9

    Exploring game trees and their application in game development and decision-making.

  • B-Trees
    TR-10

    Introduction to B-trees, a self-balancing search tree data structure.

Introduction, Internal and External Sort, Insertion and Selection Sort, Exchange Sort, Bubble and Quick Sort, Merge and Radix Sort, Shell Sort, Binary Sort, Heap Sort as Priority Queue, Efficiency of Sorting, Big'O'Notation.

Introduction to Search Technique; essential of search, Sequential search, Binary search, Tree search, General search tree, Hashing: Hash function and hash tables, Collision resolution technique, Efficiency comparisons of different search technique.

Deterministic and Non-deterministic Algorithm, Divide and Conquer Algorithm, Series and Parallel Algorithm, Heuristic and Approximate Algorithms

Introduction, Graphs as an ADT, Transitive Closure, Warshall's Algorithm, Types of Graph, Graph Traversal and Spanning Forests, Kruskal's and Round-Robin Algorithms, Shortest- path Algorithm, Greedy Algorithm, DijKstra's Algorithm

Lab works

Laboratory Works 

There shall be 10 lab exercises based on C or Java

I. Implementations of different operations related to Stack

2. Implementations of different operations related to linear and circular queues

3. Solutions of TOH and Fibonacci Series using Recursion

4. Implementations of different operations related to linked list: singly and doubly linked

5. Implementation of trees: AVL trees, Balancing of AVL

6. Implementation of Merge sort

7. Implementation of different searching technique: sequential, Tree and Binary

8. Implementation of Graphs: Graph traversals

9. Implementation of Hashing

10. Implementations of Heap