Course Syllabus, C++ Programming - Intro
This page last updated on: Jan 14, 2002
Contents:
General Information
Course Name
C++ Programming: Introduction
Certificate: C++ Prog 711 A
EDP: 59133 021
Instructor
Cliff Green
Instructor Contact Info
E-mail: cliffg@codewrangler.net
Phone: 206-363-9852 (7 pm - 9 pm), 425-867-7234 (1 pm - 4 pm)
Web: http://uwteach.codewrangler.net/
Note: I occasionally travel out of town or have work project
commitments, so phone call and e-mail replies might take an extra day or
two during those periods.
Term
Winter 2002, Jan. 7 - Mar. 25 (note that there are no classes on Jan. 21 and Feb. 18), Mondays
6:00 - 9:00 pm, EE1 003
Textbook and Other C++ Resources
The textbook for this course is:
-
Thinking in C++, Vol 1 (2nd vol to be published in a year or two), Bruce
Eckel, Prentice Hall Publishing, 2000, ISBN 0-13-979809-9. (This is a completely
re-written and updated version of his 1995 Thinking in C++ textbook.)
More information on this book can be found at: http://www.prenhall.com/divisions/ecs/cscat.html
There is an online edition of this book, as well as early drafts of the second volume
available for downloading at: http://www.bruceeckel.com/Books.
Two other textbooks which should be in every C++ programmer's library:
-
Effective C++, 2nd Ed., Scott Meyers, Addison Wesley Professional
Computing Series, 1997, ISBN 0-201-92488-9. More information on this book
can be found at: http://www.awl.com/cseng/
-
The C++ Programming Language, 3rd Ed., Bjarne Stroustrup, Addison
Wesley, 1997, ISBN 0-201-88954-4. More information on this book can be
found at: http://www.awl.com/cseng/
Other C++ resources include these recommended books and links: Other
C++ Resources
Course Requirements
The minimum requirements for passing the course are:
- Attendance: You must attend eight of the ten class sessions to pass
the course.
- Assignments: You must complete all five assignments with an average
score of 80% or better.
- Examinations: You must complete the examinations with a score
of 80% or better.
Description, Prerequisites, and Objectives
This course will have the following main areas of concentration:
-
Learning the primary syntax, features, and capabilities of C++. This includes
discussing the advantages and disadvantages of various features, and when
to use them.
-
Applying basic object-oriented design and programming concepts. To gain
the greatest benefits from using C++ as a programming language, a solid
understanding of object-oriented design principles is necessary.
-
Learning how to use C++ class libraries (including the C++ standard library),
useful for quickly and effectively developing applications. Besides the
C++ standard library, there are many useful libraries such as Boost: http://www.boost.org/
Effective C++ class design and implementation tends to partition C++ programmers
into two groups - the application developers who use C++ class libraries
to solve application level problems and objectives, and the developers
who design and program the class libraries. Using C++ class libraries tends
to simplify and speed application-level development compared to traditional
C programming methodologies, while designing and implementing the class
libraries themselves tend to be harder than the typical C programming approaches.
This course will provide the initial design and implementation techniques
of class library development, while also concentrating on the benefits
and techniques of using C++ libraries from the application level. The intermediate
and advanced C++ courses will delve deeper into the more complex aspects
of class library design and implementation
A number of software development side-topics will be discussed as time
allows, including testing techniques, exception handling strategies, portability
issues, design tools, software components, and software development methodologies.
Prerequisites
Familiarity with most of the C language fundamentals and features is expected.
There will be minimal review of advanced C topics. Specific prerequisites
include:
-
Has successfully completed Advanced C programming (or equivalent).
-
Has successfully completed Foundations of Object-Oriented Analysis and Design (or equivalent).
-
Is proficient with pointers, structs, and functions.
-
Can write applications with at least a few hundred lines of code and composed
of multiple source and header files.
-
Is proficient with dynamic memory management and understands memory allocation
concepts (stack / auto, global / static, heap / free store).
-
Has designed and worked with arrays, linked lists and other fundamental data structures.
Access to a C++ compiler supporting templates, C++ exceptions, and a recent
version of the standard C++ library is required (which includes all modern C++ compilers). All input and
output will be character and text based, so a windowing environment is
not required.
Objectives
-
Learn the basic principles of object-oriented design and programming including
classes, encapsulation, strong typing, inheritance, and run-time polymorphism.
-
Apply introductory aspects of an object-oriented design modeling language
(Unified Modeling Language - usually abbreviated UML).
-
Learn modularization, design, and partitioning techniques which aid in
developing large, complex systems.
-
Learn basic C++ input / output facilities.
-
Learn the differences between classes and objects, and how to effectively
use them.
-
Learn about object lifetimes, including constructors, destructors, object
initialization, and member functions.
-
Learn common C++ "gotcha's" and how to avoid them, specifically by using
copy constructors, assignment operators, and destructors.
-
Learn how to use container classes and iterators.
-
Learn about function and operator overloading.
-
Learn about reference types, and passing parameters and returning values
by reference.
-
Learn how and when to use constant declarations, types, and member functions.
-
Learn C++ memory management techniques.
-
Learn about static members, functions, friend functions and classes, default
arguments, and inline functions.
-
Learn how to inherit classes in C++, and to use virtual functions.
-
Learn how to use template classes and functions, including basic usage
of the standard C++ library.
-
Intermediate and advanced topics (such as designing template classes and
functions, exceptions, RTTI, and detailed standard library usage) will
be introduced as appropriate, but not covered in detail.
Grading and Assignment Info
80% of the grade will be from the course project and assignments, and 20%
from tests. The emphasis of this class is on the project and assignment
work, since it is a C++ programming course. There will be two tests, one
at mid-term and one final. The tests will be relatively simple and short,
aimed at verifying you are the true author of the assignments, and covering
the basic concepts from the lectures.
Important - Other
Grading and Assignment Info
Administrative and Legal Info
The following page contains information on classroom closure situations,
assignment originality and plagiarism, and disability accomodations:
Administrative and Legal Info
This page constructed by Cliff Green,
Copyright © 1997-2002.