This preview has intentionally blurred sections. Sign up to view the full version.View Full Document
Unformatted text preview: CS106X Handout 35 Winter 2008 March 3, 2008 Assignment 6: Stanford 1-2-3 Excellent assignment by Julie Zelenski. This is your last CS106 assignment, the last fling, the last hurrah. It is a chance to pull together your now-superior C++ skills, design a complicated data structure, use a variety of classes, implement a few classes of your own, and build an awesome piece of productivity software. It's a wonderful and sophisticated task that is a capstone to all you've done so far. I can't think of a better way to top off our intense journey. When you look back at where you started in January, did you imagine you'd be ready for something this fancy just 10 weeks later? Due: Friday, March 14 th at 1:15 p.m. The Assignment Your mission is to build a simple spreadsheet, starting with the code for the expression evaluator presented in Chapter 14. This assignment is designed to accomplish the following objectives: • To more fully explore the notion of object-oriented programming. The program is broken down into classes that interact cooperatively. Almost every one of the classes we studied this quarter has a role to play. • To learn how C++ inheritance can be used for expression trees and how to implement simple recursive-descent parsing. • To give you practice working with graphs and graph algorithms. • To get a taste of the Model/View/Controller (MVC) structure used by many modern applications. • To learn how to adapt existing code (in this case, the expression interpreter) to solve a different but related task. The majority of programming that people do in the industry consists of modifying existing systems rather than creating them from scratch. • To experience the joys and frustration of designing a class interface/implementation. Finally, a chance to create your own design rather than having the decisions made before you even start! • The task may sound a bit daunting, but never fear, there is a fair amount of infrastructure we have already written for you. However there is still much for you to do, so don't delay getting started. Make it your personal goal to have your final project be one that genuinely rocks. 2 A note on open-ended design Although we give you a lot of starter code and suggestions, this assignment is more open-ended than most and offers you the freedom to design things in your own way. There are a few isolated tasks for which we mandate a particular implementation strategy, but other than that, it's up to you to make sensible and reasonable decisions. Your program is expected to have the external behavior we describe and work comparably to the demo version, but how you accomplish these tasks has a fair amount of latitude. This kind of open-ended design can be creative and fun but there is also is potential to go astray with suboptimal choices that you later have to live with. We recommend starting the design process early and carefully thinking through the alternatives and their tradeoffs. We also strongly encourage you to run your design by...
View Full Document
- Winter '08