COMPSCI 223 Advanced C++ - University of Wisconsin Whitewater

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