This course introduces the broader discipline of computer science to people having basic familiarity with Java programming. It covers the second half of our book Computer Science: An Interdisciplinary Approach (the first half is covered in our Coursera course Computer Science: Programming with a Purpose, to be released in the fall of 2018). Our intent is to demystify computation and to build awareness about the substantial intellectual underpinnings and rich history of the field of computer science.
Offered By
Computer Science: Algorithms, Theory, and Machines
Princeton UniversityAbout this Course
Offered by

Princeton University
Princeton University is a private research university located in Princeton, New Jersey, United States. It is one of the eight universities of the Ivy League, and one of the nine Colonial Colleges founded before the American Revolution.
Syllabus - What you will learn from this course
INFORMATION ABOUT LECTURES 1–10
This lesson provides information about the course Computer Science: Programming with a Purpose, which is the precursor to Computer Science: Algorithms, Theory, and Machines.
SORTING AND SEARCHING
We introduce and study classic algorithms for two fundamental problems, in the context of realistic applications. Our message is that efficient algorithms (binary search and mergesort, in this case) are a key ingredient in addressing computational problems with scalable solutions that can handle huge instances, and that the scientific method is essential in evaluating the effectiveness of such solutions.
STACKS AND QUEUES
Our introduction to data structures is a careful look at the fundamental stack and queue abstractions, including performance specifications. Then we introduce the concept of linked structures and focus on their utility in developing simple, safe, clear, and efficient implementations of stacks and queues.
SYMBOL TABLES
The symbol table abstraction is one of the most important and useful programmer's tools, s we illustrate with several examples in this lecture. Extending the scientific approach of the previous two lectures, we introduce and study binary search trees, a classic data structure that supports efficient implementations of this abstraction.
INTRODUCTION TO THE THEORY OF COMPUTING
The theory of computing helps us address fundamental questions about the nature of computation while at the same time helping us better understand the ways in which we interact with the computer. In this lecture, we introduce formal languages and abstract machines, focusing on simple models that are actually widely useful in practical applications.
Reviews
- 5 stars79.36%
- 4 stars17.73%
- 3 stars2.32%
- 1 star0.58%
TOP REVIEWS FROM COMPUTER SCIENCE: ALGORITHMS, THEORY, AND MACHINES
Good concept of understanding how computer works. But ,In my opinion, quite hard to follow for the beginner
I feel the course does a great job in laying out an introduction to "Computer Science", familiarising and motivating the topics, to be covered deeply in the sophomore-junior year.
Excellent clarity and pace with real-life problems and challenges to really understand the concepts and their motivation.
Great course that has taught me a lot in the field of computer science. Cheers to Coursera and Princeton for such great knowledge.
Frequently Asked Questions
When will I have access to the lectures and assignments?
When will I have access to the lectures and assignments?
Do I need to pay for this course?
Can I earn a certificate in this course?
Which kinds of assessments are available in this course?
More questions? Visit the Learner Help Center.