Sunday, August 28, 2022

CPT 307 Week 5 Newbie to Newbie

Applying algorithmic design and data structure techniques creating structured programs

 

https://www.prepbytes.com/summer-programs/master-data-structures-and-algorithms

           The information industry wants structured applications that efficiently handle the enormous amount of required data. For example, companies like Amazon and Facebook have large amounts of information that must be easily accessed and stored. Proper design of data structures combined with the best algorithms creates a fast retrieval from searching and sorting these massive data structures. According to Shaffer (2013), There is a benefit and costs attributed to each algorithm and data structure created. Having the fastest search and sort Big O time may result in having taken up too much space (Zeigler, J. (2004).

Learning about the different data structures helps understand that some are best in some situations, not others. The same holds true for algorithms. Algorithmic thinking is breaking a problem down into input – problem – output. The key is matching a data structure and algorithms to the needs of the application at hand and making efficient use of the systems resources (section 1). Problems of the past that could not be solved are now ready to be solved. New processing power and precise design of these systems combined with data structures and algorithms are needed to meet the demands today and in the future.

Some basic examples of data structures include stack, array, queue, stack, tree, linked lists, hash tables, trees, heaps, graphs, etc. An excellent website to review some of these data structures is by Mallawaarachchi (2020) https://towardsdatascience.com/8-common-data-structures-every-programmer-must-know-171acf6a1a42.

https://towardsdatascience.com/seven-7-essential-data-structures-for-a-coding-interview-and-associated-common-questions-72ceb644290


https://coderscat.com/how-to-learn-data-structures-and-algorithms/

Some basic sort algorithms are merge, quick, bucket, heap, counting, etc. Some sorts are faster than others on small data but could take years to sort millions of data items. Search algorithms like linear search, search one by one, and binary search uses divide and conquer is faster but requires the list to be sorted. Some other search algorithms are Depth/Breadth First search, hashing, Dynamic programming, String matching and Parsing, Exponentiation by squaring or Binary exponentiation, and many others (Ozturk.27, 2016). Ozturk27 gives an example of Binary exponentiation:

“Say you want to calculate 232. Normally we’d iterate 32 times and find the result. What if I told you it can be done in 5 iterations?”

“Exponentiation by squaring or Binary exponentiation is a general method for fast computation of large positive integer powers of a number in O(log2N). Not only this, but the method is also used for computation of powers of polynomials and square matrices. (p5)”

Some algorithms and data structure designs are better than others. For example, Brute-force or exhaustive search can take little time if done on a small power of 2 or 3, but as the powers get larger, the method could take years in the worst case (Complexity (n.d). Another example would be the google search engine algorithm, which is unique in ranking web pages to allow search by relevancy. Analyzing the program, and quantifying resources, will determine which data structure and algorithm can be used for each situation (Lysecky, Vahid, Lysecky, & Givargis, (2015). A good course that explains Algorithms and Data Structures is by McGavren (2021), located at the following link: https://www.youtube.com/watch?v=8hly31xKli0.

As a new programmer learning as many techniques as possible in developing structured programs will assist in the journey to apply algorithmic design and data structure techniques in developing structured programs. Each situation requires analysis to find the needs to meet the expectations of a successful program. Utilizing testing methods for a specific range of different data structures and algorithms is necessary for effective results. Breaking problems down into simpler subproblems can lead to quickly solving the complex issues later (Ozturk.27, 2016). Programming will require understanding data structure and algorithms to design a better future for all.

 

https://universalfreecourse.com/data-structures-and-algorithms-in-python-free-download

 


 

References

Complexity analysis (Links to an external site.). (n.d.). Retrieved from http://www.cs.utexas.edu/users/djimenez/utsa/cs1723/lecture2.html

Lysecky, R., Vahid, F., Lysecky, S., & Givargis, T. (2015). Data structures essentials. Retrieved from https://zybooks.zyante.com/#/zybook/DataStructuresEssentialsR25/chapter/1/section/3

McGavren J. (18 March 2021) Algorithms and Data Structures Tutorial - Full Course for Beginners. Retrieved from https://www.youtube.com/watch?v=8hly31xKli0

Mallawaarachchi V. (27 February 2020) 8 Common Data Structures every Programmer must know. Retrieved from https://towardsdatascience.com/8-common-data-structures-every-programmer-must-know-171acf6a1a42

Ozturk.27 (21 November 2016) 7 algorithms and data structures every programmer must know. Retrieved from https://u.osu.edu/cstutorials/2016/11/21/7-algorithms-and-data-structures-every-programmer-must-know/

Shaffer C. (March 2013) Data Structures and Algorithm Analysis. Retrieved from

            https://people.cs.vt.edu/~shaffer/Book/JAVA3elatest.pdf

Zeigler, J. (2004). Time, complexity, space complexity, and the O-notation (Links to an external site.). Retrieved from http://www.leda-tutorial.org/en/official/ch02s02s03.html 

CPT 307 Week 5 Newbie to Newbie

Applying algorithmic design and data structure techniques creating structured programs   https://www.prepbytes.com/summer-programs/master-...