About the course
This class will introduce you to different aspects involved in the design of a program. Through numerous case studies, we will outline the data structures and the algorithms that can be used to provide solutions. As is often the case in computer science, there is not one sole solution and we will come to discover and compare different classes of algorithms. To this end, we will introduce the notion of program complexity, meaning an estimate of the time and space required to run your program. It is tempting to think that the â€śbestâ€ť program is one that minimizes runtime, but very often this complexity is constrained by the memory you have at your disposal. As such, you may not use the same algorithm depending on whether your program is running on a computer or a phone!
This course will present the most common data structures such as arrays, lists, stacks, queues, and trees to go to graphs. In addition, we will explore the main concepts of algorithmics through case studies. In doing so, we will review tries, paths, quaternary search trees, greedy algorithms and the basics of dynamic programming.
Good knowledge of a programming language and basic knowledge of Java, as examples and exercises will be given in this language.
Format of course
This course consists of video lessons of 6 to 12 minutes in length. Each lesson will also include quizzes that highlight the important learning points of the lesson. In addition, weekly comprehension exercises and programming assignments will be offered.
Will I receive a certificate at the end of this course?
All those who successfully complete all the exercises will receive a certificate of course completion.