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++|
|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
|Sep 17||Quiz 1 (Sep 18)|
|4||Sep 22||Stacks and Queues
Ch4: pages 156-182
|Lab4: Maze Solver|
|5||Sep 29||Linked Lists
Ch5: pages 217-226
|Lab5: Linked Queue|
Ch10: pages 484-497, 504-521
|Oct 08||Quiz 2 (Oct 09)|
Ch6: pages 254-280, 414-420
|Lab6: Analyzing web content with binary search trees|
|8||Oct 27||Priority Queues
Ch7: pages 312-324, 330-348
|Lab7: Processing user queries with priority queues|
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|
Ch12: pages 576-594
|13||Dec 01||More Graphs
Ch12: pages 625-633
|Lab10: Oracle of Bacon|
|14||Dec 08||Review||Open lab|
Final Exam 9am in SCI L26
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.