Data Structures and Algorithms - Syllabus
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-001Overview 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-002Fundamentals of .NET architecture and design principles that guide the development of .NET applications.
-
Compilation and Execution of .NET Applications
IN-003How .NET applications are compiled and executed, including the roles of CLI, MSIL, and CLR.
Key Topics
-
Relational Model Concepts
TH-1This topic covers the fundamental concepts of the relational model, including domains, attributes, tuples, and relations, as well as the characteristics of relations.
-
Relational Model Constraints
TH-2This topic explores the different types of constraints in the relational model, including domain constraints, key constraints, and constraints on null values.
-
Relational Database Schemas
TH-3This topic discusses the concept of relational database schemas, including relational database state, entity integrity, referential integrity, and foreign keys.
-
Update Operations and Transactions
TH-4This topic covers update operations, transactions, and how to deal with constraint violations, including insert, delete, and update operations, as well as restrict, cascade, set null, and set default.
-
Basic Relational Algebra Operations
TH-5This topic introduces basic relational algebra operations, including unary operations (select, project, rename) and binary operations (set theory, Cartesian product, join, and outer join).
Key Topics
-
Query Processing
QU-1Concept of query processing, including the steps involved in processing a query and the role of the query processor.
-
Query Trees and Heuristics
QU-2Query trees and heuristics for query optimization, including the use of query trees to represent queries and heuristics to guide optimization.
-
Query Execution Plans
QU-3Choice of query execution plans, including the factors that influence the choice of plan and the importance of plan selection.
-
Cost-Based Optimization
QU-4Cost-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-5This 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-6This 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-1Learn 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-2Understand 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-3Study 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-4Explore 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-5Learn 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-6Understand multivalued dependency and Fourth Normal Form, which eliminates multivalued dependencies in a relational schema.
Key Topics
-
Introduction to Transaction Processing
TR-1This 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-2This topic covers the fundamental concepts of transactions, including transaction states, system log, and commit point of transaction.
-
Desirable Properties of Transactions
TR-3This topic discusses the desirable properties of transactions, namely atomicity, consistency, isolation, and durability (ACID).
-
Schedules and Concurrency Control
TR-4This 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-5This topic introduces concurrency control techniques, including two-phase locking and timestamp ordering.
-
Two-Phase Locking
TR-6This 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-7This topic covers timestamp ordering, including timestamp, read timestamp, write timestamp, basic timestamp ordering, and strict timestamp ordering.
-
The Huffman Algorithm
TR-8Understanding the Huffman algorithm and its application in data compression.
-
Game Trees
TR-9Exploring game trees and their application in game development and decision-making.
-
B-Trees
TR-10Introduction to B-trees, a self-balancing search tree data structure.
Key Topics
-
Software Project Management
SO-01Overview of software project management, including activities and best practices to ensure successful project delivery.
-
Project Planning
SO-02Detailed planning of software projects, including software pricing, plan-driven development, project scheduling, estimation techniques, and COCOMO cost modeling.
-
Risk Management
SO-03Identifying, assessing, and mitigating risks in software projects to minimize potential threats and ensure successful project delivery.
-
People Management
SO-04Effective management of project team members, including communication, collaboration, and conflict resolution.
-
Reporting and Proposal Writing
SO-05Creating effective reports and proposals to stakeholders, including project status updates, progress reports, and bid proposals.
-
Introduction to Quality Management
SO-06Fundamentals of quality management in software development, including quality assurance, quality control, and quality metrics.
-
Configuration Management
SO-07Managing changes to software configurations, including version control, change control, and release management.
-
Boundary Value Problems
SO-10Introduction to boundary value problems, including their definition and importance in ODEs.
-
Shooting Method
SO-11Numerical method for solving boundary value problems, including its algorithm and applications.
-
User Testing
SO-08Testing techniques and methods used to validate software from the user's perspective.
-
Software Prototyping
SO-12A software development approach that involves creating a working model of a software product. Understanding the principles and benefits of software prototyping.
-
Rational Unified Process (RUP)
SO-13A software development process framework that provides a structured approach to software development. Understanding the principles and benefits of RUP.
-
Computer Aided Software Engineering (CASE)
SO-14A software development approach that uses automated tools and techniques to support software development. Understanding the principles and benefits of CASE.
-
Radix Sort
SO-09A non-comparative sorting algorithm that sorts data based on the digits of the elements, starting from the most significant digit.
Key Topics
-
Challenges and Approach of E-government Security
SE-1This 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-2This 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-3This 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-4This 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-5Security measures for protecting data during transactions in e-commerce.
-
Security Mechanisms
SE-6Various 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-7Exploring 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-8Understanding how to handle HTTP requests and responses using servlets, including request and response objects.
Key Topics
-
Introduction to Algorithms
AL-1Introduction to algorithms, their importance, and properties.
-
Analysis of Algorithms
AL-2Concepts of analysis of algorithms, including asymptotic notations (Big Oh) and their properties.
-
Time Complexity
AL-3Measuring the time complexity of algorithms, including the concept of Big Oh notation.
-
Space Complexity
AL-4Measuring the space complexity of algorithms, including the concept of memory usage.
Key Topics
-
Optimization Problems and Greedy Algorithms
GR-1Introduction to optimization problems and the concept of optimal solutions, with an overview of greedy algorithms and their elements.
-
Greedy Algorithm Applications
GR-2Exploration of various applications of greedy algorithms, including fractional knapsack, job sequencing with deadlines, Kruskal's algorithm, Prim's algorithm, and Dijkstra's algorithm.
-
Huffman Coding
GR-3Introduction to Huffman coding, including its purpose, prefix codes, and the Huffman coding algorithm, along with its analysis.
-
Social Network Analysis
GR-4Social network analysis is the process of examining social structures, relationships, and interactions within a network. It involves using graph theory and statistical methods to understand social behavior and patterns.
-
Link Mining
GR-5Link mining is a subfield of graph mining that focuses on the analysis of links between nodes in a graph. It involves discovering patterns and relationships between entities in a network.
-
Friends of Friends
GR-6Friends of friends is a concept in social network analysis that refers to the friends of an individual's friends. It is used to study social relationships and network structures.
-
Degree Assortativity
GR-7Degree assortativity is a measure of the tendency of nodes in a network to be connected to other nodes with similar degrees. It is used to study network structures and patterns.
-
Signed Networks
GR-8Signed networks are graphs that contain both positive and negative edges, representing friendships and antagonisms between nodes. It involves using theories such as structured balance and status to analyze signed networks.
-
Trust in a Network
GR-9Trust in a network refers to the level of confidence or reliability between nodes. It involves using algorithms such as atomic propagation and iterative propagation to predict trust and distrust in a network.
-
Predicting Positive and Negative Links
GR-10This topic involves using machine learning and graph mining techniques to predict the formation of positive and negative links in a network, such as friendships and antagonisms.
-
Dijkstra's Algorithm
GR-11Dijkstra's algorithm for finding shortest paths in a graph.
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