CS161: Object Oriented Problem Solving
The course is about learning and practicing principles for organizing your thinking about problems and programs, and not about memorizing details and facts. These include ways of simplifying your thinking by breaking a problem into small pieces that can be reasoned about independently of the others. Being able to be certain of the correctness of your programming approach is a key goal. A secondary goal is to understand the consequences of programming decisions for the efficiency of your program.
The main technique is object orientation and data abstraction, but it also includes techniques that are borrowed from mathematics, such as logic, mathematical induction, proof by contradiction, and principles of counting.
Another important goal is to get proficient at reading texts in computer science and mathematics. The approach is entirely different from the one you use for reading a novel or the newspaper. It is a type of literacy that is essential for success in our field. It takes time to develop, so be patient and don't get discouraged. I will lecture on it during the semester, and your developing skills at making sense out of a chapter or chapter section will be the subject of quizzes and exam questions.
Link to instructions for checking in programming assignments
(8/31) A more thorough explanation of the checkin program that SNA (System and Network Administration) has written up.