CS-1030 Software Design 2
Spring
2006
Dr. Mark Hornick


Description     Syllabus     Policies     Quizzes/Homework     Grading


Revision History

This page was last updated on 03/17/2010.

3/1/2006 - Initial posting.
3/8/2006 - Lab 1 assignment posted.
3/8/2006 - Lab 1 updated; link to sample code inserted in "Assignment" instructions.
3/15/2006 - Lab 2 assignment posted.
3/16/2006 - Lab 2 modified as discussed in class.
3/17/2006 - Remaining quizzes rescheduled from Wednesdays to following Fridays
3/22/2006 - Stringstream demo posted
3/24/2006 - Common Final Exam time/date posted
3/29/2006 - Quiz 3 moved to Monday, 4/3
3/29/2006 - Updated UML for lab3 - Sequence Diagram.
3/29/2006 - Rescheduled Midterm exam to Monday, 4/10
4/1/2006 - sample code for C++ classes posted
4/3/2006 - sample code for Pointers and References posted
4/5/2006 - Lab 4 assignment posted.
4/6/2006 - Midterm exam review notes posted
4/6/2006 - Sample code for dynamic memory allocation posted.
5/10/2006 - Quiz 5 moved to Monday 5/15/2006

5/15/2006 - Final Exam objectives posted.

Class Schedule

Lecture sessions meet Monday and Thursday in CC-48 from 9:00am to 9:50am.

Lab sessions are on Wednesdays in CC-48 from 8:00am to 9:50am.

Course Description

This course introduces students to the C++ programming langauge and concepts, building upon the knowledge gained in the Java programming languages in the CS1010 and CS1020 courses. It continues the study of software development using an object-oriented approach using the C++ programming language. C++ coverage includes topics such as pointers, dynamic memory management, the Standard Template Library, and a comparison between the Java and C++ programming languages..

Please consult the official course description for detailed objectives.

Textbook

Officially: None. Instead, download the free electronic copies of Thinking in C++, 2nd edition, Volume 1 and Volume 2 by Bruce Eckel and Chuck Allison. (Note: You can also purchase paper copies of these books from Eckel's website). I'll be assigning reading from this material.

Online References

Here are some other web resources that may be useful to you. Please let me know if you have found other resources that you think should be added to this list.

C++ Development Tools

Follow this link for more information on the tools we use for this course.

Syllabus

Week Monday Wednesday (Lab) Thursday
1
3/6
Course Introduction

Java vs. C++ overview
Compiling and Linking

 

Read vol 1: Ch 2, pp. 76-97 (The Process of Language Translation through Reading Input)

Lab 1: C++ development environment
C++ debugger, Intro to I/O using cin/cout

The FAST timelogging system

C++ fundamentals 1: Primitive data types, expressions, selection and iteration (if, for, while, do, switch

Read vol 1: Ch 3, pp. 117-133 (Controlling Execution through Specifiers),
pp. 156-172 (Operators and their use through Sizeof operator)

2
3/13
C++ fundamentals 2:
Global functions,
Declarations vs. Definitions,
Preprocessor directives,
Multi-module applications

Read vol 1: Ch 4, pp. 241-246 (Header File etiquette through Using Headers in projects)

Sample code: Multi-module application

Quiz 1

Lab 2: C++ global functions & pre-processor






 

Sample code: string parsing

Sample code: parsing strings with  stringstream

C++ I/O: cin/cout revisited - manipulators (iostream and iomanip), File IO, Reading/Writing strings

 

Read vol 2: Ch 4, pp. 151- 201 (IOStreams through Manipulators)

 

Sample Code: File IO

3
3/20
C++ classes: declarations, definitions, constructors, destructors, Java object class comparison




Read vol 1: Ch 5 (all),
pp. 259-279

Lab 3: File Text Searcher









Process Assessment and Improvement: Survey #1




Sample code: C++ classes

Quiz 2

Standard C Library
C++ Standard Library



Wikipedia article on the Standard C Library
4
3/27
Copy constructors




Read vol 1: Ch 6 (thru Storage Allocation)
pp. 283-293

References & Pointers
Null pointers, indirection
Function/method parameters: by value, by reference, by address

Read vol 1: Ch 11 (thru Pointers to Members)
pp. 449-475

5
4/3
Quiz 3

Memory allocation and deallocation;
new and delete

Sample code: Pointers and References

Read vol 1: Ch 13 (thru Running out of Storage) pp. 547-565

Lab 4: Dynamic Memory Management

Exam Review

Memory allocation and deallocation continued;
Destructors and delete

Sample code: Dynamic memory allocation and deallocation

6
4/10
Midterm Exam Inheritance, abstract base classes, polymorphism, virtual functions

Sample Code
Inheritance, Polymorphism, & Abstract Base Classes

Read vol 1: Ch 14 (thru Protected Inheritance)
pp. 584-612

Easter Break
4/14 - 4/23
7
4/24
Initializers,
the const decl specifier,
default parameters, friends

Sample Code
const, initializers, default parameters

Lab 5: Drawing Graphical Shapes




Process Assessment and Improvement: Survey #2

Quiz 4

Operator overloading 


Sample Code

Read vol 1: Ch 12 (all),
pp. 485-542 (vol 1)

8
5/1
Operator overloading cont'd.

Lab 6: Multi-function Organizer








Lab 6 Continued








Lab 6 Final Demos



 

STL vector class, sort algorithm.
STL list class, STL iterators

Sample Code:
STL List
STL Vector

Read vol 2: pp 429-477

9
5/8
Arrays and C-style strings, passing arrays as arguments,  command line arguments

Sample Code

Templates

Sample Code 


Read vol 1: Ch 16 (thru Constants in Templates)
pp 689-705 (vol 1)
10
5/15
Quiz 5

Namespaces

Read vol 2: pp 66-97

Exceptions

Miscellaneous

Final Review
11
5/22

Final Exam:
Tuesday 5/23/2006
11am - 1pm
CC-48

Course policies

My general course policies apply to this course.

Quizzes & Homework

Quizzes or Homework will be given or assigned each week.

You are encouraged to work with your classmates on homework, so that you can more fully understand the problem and discuss approaches to solution. However, you should work out the solutions to problems individually. Homework problems will be kept short, and will be due the next class period after which they are assigned unless stated otherwise in the homework description.

Quizzes, when given instead of homework, will be given at the beginning of the Lab session. No quiz will be given the week of the Exams. No make-up quizzes will be given.

Grading algorithm

Note that this algorithm indicates how a grade will be determined for students who have successfully demonstrated mastery of the course objectives. An acceptable level of success in meeting all course objectives is a prerequisite for a passing grade in the course.

Criterion Weight
Labs 50%
Quizzes 10%
Hour Exam 20%
Final Exam 20%