Syllabus and Course Outline

CS-2303 Course Web Page

Index

Prerequisites

Overview

Course Outline

Textbooks

Goals and Outcomes

 


Prerequisites

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.

top

 


Overview

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.

top


Course Outline

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.

top


Textbooks

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.]

top


Goals and Outcomes

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

 

Mapping of course outcomes to CS Department Outcomes

top