CS 2102, Object-oriented Design Concepts, or its equivalent, is strongly recommended. It is unlikely that you will be able to keep up if you do not already know how to program in Java in an object-oriented style. Please speak with the Professor if you have a background in C but not in Java.
You should also know how to log into and use the CCC Linux computing systems and Microsoft Windows systems. Finally, if you wish to use your own PC or Macintosh desktop or laptop computer, you need to know how to connect to the campus network and to access the CCC Linux systems from it.
CS 2303 has four main components:–
· Lectures, which introduce and discuss the principle components of the C and C++ languages and the some common data structures you will need to know when programming in these languages. These data structures include arrays (including strings in C), lists, trees, and hash tables.
· Programming Assignments, in which students write and debug programs using the language constructs and data structures introduced in class. There will be approximately six programming assignments, typically assigned on Fridays and due at 11:59 PM about one week later. Timely completion of all programming assignments is required to pass this course. If, after a good faith effort to attempt an assignment, it proves too difficult or there are fundamental things you do not understand, then submit an incomplete assignment with your own analysis of your difficulty.
· Laboratory sessions, in which students learn how to use the various systems and tools needed to write and debug programs in C and C++. In this course, you will use the command line tools and makefiles in Linux. You will also use the Eclipse integrated development environment with the C/C++ toolkit.
· Quizzes, which will test your knowledge of the course material on a frequent basis. Normal quizzes will be held weekly, typically on Fridays, starting at 8:00 AM and lasting about 20 minutes. The last two quizzes will be on Tuesday, October 9, during class and on Wednesday, October 10, in the lab.
The following is a rough outline of the course. Dates are approximate and the order of some topics may change depending upon how the class goes.
· Week 0:– Introduction to the course, differences between Java and C; input and output, scanf() and printf()
· Weeks 1–3:–
· Weeks 4-6:–
o Classes and objects in C++; constructors and destructors; Standard Template Library
o Dynamic memory allocation; data structures in C++
o composition; friend functions; this pointer; interfaces
o operator overloading; inheritance; polymorphism;
· Final classroom quiz:– Tuesday, October 9, 2012.
· Laboratory quiz:– Wednesday, October 10, during normally scheduled lab sessions
Required: Brian W. Kernighan and Dennis M. Ritchie, The C Programming Language, 2nd edition, Prentice Hall, 1988. [Every computer scientist should own a copy of this book and keep it for the rest of his/her professional life.]
Required: Walter Savitch, Absolute C++, 4th or 5th edition, Addison-Wesley, 2009.
Useful reference: Bjarne Stroustrup, The C++ Programming Language, Special Edition, Addison-Wesley, 2000; or Bjarne Stroustrup, The C++ Programming Language, 3rd edition, Addison-Wesley, 1997. [The 3rd Edition and Special Edition are nearly identical, except that the Special Edition has corrected numerous minor errors and typos, and it also includes two additional appendices.]
Useful reference: Scott Meyers, Effective C++, 3rd edition, Addison-Wesley, 2005. [For anyone undertaking an MQP or significant project in C++, this book is essential reading.]
The C programming language exposes details of how the underlying hardware stores data and executes software. It is commonly used in situations where there is no support for higher-level languages — e.g., operating systems, device drivers, and embedded systems — and in specialized systems where no higher level languages have been implemented. The C++ programming language extends the C language in major ways to support object-oriented system and application programming while still allowing designers to control interactions with the hardware.
Upon successful completion of this course, the student should
· Be able to implement, test, debug, and document programs in C and C++
· Use Unix commands to manage files and develop programs, including multi-module programs and makefiles
· Understand how functions work in C and C++, how the stack is used to implement function calls, and parameter passing
· Understand low-level input and output routines in C as well as the more advanced input and output facilities of C++
· Program with pointers and arrays, perform pointer arithmetic, and use the preprocessor
· Be able to write programs that perform explicit memory management
· Understand and use the common data structures typically found in C and C++ programs — namely arrays, strings, lists, trees, and hash tables
· Create programs that measure or simulate performance and use them to analyze behavior
· Use an Integrated Development Environment to develop programs, including multi-module programs