Algorithmic Thinking

This course is offered through Coursera — you can add it to your Accredible profile to organize your learning, find others learning the same thing and to showcase evidence of your learning on your CV with Accredible's export features.

Course Date: 25 August 2014 to 20 October 2014 (8 weeks)

Price: free

Course Summary

Experienced Computer Scientists analyze and solve computational problems at a level of abstraction that is beyond that of any particular programming language. This class is designed to train students in the mathematical concepts and process of "Algorithmic Thinking", allowing them to build simpler, more efficient solutions to computational problems.

Estimated Workload: 7-10 hours/week

Course Instructors

Luay Nakhleh

Luay Nakhleh received a BSc degree in Computer Science from the Technion (Israel) in 1996, a Master's degree in Computer Science from Texas A&M University in 1998, and a PhD degree in Computer Science from UT Austin in May 2004 (Advisor: Prof. Tandy Warnow). While at UT Austin, he received the Outstanding Doctoral Dissertation Award, the Bert Kay Dissertation Award, the Texas Excellence Teaching Award, and the Outstanding Teaching Assistant Award.

Luay joined the Computer Science department at Rice University as an Assistant Professor in July 2004, and was promoted to Associate Professor, with tenure, effective July 2010. While at Rice, he received the DOE CAREER award in 2006, the NSF CAREER award in 2009, the Phi Beta Kappa Teaching award in 2009, an Alfred P. Sloan Research Fellowship in 2010 (in the Molecular Biology category), and a John P. Simon Guggenheim Foundation Fellowship in 2012 (in the Organismic Biology and Ecology category).

Scott Rixner

Scott Rixner is an Associate Professor of Computer Science at Rice University. His research focuses on systems software and computer architecture. He is well versed in the internals of the Python programming language, as he is currently developing a light-weight Python interpreter for embedded systems in his research. He has also taught many of the introductory computer science courses at Rice, including Computational Thinking, Algorithmic Thinking, Introduction to Program Design, and Introduction to Computer Systems. He is the chairman of the curriculum committees for both the Department of Computer Science and the School of Engineering at Rice. Prior to joining Rice, he received his Ph.D. from MIT.

Joe Warren

Joe Warren is a Professor in the Department of Computer Science at Rice University. His main area of research interest is computer graphics and geometric modeling, where he has published extensively. He is the author of the book Subdivision Methods for Geometric Design. He also has a love for computer gaming, both playing games and teaching students how to build them. He has taught the Department’s introduction to game creation course as well as its senior-level game design course in collaboration with Houston game professionals for over a decade. Joe was an undergraduate at Rice from 1979-1983 and received his Ph.D. from Cornell in 1986. He has been a professor at Rice ever since and served as the Chair of the Department from 2008-2013.

Course Description

When presented with a problem from a scientific domain, a Computer Scientist goes through a set of steps in order to provide a solution for the problem. These steps include: (1) understanding the problem; (2) formulating the problem mathematically; (3) designing an algorithm; (4) implementing the algorithm; and (5) solving the original scientific problem. This course will train students in how to employ algorithmic thinking by following these five steps to solve real-world problems. 

Understanding the problem entails holding conversations with domain experts to understand the parameters of the problem, what data they can provide to the computer program, what answers they expect, etc. Formulating the problem mathematically is basically the step of turning the problem from an English description to a mathematical description that is amenable to further computational analyses. 

While the course emphasizes implementing the algorithms and solving the original problems that gave rise to the need for these algorithms in the first place, much of the course will be devoted to the third step, namely, algorithm design. Here, the course will introduce students to different algorithm design strategies, as well as mathematical tools for reasoning about the correctness and efficiency of algorithms.  


  • Will I get a certificate after completing this class?
    Yes. Students who successfully complete the class will receive a Statement of Accomplishment signed by Luay, Scott, and Joe.
  • What resources will I need for this class?
    The only requirement for the class is access to a modern web browser. All coding and program development will be done in a web-based programming environment that supports building applications in Python. The programs that you create will be saved, shared and graded via the cloud.
  • What is the most useful thing I'll learn if I take this class?
    The ability to think and solve computational problems at a higher level of abstraction, allowing you to create programs that are simpler and more efficient.


Our course syllabus can be viewed at


This course will last eight weeks.  The lectures from each week will focus on the topics listed in the syllabus while an associated weekly "mini-project" will serve to reinforce these concepts in practice. Grades for these mini-projects will be determined via a combination of machine grading and peer-assessment. The class will also include homeworks to provide further feedback.

Course Workload

7-10 hours/week

Review course:

Please sign in to review this course.

Similar Courses

{{ }} {{ }}


{{course.start_date | date:'MMM d'}} — {{ course.end_date | date:'MMM d'}}   ({{ course.time_until_course_starts }} ,   length: {{ course.length_in_weeks }} weeks) Self-paced — no deadlines    
${{ course.price }} p/mfree


Course Activity & Community

Be the first Accredible user to join this course!

uploaded {{ feed_item.model.caption || feed_item.model.url || feed_item.model.file_file_name }} for the course {{ }} — {{ feed_item.time_ago }}

{{ }} {{ comment.text | truncate: (comment.length || comment_display_length) }}   read more hide

{{ comment.time_ago }}

started the course {{ }} — {{ feed_item.time_ago }}
followed {{ }} — {{ feed_item.time_ago }}
followed thier friend {{ }} — {{ feed_item.time_ago }}
{{ feed_item.model.text }} (on the course {{ }}) — {{ feed_item.time_ago }}

{{ }} {{ comment.text | truncate: (comment.length || comment_display_length) }}   read more hide

{{ comment.time_ago }}