This is part 2 of a 2 sequence intensive introduction to Computing Science. Part 2 expands to add object-oriented programming, a higher level language (Python), and more complex algorithms and data structures such as shortest paths in graphs; caching, memoization, and dynamic programming; client-server style computing; recursion; and limited distributed of computation tasks between the Arduino platform and the traditional desktop in order to explore design tradeoffs. Prerequisite: CMPUT 274. Note: this course is taught in studio-style, where lectures and labs are blended into 3 hour sessions, twice a week. Enrollment is limited by the capacity of the combined lecture/lab facilities. Credit cannot be obtained for CMPUT 275 if one already has credit for any of CMPUT 174, 175, or 201, except with permission of the Department.