CIS 252

Programming Methods II:  C++

Class Location and Meeting Times

Building 22, Room 118
2:10-3:30 pm TTh

Prerequisites

This is a second semester C++ programming course.  Thus, you should have successfully completed an introductory C++ programming course in which you learned C++ language syntax.  It is assumed that you understand C++ fundamentals such as:  program block structure, variable declarations and scoping rules, arithmetic, relational and logical expression evaluation, ANSI function prototypes, passing variables by value and by reference, control structures, scalar data types, arrays, use of pointers, structures, classes and dynamic memory allocation.  CIS 250/251 with a grade of C or better.

Materials

  • Algorithms in C++ (3rd Edition) by Sedgewick (ISBN 0-201-35088-2)

Grading

Your grade will be based on:

  • Homework and Exercises (50%)
  • Exams and Quizzes (50%)

Course Description

CIS 252 focuses on object-oriented programming techniques to construct several useful data structures (various types of array-based lists, linked lists and tree structures) and to implement various sorting and searching algorithms (linear, binary search and hashing) and efficient ways to traverse a graph. 

Homework

Programming exercises will be done in class and will also be assigned as homework. Student programs will often be reviewed in class. Programs are evaluated according to the following considerations:

  • Does the program work (i.e., does it react in a correct or reasonable way to all input, whether that input is reasonable or not)?
  • How well does the program handle boundary conditions?
  • Was the program written with the tools and within the constraints outlined in the assignment?
  • Does it make use of the methods and design guidelines discussed in class?
  • Was reasonable judgement used in tackling any "gray areas?"
  • Is the source code clear, readable and well-commented?
  • Could someone understand the program without having read the assignment?
  • Is the code efficient and to the point?
  • Is it portable?
  • Is it original?

Exams

Frequent quizzes, two midterm exams and a final project will be given.

Expectations

I can help you succeed in this class, but I can't succeed for you. In this class you're expected to be responsible for your own academic success.

  • That means you are expected to attend class and to arrive on time (2 lates equals 1 absence, 5 absences leads to a drop).
  • If you're going to miss class, you should notify me ahead of time, either by phone or email.
  • You are expected to contribute to class discussions and to ask questions when something is not clear.
  • You are expected to do your homework assignments before the class when they are due and to seek help from me or your classmates if you are having difficulty completing them.
  • You should check WebAccess (http://smccd.mrooms.net/) for assignments, class demonstration programs and exam solutions if you miss class.
  • You are expected to see me during office hours for additional help or to take make-up exams.
Software and Tutorials

You may use any C++ compiler you wish.  Last year many students used the free Dev-C++ compiler offered by Bloodshed Software:   http://www.bloodshed.net/devcpp.html

Instructor's Spring 2008 Class Schedule

My class schedule, below, shows when and where I'm on campus. The best way to contact me if I'm not on campus is via email. I check my email several times a day. I have my email automatically sorted by the first 4 characters in the subject field. For this class, the subject line of the email should begin with C252.

S08Schedule

Tentative Topic Schedule


TuesdayThursday
1/22 - Chapter 1 - Introduction 1/24 - Chapter 1 - Introduction
1/29 - Chapter 2 - Principles of Algorithm Analysis
1/31 - Chapter 2 - Principles of Algorithm Analysis
2/5 - Chapter 3 - Elementary Data Structures 2/7 - Chapter 3 - Elementary Data Structures
2/12 - Chapter 4 - Abstract Data Types 2/14 - Chapter 4 - Abstract Data Types
2/19 - Chapter 5 - Recursion and Trees 2/21 - Chapter 5 - Recursion and Trees
2/26 - Exam on Chapters 1-5 2/28 - Chapter 6 - Elementary Sorting Methods
3/4 - Chapter 6 - Elementary Sorting Methods 3/6 - Chapter 7 - Quicksort
3/11 - Chapter 7 - Quicksort 3/13 - Chapter 8 - Merging and Mergesort
3/18 - Spring Break 3/20 - Spring Break
3/25 - Chapter 8 - Merging and Mergesort 3/27 - Chapter 9 - Priority Queues and Heapsort
4/1 - Chapter 9 - Priority Queues and Heapsort 4/3 - Chapter 10 - Radix Sorting
4/8 - Chapter 10 - Radix Sorting 4/10 - Chapter 11 - Special-Purpose Sorting Methods
4/15 - Chapter 11 - Special-Purpose Sorting Methods 4/17 - Exam on Chapters 6-11
4/22 - Chapter 12 - Symbol Tables and BSTs 4/24 - Chapter 12 - Symbol Tables and BSTs
4/29 - Chapter 13 - Balanced Trees 5/1 - Chapter 13 - Balanced Trees
5/6 - Chapter 14 - Hashing 5/8 - Chapter 14 - Hashing
5/13 - Chapter 15 - Radix Search 5/15 - Chapter 15 - Radix Search
5/20 - Chapter 16 - External Searching
5/22 - Chapter 16 - External Searching
5/27 - 2:10-4:40 Projects