Data Structures: Objects, Abstraction and Design Using C++
Eliott Koffman, Paul Wolfgang
ISBN 0471467553
 

Enterprise Application Development
with Visual C++ 2005
Max Fomitchev
ISBN 1584503920

CSE122: Intermediate Programming
Dr. Max I. Fomitchev
Assistant Professor of Computer Science & Engineering
111J IST, Pennsylvania State University, University Park, PA 16803
Email: fomitchev@psu.edu · Phone: (814) 235-9785

Syllabus
doc · Blue Book Description
Philosophy
Learn programming by programming. The class is taught in lecture / lab format: as soon as a concept is introduced and explained the students are expected to put the knowledge to use by writing their own code. Microsoft Visual C++ 2005 integrated development environment is used for writing programs in C++.

In the course of the class students master advanced C++ concepts such as pointers, references, operators, heap vs. stack allocation, user-defined types, exceptions, classes and object-oriented programming. Students also explore advanced data types such as vectors, lists, stacks, queues, and trees (Standard Template Library - STL). Special emphasis is paid to class design including member visibility, proper usage of const, declaring constructors, destructors, and dynamic memory management.

To encourage participation and studying students are awarded (or deducted) extra points for correctly (or incorrectly) answering for-credit questions during oral in-class quizzes.

Prerequisites
CSE 103 or CMPSC 201; MATH 140; C++
Student Projects
As a part of this course students were required to design and implement a piece of software of there choosing. Here are some shining examples (with screenshots!):
Class Topics
  • Visual Studio 2005 Introduction: editing, formatting, creating projects, project settings, file locations
  • C++ preprocessing and compilation process, preprocessor definitions (#define, #ifdef, #pragma once), debugging and stepping through the code
  • Pointers, array, references, and character strings
  • Problem analysis and solution synthesis – an email checker problem, HW1
  • const references, const pointers, passing parameters by reference
  • Classes and objects, grouping data with operations, member visibility
  • Polymorphism: virtual methods, abstract classes, inheritance
  • Polymorphism: Shapes example, HW1 due
  • Static methods and static data members, static and instance data
  • Templates, Complex Template, +, -, =, +=, *, + T assignment
  • Pre-test review
  • TEST 1
  • Vector Template: Constructors, Destructor, InsertAt, [] operator
  • Vector Template: Copy-Constructor, Deep copy, =; String Class assignment, HW3
  • Linked List, HW2 due
  • Stack, Flow Chart
  • Queues and Deques
  • Recursion
  • Trees: 101, Traversals
  • TEST 2
  • Trees: Binary Search
  • Trees: Heaps and Priority Queues
  • Trees: Huffman
  • Trees: Maps and Hash tables
  • Sorting: Selection, Bubble, Insertion, Quick
  • Sorting: Merge, Heap, Pessimal O(N)
  • Self-Balancing Trees: AVL
  • Self-Balancing Trees: Red-Black
  • Self-Balancing Trees: 2-3, 3-4
  • Graphs: 101, Traversal
  • Graphs: Weighted Graphs
Lecture Notes (PowerPoint)
  1. C++ Primer
  2. Pointers in C++
  3. Stack and Heap Allocation
  4. Exceptions in C++
  5. Classes & Operators
  6. Templates & STL
  7. Coding Standard and Best Practices
  8. Design
  9. Const References & Pointers
  10. Vector
  11. Sequential Containers & Linked List
  12. Stack
  13. Queues & Deques
  14. Recursion
  15. Trees
  16. Binary Search Trees (BST)
  17. Heap & Priority Queue
  18. Huffman Code
Grading Policy
Attendance 30% (each class worth 1%)
3 Homework 10% each
3 Tests 7% each
Final Exam / Project 19%
Extra points +1% / -1%
Letter Grades
A 95-100%
A- 90-94%
B+ 87-89%
B 83-86%
B- 80-82%
C+ 76-79%
C 70-75%
D 60-69%
F 0-59%