Organizing the heart of machine, participating: Siyuan, Xiaokun.

The word algorithm has a magic about it. It seems that any task can be automated with it, and any magical new discovery can be made without the help of algorithms. So what is an algorithm, and how do we learn an algorithm? In algorithms, an open source book, the authors used and revised it repeatedly from 20 years of teaching algorithms and finished the final version a few days ago.

Algorithms is based on a collection of lecture notes written by Jeff Erickson, a professor of computer science at the University of Illinois at Urbana-Champaign, for various algorithms courses, which have been published at the university, Jeff Erickson has used this book to teach an algorithm course every year since January 1999. Due to the changes in undergraduate theory courses, Jeff Erickson made significant revisions to the lecture notes in 2016; This book is part of professor Erickson’s revision of the most basic course materials and reflects the algorithmic content of the new elementary theory course.

Books open source homepage: jeffe.cs.illinois.edu/teaching/al…

Professor Erickson teaches algorithms in Illinois with two important prerequisites: discrete mathematics and basic data structures. Therefore, this textbook may not be suitable for most students as a first course in data structures and algorithms. In particular, Professor Erickson assumes familiarity with at least the following specific topics: discrete mathematics, proof techniques, iterative programming concepts, basic abstract data types, basic data structures, basic algorithms, basic algorithm analysis, and mathematical capability maturity.

Additional information about this book:

  • Professor Erickson plans to self-publish the book in the near future, but don’t worry, the resource will remain free after publication.

  • Professor Erickson has maintained a GitHub project dedicated to Bug tracking for the book for years.

  • Professor Erickson makes it clear that anyone is welcome to download electronic or paper copies and that the use, reproduction and/or distribution of any content on this page is permitted.

  • The book is based on two courses, CS 374 (Spring 2018) and CS 473 (Spring 2017), and Erickson also offers course assignments and tests on a separate page.

  • GitHub address: github.com/jeffgericks…

  • Homework to address: jeffe.cs.illinois.edu/teaching/al…

Books to download

Professor Erickson provides us with two download methods, single page and double page. Single page version is convenient to browse on the computer, double page version is convenient to print paper books, conscience ~

  • Single page version: jeffe.cs.illinois.edu/teaching/al…

  • The double page version: jeffe.cs.illinois.edu/teaching/al…

In addition to the book download, Jeff also provided a lot of course materials, including CS374 PPT, CS 473 topics not covered in this book and some courseware on formal languages. Some of these resources are insightful, but the notes are still not as concise as the textbook, and readers can find additional course resources on the tutorial home page.

algorithm

Now that we’re ready to go into this hole, what’s the definition of the algorithm? How is it different from the machine learning algorithms we’re used to? In the first chapter of the book, Jeff Erickson gives a detailed definition and source of the algorithm. Now let’s go to the word “algorithm”.

An algorithm is a clear, precise, unambiguous, and mechanically executed sequence of basic instruction elements, usually designed to accomplish a specific objective task. The instruction describes a calculation that, when run, can start with an initial state and an initial input (which may be empty), pass through a finite and well-defined series of states and eventually produce an output that stops in a final state.

For example, the following pseudo-code defines a “algorithm” to sing “99 Bottles of Beer on the Wall”, we just set the N as 99 is completely the same as the original. This is a precise and unambiguous set of instruction elements: assign an integer I from n to 1 at a time, put the I in and sing it, and then just two more lines at the end.

The word eventually evolved from Algorism to its modern algorithm, which is based largely on the folk derivation of Greek arithmos. Thus, until recently, the term algorithm was used exclusively to refer to mechanical computing techniques using Arabic numerals for bit-value calculations. A person who is trained to perform these procedures quickly and reliably is called an arithmetician or a calculator. Of course, you could call it a computer more simply.

So for machine learning, the term algorithm is very broad, as long as it is a deterministic computational process for a specific task, we can call it an algorithm. Here’s a look at some of the topics covered by “Algorithms” in this book:

Jeff Erickson is a professor of computer science at the University of Illinois at Urbana-Champaign. His research interests include algorithms, data structures, and topology.



Source: Jeffe.cs.illinois.edu/ (Jeff Erickson home page)

The book’s republication has generated a lot of buzz on YCombinator, with more than 180 comments in 14 hours.

Primitivesuave wrote:

Jeff Erickson was my algorithm professor of 2012. He is the best example of an articulate, passionate educator I have ever met. I have read these notes many times to prepare for quite difficult exams. An anecdote circulated among students in his class: Simply writing “I don’t know” on 25 percent of the test questions rewarded you for admitting your flaws and saved the professor time to correct your poor answers.

Kaap said:

He was my algorithm professor in 1999 and won unanimous praise among my classmates. His explanation of recursion is perfect (Section 1.2) : “Recursive algorithms want to solve all the simpler subproblems for you, just eat the melon.”

Reference: news.ycombinator.com/item?id=188…