An introductions to computation developed by solving real-world problems in architecture, statistics, linguistics, social networks, visual pattern recognition, and the simulation of complex systems in computer science. Technical topics include modeling computational devices operating in the word, designing and implementing algorithmic solutions in Python, and experimentally testing and evaluating computational systems.