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.
You should also know how to log into and use the CCC Linux computing 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 systems from it.
CS 2303 has three 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 to use the language constructs and data structures introduced in class. There will be approximately six programming assignments, typically assigned on Thursdays 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 on Linux and also Visual Studio on Microsoft Windows platforms.
There will also be twp exams:– the final exam will be on March 5. A mid-term exam will be held sometime during the week of February 8.
The following is a rough outline of the course. Dates 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()
· Week 1:– Functions in C, recursive functions; role of the stack during execution.
· Week 2:– Pointers, arrays, and strings; dynamic memory allocation, malloc() and free()
· Week 3:– structs and unions; linked lists, trees, and hash tables.
· Week 4:– Mid-term exam; introduction to C++, classes and objects in C++
· Week 5:– constructors and destructors; dynamic memory allocation; data structures in C++
· Week 6:– composition; friend functions; this pointer; interfaces
· Week 7:– operator overloading; inheritance; polymorphism; Final Exam, Friday, March 5, 2010.
Required: C: How to Program, by Deitel and Deitel, 5th edition, Pearson Prentice Hall, 2007
Alternate: C: How to Program, by Deitel and Deitel, 6th edition, Pearson Prentice Hall, 2010
Strongly Recommended: 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.]
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.
Upon successful completion of this course, the student should
· Be able to implement, test, debug, and document programs in C and C++
· Understand low-level input and output routines
· Program with pointers and arrays, perform pointer arithmetic, and use the preprocessor
· Be able to write programs that perform manual memory management
· Understand how to write and use functions, how the stack is used to implement function calls, and parameter passing options
· Understand and use the common data structures typically found in C programs — namely arrays, strings, lists, trees, and hash tables
· Create programs that measure or simulate performance and use them to analyze behavior
· Use Unix commands to manage files and develop programs, including multi-module programs and makefiles
· Use Visual Studio to develop programs, including multi-module programs