|
Syllabus |
This is a third course in C++, picking up where CSC 310 left off. In 215, you learned how to write structured programs in C++. In particular, you know how to write a modular program (i.e., one decomposed into functions), know to use arrays, and know something about file processing. In 310, you learned how to write simple object-oriented programs in C++. You know how to develop and use a simple class (e.g., student record) and a container class (e.g., safe array). You know how to allocate memory dynamically and are familiar with overloading operators. You also have some idea of what it means to analyze the running time and memory usage of an algorithm.
Should you need a review of the Microsoft Visual C++ development environment, please see our on-line guide.
The textbook is the same as the one you used in CSC 310: Data Structures and Other Objects Using C++ (2nd edition) by Michael Main and Walter J. Savitch, published by Addison-Wesley (ISBN 0-201-70297-5). I recommend that you continue to hang on to your CSC 215 textbook as a reference.
As mentioned above, this course continues to teach programming at the point that CSC 310 stops. It is an introduction to the fundamental data structures and their implementations in C++. Topics include stacks, queues, lists, trees, heaps, recursion, algorithm analysis, sorting, inheritance, and abstract classes. CSC 311 is the third and final course in the three-course sequence CSC 215, CSC 310, and CSC 311.
| Course Topic | Reference in Text | Description |
|---|---|---|
| Recursion and iteration | Chapter 9 | This will be a continuation of the discussion of recursive functions begun in CSC 310. |
| Stacks and queues | Chapters 7 and 8 | We will define and implement in several ways the stack and queue abstract data types (ADT). |
Linked Lists |
Chapter 5 | We will define and implement non-contiguous lists as linked lists. |
| Binary Trees | Chapter 10 | We will define the binary tree ADT and see (at least) two ways to implement them. |
| Binary Search Trees | Chapter 10 | Search trees are a common application of the binary tree ADT. |
| Sorting and Searching | Chapters 12 and 13 | |
| Classes and Inheritance | Chapter 14 | We will see how to define a class hierarchy. This will include a discussion of virtual functions. |
If time permits, we will also delve into the topics of B-trees and heaps (chapter 11).
There will be two exams: a midterm and a final, each worth 45% of the grade. The remaining 10% will be made up by programming assignments. Letter grades will be assigned according to the following table.
| Percentage | Grade |
|---|---|
| 92% to 100% | A |
| 89% to <92% | A- |
| 86% to <89% | B+ |
| 82% to <86% | B |
| 79% to <82% | B- |
| 76% to <79% | C+ |
| 73% to <76% | C |
| 70% to <73% | C- |
| 67% to <70% | D+ |
| 60% to <67% | D |
| <60% | F |
My office hours are available on my personal web page. All office hours are held in CS&T Center 747.
I hold office hours specifically so that students have a time when they know I'll be in and available to answer questions. Please make use of my office hours! One of the resources you get when registering for a course is a chance to talk to the instructor one on one. Students often discover that even a brief chat about a program they're having trouble with will often clear up that (and other) problems, allowing them to proceed and complete the assignment.
In fact, you should stop by whenever you have a question. My teaching is not limited to the classroom. I have found that some the best teaching (and learning) happens when a student comes in to see me.
My office hours are posted elsewhere but I want to make it clear that I'm also available outside of those hours. The best way to see me then is to send me e-mail (jrogers@cs.depaul.edu) or call me (312-362-8334) and arrange for a meeting time. You can also try dropping by. If I'm in and not busily engaged in something else, I will be more than happy to see you.
Students may discuss assignments with one another in general terms. For example, you may discuss general strategies for attacking a problem. But you may not work together when writing the solution. I know it may sometimes not be clear what is considered permissible cooperation and what is considered cheating. If you are not certain, please discuss it with me ahead of time.
A corollary is that if you are having trouble getting started on an assignment, please come in and see me or send me e-mail (see my discussion about office hours above). Students often find that even a brief chat will clear up quite a few problems.
Students may not collaborate in any way on exams.
Activities that are clearly cheating include (but are not limited to): copying another person's work on a programming project, homework assignment, or exam; using any reference not authorized by the instructor on a programming project, homework assignment, or exam.
The penalty for cheating is an F in the course. Also, the appropriate dean will be informed in writing of cheating incidents and will be advised that students assigned an F for cheating should not be permitted to receive a W for the course.