University of Wisconsin-Whitewater Curriculum Proposal Form #3 New Course Effective Term: 2117 (Fall 2011) Subject Area - Course Number: COMPSCI 223 Cross-listing: N/A (See Note #1 below) Course Title: (Limited to 65 characters) Advanced C++ 25-Character Abbreviation: Advanced C++ Sponsor(s): Dr. Hien Nguyen, Dr. Robert Horton. Department(s): Mathematical and Computer Sciences College(s): Letters and Sciences Consultation took place: NA Programs Affected: Yes (list departments and attach consultation sheet) Departments: Multimedia Digital Arts, MCS NA Is paperwork complete for those programs? (Use "Form 2" for Catalog & Academic Report updates) NA Yes Prerequisites: will be at future meeting COMPSCI 222 Grade Basis: Conventional Letter S/NC or Pass/Fail Course will be offered: Part of Load On Campus Above Load Off Campus - Location College: Letters and Sciences Dept/Area(s): Math. and Computer Sciences Instructor: Dr. Robert Horton, Dr. Hien Nguyen Note: If the course is dual-listed, instructor must be a member of Grad Faculty. Check if the Course is to Meet Any of the Following: Computer Requirement Diversity Writing Requirement General Education Option: Select one: Note: For the Gen Ed option, the proposal should address how this course relates to specific core courses, meets the goals of General Education in providing breadth, and incorporates scholarship in the appropriate field relating to women and gender. Credit/Contact Hours: (per semester) Total lab hours: Number of credits: 0 3 Total lecture hours: Total contact hours: 45 45 Can course be taken more than once for credit? (Repeatability) No Yes If "Yes", answer the following questions: No of times in major: No of times in degree: Revised 10/02 No of credits in major: No of credits in degree: 1 of 6 Proposal Information: (Procedures can be found at http://acadaff.uww.edu/Handbook/Procedures-Form3.htm) Course justification: This course is the third in a three course C++ sequence required for the Technology thread in the Multimedia Art and Game Development major being developed in collaboration with the College of Arts and Communications. This course is also very valuable for students in the Management Computer Systems program and the Computer Science minor to broaden their views in core areas of computer science by exposing them to additional programming languages and development environments Relationship to program assessment objectives: The Assessment Committee in the Department of Mathematical and Computer Sciences has identified 5 universal objectives that address cognitive processes involved in learning math and computing topics. They are Analytical Reasoning, Conceptual/Foundational Understanding, Pattern Recognition, Problem Solving, and Synthesis. Adding the course “Advanced C++” will help strengthen all five of these assessment objectives. Specifically, (1) Analytical Reasoning – students will have many opportunities to analyze real-world problems, decide which data structures and C++ tools should be used to address the problems. (2) Conceptual/Foundational Understanding - students will have a chance to strengthen their skills in an object-oriented programming language by understanding and applying advanced concepts of C++ to the design and implementation of appropriate real world problems. (3) Pattern Recognition - this course also provides students with many examples of basic siftware development and data structures patterns . The understanding of these patterns will enhance the students’ ability to recognize when a particular software development or data structures is appropriate. (4) Problem solving - is emphasized throughout the course in an advanced application development environment (5) Synthesis - this course brings conceptual understanding and specific implementation skills together in developing applications. Budgetary impact: Staffing: Many members of the current Computer Science staff have the expertise necessary to staff this course. Presently, the decline in enrollment of some lower level computer science courses allows the department to be able to provide staff needed for this course. It is anticipated that Dr. Robert Horton and Dr. Hien Nguyen will initially be the instructors. Academic unit library and service & supply budget: It is not anticipated that this course will affect the department’s service & supply or library budget. Impact on campus instructional resource units: This course will likely enter into the rotation with existing upper division courses in Computer Sciences. If the proposal of the Multimedia Art and Game Development major is approved, this course will serve as one of the core courses in the technology thread for this major. New computer offerings in the College of Business and Economics have reduced demand for some of the computer science service offerings, thus creating the scheduling flexibility to be able to offer this new course. Additional instructional resource units will be required if multiple sections of this course are needed. Laboratory facilities: Adequate lecture space is available. This course can be taught in any computer lab classroom such as McGraw 115 or Hyer 210. Revised 10/02 2 of 6 Course description: This course covers issues of data structures, professional software development methodologies including software patterns and advanced object oriented techniques. Topics include lists, queues, stacks and trees. Complex data structure and object-oriented design technique, including inheritance and polymorphism, are applied to develop and large projects. Course objectives and tentative course syllabus: Course information, objectives, weekly description and grade information (page 4-6), and bibliography (page 7). Revised 10/02 3 of 6 COMPSCI 223: Advanced C++ Required Texts: “Objects, Abstraction, Data Structures and Design Using C++” by Elliot B. Koffman, Paul A. T. Wolfgang. Course Description This course covers issues of data structures, professional software development methodologies including software patterns and advanced object oriented techniques. Specifically, the basic topics are lists, queues, stacks and trees. We use object-oriented design technique, including inheritance and polymorphism, and apply these to develop complicated data structure and large projects. Prerequisite: COMPSCI 222 Course Objectives 1 Given a basic data structure as well as a complex data structure, students will be able to apply the theory to implement applications using those data structures and analyze efficiency of each type. 2 Given a real world problem, students will be able to design and implement C++ application solutions using basic and complex data structures as well as advanced C++ tools and object oriented design principles.. Tentative Course Schedule WEEK READINGS Assignment Description 1 Chapter 1 C++ review: variables, types; functions. Arrays; structures 2 Chapter 3 and 4 Lists 3 Chapter 5 and 6 Stack, Queue Agile Design, Unified Model, Test Driven Development 4 Revised 10/02 5 Chapter 2 Software Patterns 6 Chapter 2 Software Patterns 7 Chapter 2 Software Patterns 4 of 6 8 Review Midterm 9 Chapter 7 Recursion 10 Chapter 8 Trees 11 Chapter 11 Search Trees 12 Chapter 9 Sorting Algorithms 13 Chapter 10 Sets and Maps 14 Chapter 12 Graphs 15 16 Advanced Topics Review Final exam Grading Policy GRADABLE Percentage 5 Projects 45% 10 Labs 10% Midterm exam 20% Final exam 25% Total 100% Letter Grade Percentage Letter Grade Percentage A 94 to 100% A- 90 to 93% B+ 87 to 89% B 84 to 86% B- 80 to 83% C+ 77 to 79% C 74 to 76% C- 70 to 73% D+ 67 to 69% D 64 to 66% D- 60 to 63% F Less than 60% Technology requirement Microsoft Visual C++ (for Windows users) OR GNU C++ (for LINUX users) Revised 10/02 5 of 6 Bibliography: (Key or essential references only. Normally the bibliography should be no more than one or two pages in length.) 1. 2. 3. 4. 5. 6. Stephen Prata. 2004. C++ Primer Plus (5th Edition). Sams; 5 edition David Conger, Ron Little. 2006. Creating Games in C++. Pearson Nell Dale, Chip Weems. 2005. Programming in C++. Jones and Bartlett. 3rd edition Paul J. Deitel. 2007. C++ How to Program, Sixth Edition. Prentice Hall Bruce Eckel. 2003, Thinking in C++ (Volumes 1 and 2). Prentice Hall Frank L. Friedman, Elliot B. Koffman. 2000. Problem Solving, Abstraction and Design Using C++. Addison-Wesley, 3rd edition 7. Tony Gaddis. 2010. Starting Out with Games and Graphics in C++. Addison-Wesley 8. Y. D. Liang. 2007. Introduction to C++ Programming (Comprehensive Edition). Pearson Prentice Hall. 9. Ray Lischner.2003. C++ in a Nutshell. O'Reilly Media, Inc.; 1st edition 10. Jo Ellen Perry, Harold D. Levin. 1996. An Introduction to Object-Oriented Design in C++. Addison-Wesley 11. Walter Savitch.2008. Absolute C++. Addison-Wesley. 3rd edition 12. William H. Ford. 2001. Data Structures Using C++. Prentice Hall. 2nd edition 13. Nell Dale. 2003. C++ Plus Data Structures. Jones and Bartlett. 3rd edition 14. Mark Allen Weiss. 1999. Data Structures and Problem Solving Using C++. Addison Wesley. 3rd edition 15. Michael T. Goodrich, Roberto Tamassia, David M. Mount. 2010. Data Structures and Algorithms in C++. Wiley Higher Education. 2nd edition Notes: 1. Contact the Registrar's Office (x1570) for available course numbers. A list of subject areas can be found at http://acadaff.uww.edu\Handbook\SubjectAreas.htm 2. The 15 and 25 character abbreviations may be edited for consistency and clarity. 3. Please submit electronically when approved at the college level - signature sheet to follow in hard copy. Revised 10/02 6 of 6