On-Line CSE687 - Object Oriented Design

Design Tactics with Native Code

Lectures
"The purpose of life is a life of purpose."
- Robert Byrne

Course Goal:

Learn how to make our programs elegant and simple, make their intents clear, and make them quick and reliable.

Resources:

Syllabus, Lectures, Intro to Website, pptx
Principles, SG - OOD, SG - Design, SG - Templates, SG - Class Relationships
C++ Wikipedia, C++11 Wikipedia, C++14 Wikipedia, C++17 Wikipedia
CppCon 2016, CppCon 2015, CppCon 2014, Going Native 2013
Stroustrup's Home Page, Herb Sutter's Blog, Herb Sutter Videos - Channel 9
Universal References - Scott Meyers
Modules - early experiment
SysInternals - Microsoft

Course Scope:

Covers design and implementation of object oriented programs using the C++ language. This is an intensive course covering: design strategies used in object oriented design, essentially all of the Standard C++ Programming Lanaguage, and its Standard Library. A typical class will introduce some part of the C++ language, present a design principle that relates in some way to that part, and illustrate both with code examples.

Four design and implementation projects are required that are progressively more challenging. A lot of work outside of class is expected. Students that complete this course with good grades will have the skills to work in almost any commercial or industrial organization in this country.

Required Texts and Notes:

  1. The C++ Programming Lanaguage (CPPPL) , Fourth Edition, Bjarne Stroustrup, Addison-Wesley, 2013, ISBN 978-0-321-56384-2
  2. The C++ Standard Library (CPPSL) , Second Edition, Nicolai Josuttis, Addison-Wesley, 2012, ISBN 978-0-321-62321-8
  3. Class Notes and code, available on www.ecs.syr.edu/faculty/fawcett/handouts/CSE687-OnLine
  4. CppReference.com - Excellent synopsis of the C++ language and library

Recommended References:

These are texts I like and use from time to time. I don't expect you to look at all of these - just know they are here and think about buying if you find yourself working as a C++ developer after finishing your program.
  1. A Tour of C++, Bjarne Stroustrup, ISBN 978-0-321-95831
  2. C++ Primer Plus, Stephen Prata, Waite Group Press, 2012, ISBN 0-321-77640-2, Sixth Edition available at desk in SciTech Library
  3. C++ Coding Standards, Herb Sutter, Andrei Alexandrescu, Addison-Wesley, 2005
  4. C++ Gotchas, Avoiding Common Problems in Coding and Design, Stephen Dewhurst, Addison-Wesley, 2003
  5. Effective STL, Scott Meyers, Addison-Wesley, 2002
  6. Effective C++, Scott Meyers, Addison-Wesley, 3rd Edition, 2005
  7. More Effective C++, Scott Meyers, Addison-Wesley, 1996
  8. The Design and Evolution of the C++ Language, Bjarne Stroustrup, Addison-Wesley, 1994
  9. Modern C++ Design, Andre Alexandrescu, Addison-Wesley, 2001
  10. Imperfect C++, Matthew Wilson, Addison-Wesley, 2005
  11. Exceptional C++, Herb Sutter, Addison-Wesley, 2000
  12. More Exceptional C++, Herb Sutter, Addison-Wesley, 2002
  13. Exceptional C++ Style, Herb Sutter, Addison-Wesley, 2005
  14. C++ Primer, Fifth Edition, Lippman, Lajoie, Moo, Addison-Wesley, 2013
  15. Boost C++ Library UML Tutorial cplusplus.com references Schmidt Tutorials ACCU.org The C++ Source STL Programming Links

Prerequisites:

Students are expected to have a good working knowledge of the C Programming Language. Some knowledge of C++ will help you, but is not required. This course is significanly more challenging than the usual undergraduate course in C++.

Syllabus:

Syllabus CSE687 OnLine - Object Oriented Design
Lecture Topics Read before class Project
Introduction:
Wk 1a
Syllabus, projects, examination, grading, notation, packages, Handouts skim CPPPL chp 1-9
read CPPPL 2, 3, CPPSL 2
hand out Pr1
Language Survey:
Wk 1b
classes, object model, templates, references, streams skim CPPPL 2, 3, 16, 23
Web Notes
Pr1
Abstraction:
Wk 2a
Abstract Data Types, simulating support for native types CPPPL 16-19
Web Notes
Pr1
Overloading:
Wk 2b
operator model, overloading, std::string CPPPL 18
Web Notes
Pr1
Templates:
Wk 3a
templates, binding time, software reuse CPPPL 23-25, CPPSL 2
Web Notes
Pr1
Template Applications:
Wk 3b
Template pollicies, traits, Containers, smart pointers, reference counted objects CPPPL 23-25
Web Notes
Pr1 due
Class Relationships:
Wk 4a
relationships between classes CPPPL 21
Web Notes
Pr2
Inheritance & Composition:
Wk 4b
Inheritance & Composition examples, initialiation CPPPL 21
Web Notes
Pr2
Processes and Threads
Wk5a
Win32 Processes, Threads and Locking classes Web Notes Pr2
Processes and Threads
Wk 5b
Win32 Processes, Threads and Locking classes continued Web Notes Pr2 due
Sockets:
Wk 6a
Win32 Sockets Web Notes Pr3
Sockets:
Wk 6b
Socket Communication Web Notes Pr3
Managed C++:
Wk 7a
(Managed) C++/CLI, Syntax and Example Applications, Framework Class Libraries Web Notes Pr3
WPF
Wk 7b
Windows Presentation Foundation using (managed) C++/CLI Web Notes Pr3 due
Midterm Review:
Wk 8a
Review last year's exam CPPSL, CPPPL
Notes
Pr4
Midterm Exam:
Wk 8b
Midterm Exam You may bring in one page of notes. Write on both sides if you wish. Pr4
Standard C++ Libraries:
Wk 9a
Strings, Streams, Standard Template Library (STL), STL containers, iterators CPPSL 6-7
CPPPL 31, 33
Web Notes
Pr4
STL Details:
Wk 9b
STL details CPPSL 8-12
Web Notes
Pr4
Building Large Systems:
Wk 10a
Review of Sample Projects, and Course Summaryt CPPSL 15,
CPPPL 38
Web Notes
Pr4
Wrap-up:
Wk 10b
Help with Project #4 Web Notes Pr4 due

campus at night


Computer Engineering Course Notes
Jim Fawcett © copyright 2017