For the reading selections: S=Savitch book. 0. Course policies. 1. Computers and Computing: What is CS. The capabilities and incapabilities of computers. C++, Java, Python and all that. 2. How do computers solve problems? From problems to programs to machine code instructions to electrons to results. 3. Introduction to problem solving. 4. Basic operations and pseudocode. 5. From pseudocode to C++ to results -- our first real program. 6. Some basic C++ syntax. 7. Data and its representation -- primitive types. 8. Data and its representation -- abstract data types: vector, list, string. 9. Operations on data -- basic operations. 10. Building complex operations from basic operations -- functions. 11. Communicating data -- I/O 12. Building an algorithm to solve a problem: sequential algorithms. 13. Building an algorithm to solve a problem: iteration and control. 14. Recursion -- Part I 15. Recursion -- Part II 16. Solving hard problems using recursion. 17. Solving problems using vectors, lists, strings. 18. How fast will my program solve my task? 19. Advanced problems and tricks of the trade. 20. More complex functions -- returning more sophisticated results. reference arguments. 21. Basic classes. 22. Introduction to OOP. 23 Even more complex functions -- more complex arguments, more complex return values. 24. Vectors, lists and strings revisited -- advanced manipulation. 25. More on classes. 26. Solving problems using classes. 27. Putting it all together: one last problem. 28. Where to now -- a map of the CS curriculum.