• Home
  • University of the People
  • Data Structures (proctored course) CS 3303
  • Data Structures and Algorithms

Data Structures and Algorithms

1/9/22, 10:53 AM Learning Guide Unit 1 Introduction Unit one should introduce some new material and a lot of material that is familiar form preceding courses including mathematical concepts such as logarithms, sets, and relations. It is extremely important that you develop a level of proficiency with logarithms as they will be used throughout the course as part of the Asymptotic Analysis process. In Chapter one of the Shaffer text, we will be introduced to the need for data structures and the terminology that is employed with data structures. We will also be introduced to the role that algorithms play in problem solving. What we quickly begin to realize is that the data structures and algorithms are inextricably linked to each other as data structures (such as binary trees, lists, linked lists, heaps, stacks, queues, and other structures) are implemented with their corresponding algorithms. The role of algorithms certainly does extend beyond the implementation of data structures; however, it is impossible to study the one without gaining an understanding of the other. An important concept that we are introduced to is the idea of the cost and resource tradeoffs that must be considered when developing data structures or algorithms. Computer capabilities are increasing all the time. In 1965 Gordon Moore made a prediction about the increase in computing capability which has become known as Moore's law. "Moore's law describes a long-term trend in the history of computing hardware. The number of transistors that can be placed inexpensively on an integrated circuit doubles approximately every two years. This trend has continued for more than half a century and is expected to continue until 2015 or 2020 or later." (Wikipedia, 2011) Despite Moore's prediction, computing capabilities are finite and as algorithms for computing the Fibonacci number sequence quickly illustrate an algorithm (see exercise 2.11 in the Shaffer text) that has not considered the limitations of performance cost and space constraints may not be efficient on even the fastest computers. The approach that we will use to evaluate the efficiency of an algorithm in terms of space or processing time is referred to as Asymptotic analysis and will be explored in more depth during unit 2. In unit 1, however, we review some basic mathematical concepts such as sets, relations, logarithms, recurrences, and summations https://my.uopeople.edu/mod/book/tool/print/index.php?id=268714 6/13 1/9/22, 10:53 AM Learning Guide Unit 1 Sets and relations provide us with the language and grammar to describe sets and sets are fundamental to the development of data structures and algorithms. Logarithms, as we will learn in unit 2, help to explain the growth in processing time required for some algorithms, particularly searches and sorts, as the size of the input increases. In the simplest of terms, the logarithm of a number to a given base is the exponent by which the base must be raised to produce that number. For example: Log1o 1000 = 3 this is the equivalent of saying 103 = 1000 Another way of putting this is to say that we use