Software Components and Generic Programming



Dr. Edward Sazonov,
Office: 147 CAMP
Email: esazonov@clarkson.edu
Office Hrs: MW10:00-11:30

Catalog Data:
R-3, C-3. A problem solving oriented course in software analysis and design with an emphasis on creating reusable software and software components in C++. Analysis and design of software components in the context of the C++ Standard Template Library.

“Data Structures and the Standard Template Library”, 1st edition William J. Collins, McGraw-Hill, Pages: 688, Year of Publication: 2002, ISBN:0072369655

Supplemental Web materials:

MFC Reference (optional):
Programming Windows with MFC, Jeff Prosise, Microsoft Press, 1999, ISBN: 1-57231-695-0

Lecture Location/Time: CAMP 177, MWF 1:00PM-1:50PM

Class Web page: http://www.intelligent-systems.info/classes/ee363/


1. Gain an understanding of abstract data types and software components as implemented in the C++ Standard Template Library and other libraries.

2. Engage in design, analysis, and test of software systems given a specification and a set of components.

3. Gain an understanding of event-driven, object-oriented, graphical user interfaces and apply this knowledge in software design.

Course Outline:

1. Review of C++ and Object Oriented Programming. Arrays, pointers, classes, inheritance, polymorphism, etc.
2. Introduction to Software Engineering, Algorithm analysis.
3. Introduction to the standard container classes.
4. Strings, vectors, lists, stacks, queues, deques, sets, trees.
5. Priority queues, heaps, maps (if time permits).
6. MFC and Event-Driven Design - throughout semester

Computer Usage:
All students are required to use Microsoft Visual C++ (version 6.0 or greater) for all assignments and projects. The Microsoft Visual Studio, which includes Visual C++ 6.0, is installed on all PCs in the labs throughout the campus.

Design Projects:
Three or four design projects will be assigned during the semester. Each project will be MFC based and closely related to the previous project. Reuse of software components, system analysis and design, and STL usage will be the primary focus of each project.


1. Design projects: 30%
2. Hourly exams (3 exams): 35%
3. Homework: 15%
4. Final exam: 20%

Grades will be given on the following scale:

A > 90pts
B > 80pts
C > 70pts
D > 60pts
F < 60pts

Tentative Hourly Exam Dates:

Exam 1: last week of September
Exam 2: last week of October
Exam 3: last week of November

Homework and exam policy:

The homework will be assigned as problems from the textbook, on-line lab assignments and MFC-based projects. Late homework and projects will not accepted unless arrangements have been made with the instructor prior to the due date.
Students missing an exam will receive a 0% on the exam unless they have an acceptable university excuse or have made prior arrangements with the instructor. Makeup exams may be oral or written based on the discretion of the instructor.
All students will be required to take the final exam.

Student Learning Outcomes:

Course Objective 1: Students will demonstrate competence in the use of abstract data types and software components found in the Standard Template Library and other libraries.

Course Objective 2: Students will demonstrate the ability to design, analyze, test, and implement software applications using abstract data types, software components, and component reuse.

Course Objective 3: Students will demonstrate an understanding of event-driven, object oriented user interface design, and their ability to build user-friendly software applications.

Academic integrity:
You are encouraged to consult the instructor if you have any questions on homework or exams. The homeworks and exams are expected to be individual work, completed without any “help” of your classmates. Handing in work that was jointly prepared and/or copied will be considered plagiarism and will be handled according to the University regulations.

Class distractions:
Cell phones, pagers, etc. must be turned OFF during class. These are distracting for all.


 Last Updated:

Contact the instructor at: