This course completes the broad introduction to computer science begun in CS21. It provides a general background for further study in the field. Topics to be covered include object-oriented programming in C++, advanced data structures (such as priority queues, trees, hash tables, and graphs), advanced algorithms, as well as software design and verification. Students will be expected to complete weekly lab assignments illustrating the concepts presented.
Prerequisite: CPSC 021 or permission of the instructor. Discrete Mathematics is strongly recommended. This course is designated as a Natural sciences and engineering practicum.
WEEK | DAY | ANNOUNCEMENTS | TOPIC & READING | LAB |
1 | Sep 01 | Introduction to C++ Ch1: pages 2-8, 10(strings), 16(using), 17-30 |
Lab1: Introduction to C++ | |
Sep 03 | ||||
2 | Sep 08 | Object-Oriented Design in C++ Ch1: pages 33-38, 46-56; Ch2: pages 62-88 |
Lab2: Inheritance in C++ | |
Sep 10 | Drop/Add ends (Sep 11) | |||
3 | Sep 15 | Complexity Analysis Ch3: pages 108-134 |
Lab3: Analysis | |
Sep 17 | Quiz 1 (Sep 18) | |||
4 | Sep 22 | Stacks and Queues Ch4: pages 156-182 |
Lab4: Maze Solver | |
Sep 24 | ||||
5 | Sep 29 | Linked Lists Ch5: pages 217-226 |
Lab5: Linked Queue | |
Oct 01 | ||||
6 | Oct 06 | Sorting Ch10: pages 484-497, 504-521 |
None | |
Oct 08 | Quiz 2 (Oct 09) | |||
Oct 13 |
Fall Break |
|||
Oct 15 |
||||
7 | Oct 20 | Trees Ch6: pages 254-280, 414-420 |
Lab6: Analyzing web content with binary search trees | |
Oct 22 | ||||
8 | Oct 27 | Priority Queues Ch7: pages 312-324, 330-348 |
Lab7: Processing user queries with priority queues | |
Oct 29 | ||||
9 | Nov 03 | Dictionaries Ch8: pages 364-384 |
Lab8: Caching query results with a dictionary | |
Nov 05 | Last day to declare CR/NC or withdraw (Nov 06) |
|||
10 | Nov 10 | More Dictionaries, Review | None | |
Nov 12 | Quiz 3 | |||
11 | Nov 17 | Graphical User Interface wxWidgets | Lab9: Creating a GUI front-end for the web browser | |
Nov 19 | ||||
12 | Nov 24 | Graphs Ch12: pages 576-594 |
None | |
Nov 26 |
Thanksgiving Break |
|||
13 | Dec 01 | More Graphs Ch12: pages 625-633 |
Lab10: Oracle of Bacon | |
Dec 03 | ||||
14 | Dec 08 | Review | Open lab | |
Dec 15 |
Final Exam 9am in SCI L26 |
40% | Lab assignments |
30% | 3 Quizzes |
5% | Class Participation |
25% | Final Exam |
Assignments will be introduced during lab on Fridays and will be due before midnight the following Wednesday night. You are strongly encouraged to start early and to attend the study sessions on Monday nights.
You will submit your assignments electronically using the handin35 program. You may submit your assignment multiple times, but each submission overwrites the previous one and only the final submission will be graded. Late assignments will not be accepted unless you contact me before the deadline. Even if you do not fully complete an assignment, you may submit what you have done to receive partial credit.
Student mentors will assist me in class and run study sessions on Mondays 7-9pm in SCI 240 (where class meets).
You are invited -- and encouraged -- to participate in these study sessions to prepare for quizzes, to discuss programming concepts, and to get friendly assistance in working on lab assignments. As an added bonus, food will be provided.
Academic honesty is required in all work you submit to be graded. All code you submit must be your own with the following permissible exceptions: code distributed in class, code found in the course text book, and code worked on with an assigned partner.
You are encouraged to discuss the lab assignment specifications and general strategies for solving the problems with other students in the class.