Skip to main content
Engineering LibreTexts

Course Overview

  • Page ID
    50098
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Course Goals

    Upon completion of this course the learner should be able to:

    • explain the fundamentals of data structures
    • discuss the importance of algorithms in problem solving
    • determine which data structures are most effective for various scenarios and problems
    • create data structures
    • apply the appropriate data structure for modeling a given problem

    Welcome to Data Structures and Algorithms

    “Every program depends on algorithms and data structures, but few programs depend on the invention of brand new ones.”! “I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships.”!

    This course introduces students to data structures and algorithms, and how data structures can be created and used. The application of data structures will be presented on the basis of various algorithms. This course teaches learners the way information is organized in the computer and which have an impact on the performance of the computer. The purpose of this course is to provide the students with solid foundations in the basic concepts of programming: data structures and algorithms. The main objective of the course is to teach the students how to select and design data structures and algorithms that are appropriate for problems that they might encounter. This course is also about showing the correctness of algorithms and studying their computational complexities. This course offers the students a mixture of theoretical knowledge and practical experience. The study of data structures and algorithms is carried out within an object-oriented framework. When implementations are considered, the Java programming language is used.

    Prerequisites

    • Introduction to computer science
    • Principles of programming

    Materials

    The materials required to complete this course are:

    Textbooks on algorithms, including:

    • V. Das, (2008). Principles of Data Structures and Algorithms using C and C++,
    • SAMS. (1999). Teach Yourself Data Structures And Algorithms In 24 hours.
    • D.S. Malik, (2010). Data Structures Using C++, Second Edition,
    • Christopher Fox. (2012). Concise Notes on Data Structures and Algorithms, Ruby Edition.
    • Adam Drozdek. Data Structures and Algorithms in Java, SECOND EDITION.
    • Internet
    • Java
    • Lecture notes

    Course Goals

    Upon completion of this course the learner should be able to:

    Identify the major classical and modern AI paradigms,

    Analyze the concepts and techniques of Artificial Intelligence.

    Learning AI by developing skills of using AI algorithms for solving practical problems. Analyze the structure of a given problem such that they can choose an appropriate method implement AI algorithms. To appreciate an intelligent machine which is capable of reasoning, planning, solving problems, thinking abstractly, comprehending complex ideas, learning quickly and learning from experience.

    The notes are intended to enable the learner learn the data structure course. They are placed in the respective areas of each unit in the module. The notes may be supplemented by further reading of the provided materials or resources as indicated in the relevant sections. The web-links can also provide more information related to the indicated sections.

    Units

    Unit 0: Introduction to basic computing and programming

    This unit is aimed at students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems. It also aims to help students, regardless of their major, to feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals.

    Unit 1: Algorithmic Problem Solving; introduction to algorithms and problem solving, characteristics of algorithm, using pseudo code and flowcharts to represent algorithms

    This unit provides an introduction to mathematical modeling of computational problems. It covers the common algorithms, algorithmic paradigms, and data structures used to solve these problems. The course emphasizes the relationship between algorithms and programming, and introduces basic performance measures and analysis techniques for these problems.

    Unit 2: Recursion; Recursive algorithm

    This unit entails solving problems with recursive algorithms, computing functions with recursive algorithms and checking set membership with recursive algorithms.

    Unit 3: Basic Data structures and Abstract data types; arrays, lists, linked lists; stack, queues, hashing and trees

    Abstract data types are a set of data values and associated operations that are precisely specified independent of any particular implementation.

    Unit 4: Searching and sorting algorithms

    Two for each of the following common tasks:

    • sorting: ordering a list of values
    • searching: finding the position of a value within a list

    Assessment

    Formative assessments, used to check learner progress, are included in each unit.

    Summative assessments, such as final tests and assignments, are provided at the end of each module and cover knowledge and skills from the entire module.

    Summative assessments are administered at the discretion of the institution offering the course. The suggested assessment plan is as follows:

    1

    Class assignments

    10%

    2

    CATS

    20%

    3

    End of semester exams

    70%

    Schedule

    Unit

    Activities

    Estimated time

    0

    Preview of the pre-requisite

    1. Introduction to computer science
    2. Principles of programming

    3 hours

    1

    Algorithmic problem solving

    • Activity 1.1 - Introduction to Algorithms and problem solving
    • Activity 1.2 - The characteristics of an algorithm
    • Activity 1.3 - Using pseudo-codes and flowcharts to represent algorithms

    6 hours

    2

    Recursion

    • Activity 2.1 - Recursive Algorithm

    6 hours

    3

    Basic Data structures and Abstract data types

    • Activity 3.1 - Data Structures
    • Activity 3.2 – Operations of Lists
    • Activity 3.3 - Abstract Data Type

    15 hours

    4

    Searching and Sorting Algorithms

    • Activity 4.1 - Searching Algorithm
    • Activity 4.2 - Sorting algorithm
    9 hours

    Readings and Other Resources

    The readings and other resources in this course are:

    Unit 0

    Required readings and other resources:

    • Paolo Coletti. (2014). Basic Computer course book, 8TH Edition:
    • Bjarne Stroustrup, (2014). Programming: Principles and Practice Using C++, ISBN 0321992784, Publisher: Addison Wesley,

    Unit 1

    Required readings and other resources:

    • V. Das, (2008). Principles of Data Structures and Algorithms using C and C++
    • SAMS. (1999). Teach Yourself Data Structures And Algorithms In 24 hours.
    • Data Structures. (2010). Using C++, Second Edition, D.S. Malik,
    • Christopher Fox. (2012). Concise Notes on Data Structures and Algorithms, Ruby Edition.
    • Adam Drozdek, Data Structures and Algorithms in Java, SECOND EDITION

    Unit 2

    Required readings and other resources:

    • V. Das, (2008). Principles of Data Structures and Algorithms using C and C++.
    • SAMS (1999). Teach Yourself Data Structures And Algorithms In 24 hours.
    • Adam Drozdek, Data Structures and Algorithms in Java, SECOND EDITION.
    • Christopher Fox. (2012). Concise Notes on Data Structures and Algorithms, Ruby Edition.

    Unit 3

    Required readings and other resources:

    • SAMS (1999). Teach Yourself Data Structures And Algorithms In 24 hours.
    • Christopher Fox. (2012). Concise Notes on Data Structures and Algorithms, Ruby Edition.
    • Adam Drozdek, Data Structures and Algorithms in Java, SECOND EDITION.
    • Vic Broquard. (2014). Beginning Data Structures in C++, ISBN 1941415547, Publisher: Broquard eBooks, United States,
    • Data Structures Using C++, Second Edition, D.S. Malik, 2010
    • Harry H Chaudhary. (2014). Practical Data Structures Using C .: Beginner's Easy Edition. ISBN 1500136972; Publisher: Createspace, United States,
    • Harry H Chaudhary. (2014). Teach Yourself Data Structures and Algorithms in 15 Days.: Beginner s Guide. ISBN 1500137251; Publisher: Createspace, United States,

    Unit 4

    Required readings and other resources:

    • V. Das, (2008). Principles of Data Structures and Algorithms using C and C++
    • Adam Drozdek, Data Structures and Algorithms in Java, SECOND EDITION.
    • Optional readings and other resources:
    • Robert Sedgewick, (2012). ALGORITHMS IN C : FUNDAMENTALS, DATA STRUCTURES, SORTING, SEARCHING, PARTS 1-4, ISBN 8131713059; Publisher: Pearson Education/AW Professional,
    • Robert Sedgewick, (2001). Algorithms in C: Parts 1-5: Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms, ISBN 8178082497; Publisher: Addison Wesley,
    • Was this article helpful?